Mastering the Stack: An Engineer’s Shift from Front-End to Full

Ivo Iliev
Vodafone UK Engineering
6 min readJul 19, 2023

Ever thought about how a caterpillar becomes a butterfly? That’s a bit of how I felt moving from a front-end engineer to a full-stack developer. I’ve been at Vodafone for nearly two years. In the early days, my focus was heavily on the front end. I worked in one of the teams responsible for customer accounts. It’s the side of the business that makes a huge impact on shaping customer experiences. I’ve always taken pride in the work I and the rest of the team have been doing.

When I joined the team, the project was neat and shiny, and we did a really good job keeping it sparkling. We spend a lot of time refining, developing and then reviewing our code to make sure every new piece of code is consistent with the rest of the code base. I had the privilege of working with cutting-edge tools including ReactJS, MobX, NX, Cypress and many more. A significant part of the work involved integrating existing components from Vodafone’s global component framework with data provided by the back-end team, which required a lot of collaboration between teams. This served as a remarkable chance for me to communicate with lots of different people and gain immense insights from them. Within the team, I concentrated on polishing my front-end knowledge, while my training time was dedicated to broadening my skill set in other areas. I was enjoying what I do on a daily basis.

I chose to venture into the realm of AWS as part of my learning journey. Cloud computing has become increasingly popular in recent years, and a good understanding of it is crucial. At Vodafone, we are provided with a number of different resources which became instrumental in levelling up this skill. Over the span of 3 months, I went through numerous online video courses on the subject. In order to practice what I learned, I build small side projects and play AWS Cloud Quest. Additionally, Vodafone facilitated a live online workshop led by a tutor from AWS, who provided an in-depth walkthrough of the most frequently used services, greatly solidifying my understanding. Motivated by this intensive training, took to the initiative to take the cloud practitioner certification exam and thankfully passed.

Then I was seeking the next challenge. The NodeJS world felt like a natural progression. Leveraging my JS experience and newfound knowledge of cloud computing, I found the exploration of back-end development increasingly captivating. Over the following six months, I spent my training time in NodeJS video courses, tried a number of SQL and NoSQL databases, built projects and experimented with an array of concepts.

Eventually, I wanted to utilise these new skills in my day-to-day job. However, given the project scope, this wasn’t something that was possible with my current team due to the nature of the project. We were focused heavily on the front-end, our infrastructure was already in place and we didn’t have any need to do anything in AWS ourselves.

My experience at Vodafone has been incredibly positive, both in terms of the company culture and the exceptional individuals I’ve had the pleasure to work with. From my perspective, the only way I could stay and develop these newly gained skills was to ask my manager if there was an open seat in one of the other teams that use these technologies. Given the numerous teams within Vodafone UK (at least 26, if not more), I was optimistic about finding one that would align with my skill set. Barely a month after expressing my interest, my manager informed me that the chapter leads were arranging a transition to one of my preferred teams.

Fast-forward a month and here I was, in the shoes of a full-stack developer working on a project with a serverless architecture. Some of the techs I now got to work with are Lambdas, S3, API Gateway, SQS, Route 53 from the AWS side, Contentful as a headless CMS, NodeJS, ReactJS, among various other tools instrumental in managing a monorepo.

In addition to the new tech that I was so excited to play with, I was heartily welcomed by my new teammates. This well-coordinated team was composed of highly skilled developers. It was evident to me that there would be a lot I could learn from being around those guys. Pair programming, a common practice here, served as reassurance that I had a guide even when navigating the most intricate or uncharted territories of our codebase.

Starting in a new team, and tackling a new project on a different side of the business always comes with its challenges. It was a project with quite a complex codebase that had been worked on for years. The demands were different, the end user was different and it all felt so different…however, the familiarity of being in the same company, surrounded by people I already knew, provided a sense of comfort. This instilled in me a sense of belonging and confidence that I could make a significant contribution from the start.

In an effort to quickly acclimate, I reached out to every member of the team for introductions and insights. This helped me get not only professional connections but also personal ones. Each person possessed a unique mastery of different areas of the codebase, which proved extremely beneficial as I was looking to construct a comprehensive understanding by putting together their various insights. Each team member shared resources such as documentation and video recordings that guided my learning. This helped me comprehend the reasons behind specific architectural decisions and the choice of certain tools over others.

Participating in refinement sessions was also tremendously helpful. I consistently asked probing questions about the execution of particular tasks, ensuring I understood the existing functionality and the potential impact of our undertakings. I managed to pinpoint areas where I could make a meaningful contribution and leveraged my training time to dig deeper into the codebase. This comprehensive approach accelerated my onboarding and endowed me with the confidence to propose solutions to the challenges we faced.

In conclusion, I’d like to encourage everyone to embrace transparency about their desired career progression, to continually fuel their learning journey, and to bravely venture beyond their comfort zones. It is never easy to step away from something you are familiar with and walk towards the unknown, but upon reflection, you’ll often find that the venture was worthwhile. Three months ago I was questioning my decision. It was hard for me to leave a team I deeply enjoyed working with and the project I took so much pride in, but now, I see clearly that personal growth often necessitates making tough choices, and I am reassured that I made the right one.

I hope my story has inspired you to pursue your aspirations. What is the next step you’d like to take? A career change? A side project or perhaps advancing further in your existing role? Feel free to share your thoughts in the comments!

As I always like to say — Happy coding!

Want to know more?

If this article has inspired you, and you want to know more please reach out to us on our various social media channels.

If you want to work with us, find us on LinkedIn and drop us a message, we would love to hear from you! ✉️

--

--