How I became a Backend Software Engineer
November 16, 2022 • ☕️ 3 min read
Translated into: Português do Brasil
Where I started
One year ago, I successfully transitioned to work as a backend software engineer and here are some thoughts in case you are trying to achieve the same.
In case you don’t know me yet, I initially worked in sales for 12 years, and back in 2017, I transitioned to Software Development and started my carer as a frontend developer. You can see this article if you want to know more about how I did that.
I worked in great companies as a frontend developer, including ao.com, the BBC (Iplayer) and Maystreet (US data company). I specialised myself in React, Node and Typescript, and I had a lot of fun working with React for all these years.
Back in 2020, I had the opportunity to join a backend squad at the BBC for a little over seven months, and they were responsible for the iPlayer main API, which introduced me to a few new concepts such as microservices and distributed systems using Node/Typescript. I learned a lot about AWS (Amazon Web Service) and how to maintain a rest service and graphQL APIs.
After that, I managed to switch jobs and become a cloud engineer, there I was responsible for assisting a frontend team in deploying their services to production by setting up the AWS network, containers, pipelines, deployment, terraform and everything in between. I had a bunch of fun but lasted only eight months in the role as I got an excellent opportunity to join a more prominent company.
I moved then to the company where I currently work. I was so excited about joining that I accepted an interview for a full stack role which made sense at the time as I knew a lot about React and Node but also wanted to work with the backend and keep learning more about it. Nine months in, I had an excellent opportunity to rotate squads, so I joined a full backend squad (JAVA) and have been working full-time as a backend engineer ever since. I made the transition back then and have never looked back since, and I’m delighted working with the microservices and with Java 17. But the truth must be told: I had to learn many new things.
Here are a few things I learned since I moved to the backend:
Distributed systems are way more complex than it sounds. It gets more complicated as you continue scaling it. You have to understand many concepts about how these systems interact with each other and learn new technologies too. The Java ecosystem was much bigger than I had anticipated; even though I didn’t have issues learning Java, I was overwhelmed because, coming from a JS background, I knew all libraries and how to use them and that was no longer the case in Java land. You have to learn a bunch again, from testing frameworks to learning about Java runtime, memory allocation and much more. Here at Skyscanner, one of our values is: we build it, we run it. That means that we not only write the code, but we are also responsible for deploying and monitoring our services, which is an excellent concept. I had to learn many new tools such as Grafana, New Relic, Bosun for alarms, blue green deployment strategy, Protocol Buffers and many more.
I also learned that we should do Composition over Inheritance as it is a more intelligent choice and learned that SOLID principles help a lot along the way.
In case you are looking to do the same, I would advise you to brush up on your algorithm and data structure knowledge before jumping on it. The reason is clear when you have such a big scale and millions of customer, every single code you write matters, so we must understand how the code we write performs. Composition also helps you structuring your code in a better way. Remember to be patient and have achievable goals to track your progress along the way.
A few valuable resources are Leetcode for algorithm and data structure and check more about Big O notation.
Here are some interesting readings:
- Clean Code by Bob Martin
- Design Patterns by Freeman and Robson
- Refactoring to Patterns by Joshua Kerievsky
What’s next for me?
I still enjoy writing code and want to keep doing it, but in the future, I see myself working towards becoming an Engineering Manager as I enjoy combining tech and soft skills.
I hope you liked this small article =)
You can also see the video I have created talking about how to learn to code