Journey from Frontend to Backend and Cloud Engineer: A Career Story

Journey from Frontend to Backend and Cloud Engineer: A Career Story

Zakiego

Zakiego

@zakiego

Read in Bahasa Indonesia 🇮🇩

Note

This writing is a personal reflection on my career journey, containing experiences and learnings, without deep technical discussions.

Starting Point

It has become commonplace for most beginner programmers to start their journey as a Frontend Engineer.

This is because building the front-facing interface of a website is the most visible work with immediately tangible benefits. As beginners, we naturally want to reap what we sow as quickly as possible.

From personal experience, my journey began with learning HTML and CSS, then progressed to JavaScript, jumped to Next.js, and then stepped back to learn React properly (a more detailed story can be read in this article: 2021 Flashback)

Starting to Cook in the Back

Honestly, I'm not a pure Frontend Engineer. From the beginning, I've been more inclined towards being a Full-Stack Engineer. This is because when creating frontend applications using Next.js, I eventually became familiar with the API concept, which is one of Next.js's features. However, since Next.js isn't a specialized backend framework, I felt less confident claiming to be a Backend Engineer.

As time passed, at my current workplace, I was very fortunate to have ample space to learn and grow.

There came a time when I was assigned to join a sub-team to migrate a backend service from Express.js to Nest.js.

Regarding Express.js, I wasn't completely unfamiliar - I had used it before, but not extensively. But what about Nest.js? I had never used this framework at all. Like it or not, before working on the core task, I first had to learn Nest.js.

During the first week, my head would throb every night. This was an opinionated framework—like it had its own world, different from other frameworks. Understanding it wasn't easy.

Provider, inject, guard, DTO—what did these terms and concepts mean?

Despite feeling very uncomfortable, confused, and finding it difficult to understand, I forced myself to learn it. Because of a belief that it was all just a matter of whether you want to learn or not. Subsequently, I continued to push myself to read documentation, read code, back and forth until finally, I slowly began to understand.

A week passed, and I started getting used to class-based writing style (honestly, I had never written classes in JavaScript before—everything was functional-based). Once I began understanding Nest.js, bit by bit, the migration work started to progress. Until finally, it was completed, and the PR was successfully merged into the main branch.

Playing with Clouds

Although never asked by anyone, I had previously learned GitHub Actions just out of curiosity. From there, I always tried to implement CI/CD as best as possible, even if it was just for personal projects.

This past "boredom" later bore sweet fruit. Coincidentally, when I first joined my current team, it was a completely new team. So we started from scratch. There were no established rules for how the coding process would work.

Everything was determined by the first generation.

Due to this void, I began taking the initiative to implement CI/CD. From what initially was just for the build process, I was then assigned to handle deployment to the cloud.

There was another stroke of luck - previously, I had also learned Docker though no one had asked me to. All just out of curiosity. This Docker capability was important for deploying applications to servers.

Honestly, I didn't have deep experience managing production apps in the cloud, like AWS, Google Cloud Platform, or Digital Ocean. However, with the foundation of CI/CD setup and Docker skills, it was just a small step further - only needing to learn about the cloud provider being used. Gradually, I became familiar with the cloud world.

I could hardly believe that in just about three months, I went from never touching paid cloud services to understanding GCP products like Compute Engine, Cloud Storage, Cloud Run, and others—albeit still at a basic level.

The End Result

Looking back at the past story and examining the present, I now more often get responsibilities managing backend and cloud. Although occasionally I'm also assigned to help with frontend.

With the ability to handle work end-to-end, the types of tasks I can work on have become more diverse. The lead can entrust any task considered important and crucial.

If time permits, perhaps I'll share how my current tasks more often involve fixing errors that have no documentation.

Takeaways

  • Having a supportive lead and ecosystem is an invaluable privilege. Being given permission and trust to handle new tasks—even without prior experience—is a precious opportunity.
  • Expanding skill horizons in the early career stages is crucial, from frontend, backend, mobile, cloud, devops, data, ui/ux, etc. With this broad skill set, it increases the possibility of securing employment.
  • It's very good to be a generalist in the early learning stages, then deepen one field and become a specialist when working.
  • Consistency in learning and exploration beyond job requirements can open unexpected opportunities in the future

Written on October 18, 2024, 00:13, Banjarmasin

Finalized on January 5, 2025, 02:26, Pelaihari