From Junior to Staff Engineer at FAANG in 5 Years: My Journey

9 min read Original article ↗

This is the post I wish I had read back in August 2018, when I graduated college and started my career in FAANG. I’m not really here to hand out advice, just to share my journey and how I navigated the big tech landscape. Hopefully, it’ll be useful to a few of you out there.

Part 1: Junior Engineer (August 2018)

I remember my first few weeks realizing I wasn’t considered a “real" engineer. The previous person in my role dumped a monster amount of un-triaged tickets on me and peaced out onto more exciting work. This didn’t sit well with me.

So I did something a bit risky (and you’ll see this theme pop up again later). I did the bare minimum possible with respect to that work. Instead, I dove into the codebase and started fixing bugs in production.

I remember there was one in particular that a few people tried to fix. It was a classic: hard-to-reproduce, buried deep in a legacy system. I ended up digging around a ton and learned a lot about how everything worked. A few days later, I had the lightbulb moment and figured out the exact root cause for the bug.

In addition to that, I was going around refactoring a bunch of un-tested code and making unit tests for them. Learning a ton about how the system worked in the meantime. My colleagues noticed this and were impressed. Indeed, this is a pretty solid way to make contributions to the code base. No one really wants to do this work, but it’s important. A great opportunity to show that you can take initiative and that you care.

My manager caught wind pretty quick, but he was great and understood where I was coming from. He was very supportive and noticed a had a strong knack for working on these large systems which is a rare skill.

Six months later, during a mid-cycle review, I was promoted to mid-level engineer. My title changed officially to Software Engineer, and I was staffed on the team’s most important new project working alongside our senior rockstar engineer.

Part 2: Mid-Level Engineer (March 2019)

Working alongside the Senior Engineer accelerated my growth more than any other period. It was the most formative year for me in terms of developing raw skills in system architecture and writing clean, concise, production-quality code. Together, we shipped our project on time and with a high standard of quality.

I owned about 20% of the user stories for it. And I took a lot of pride in that work. My colleague left me a great end of year peer review and I ended my first year at Apple on a high note scoring a very strong end of year review for a novel Mid Level one year out of college.

Shortly after this my manager at the time, who was pivotal in that early growth of mine, decided to leave the company. The replacement was new to the company via acquisition and based outside of HQ. On top of that, he immediately went on paternity leave. Our director then decided to re-allocate all the engineers on my team as well as all PM and QE resources to another project. Leaving me all alone on this year’s tasks. It was basically written off as “not happening” and I guess they were ok with me not doing anything for a while.

Funny enough, I just kinda did the work completely unchaperoned. For 3 months I cranked everything out, wrote all the unit tests, did the QE passes manually. And I was merging code and getting reviews from the Senior Engineer mentioned earlier. When it came to shipping time, I pinged my old QE DRI and asked him to run the tests. They all passed, and the feature shipped. When my manager came back, he was flabbergasted that a 1 YOE person was able to crank this whole thing out and made it through the QE passes. My reward was a small mid-year bump, nothing major.

Looking back, this was a mistake on my end. I didn’t realize how good I made my manager look. I should have pushed for promotion to Senior Engineer. Although it was very early, and it would have most likely been rejected, it would have a been a phenomenal way to broadcast my abilities the org. This part is advice, work with your manager early for promotions. If requested, I can make another post that goes into this more.

At this end of year review, I did well, but no promotion. Yet again, I had a manager change that was out of my control. The team also had a new project it needed to get done. A big one. Before, I was working directly on user facing features. This project was platform and a brand new one. I was given the choice to keep working on the the types of projects I was used to, or dive into the unknown on this new platform.

The choice was easy, platform it was.

That was probably the most pivotal moment of my career. Little did I know at the time, the need for the platform came from pretty high up and was treated as such. We had no trouble getting other teams adopted as it was there directive all along.

Coming in, I was a mid-level engineer who wrote solid code. Now that I had to build a platform and guide 100s of engineers through adoption. I quickly became a Cross-Functional expert and learned to work well with other teams. The platform shipped and everyone adopted on time. This made it easy for my manager to put me up for promotion, and I got it.

Part 3 Senior Engineer (October 2021)

at 3 YOE, I was able to get the Senior Engineer title. The challenge the previous year was to get my org to adopt the platform. This years challenge, was to get the other orgs to adopt. Ones under different SVPs. A notoriously difficult task.

Going from Senior to Staff is extremely difficult. The path to Senior is pretty cookie cutter and streamlined. Write good code, mentor other people, work well with team and adjacent teams boom done. Sign off from skip level manager would usually do the trick. In fact, the vast majority of people do not get passed Senior Engineer.

For Staff, not the case. You need a Director or above to sign off on your work and vouch for your contributions. This is usually where you get hit with things like “no business need for another staff engineer, no budget etc…”. Internally promoting a Staff Engineer is just really tough.

But getting your orgs platform adopted by the rest of the company, that is huge. And is enough to get the conversation going. I took on the challenge, and was able to get it done. This was one where my skip level sent out some more senior people first to try it. It didn’t work out. I was basically a last resort due to how low my YOE was. But I was able to get it done.

This got me to start the conversation to go to Staff. But yet again, more manager changes. A giant re-org happened and I had a temporary manager at the time. Not a good situation. I had to drive everything, the promotion package, the conversations getting the sign offs from the other Senior Managers and Directors etc….

Closer to performance review time, I did get a new permanent manager. It took some convincing and for them to see that could trust me. But they did put through the promotion package. It was rejected, but had feedback and a path forward to get it done in the next cycle.

Around this time, ChatGPT was becoming mainstream and every company started their AI initiatives. Of course, this is a huge opportunity. And my manager immediately got me on as core contributor (this is where having a great manager with clout helps).

I put my head down and got to work. Drove cross functional projects and delegated a lot of work as acted mainly as an architect/team lead. In the next mid-year cycle, I got the promotion to Staff Engineer.

Part 4: Staff Engineer (March 2024)

This was the goal for me and it felt great! I felt I had been operating at this role for a while.

Going into the dynamics of the Staff Engineer could be an entire post. Everyone does it differently. Indeed, there are archetypes here.

For me, I became less of a builder, more of Cross-Functional leader and figured out where my organization could help the rest of the company. This involved being a stakeholder in several projects all at once. And delegating as much as possible. Only owning the parts that required my expertise.

Although it was a great role, you are more at the mercy of larger politics at this phase. Indeed, it started becoming an issue. I realized the journey to Principle Engineer was daunting. A little more than a year into having the Staff title, I decided to leave and follow my heart.

What’s next? Doing what I’ve been doing. Finding problems, solving them. Just at a larger scale.

Conclusion

So that’s the journey (the short version): countless projects, even more manager changes, and a ton of memories. From Junior to Staff in five and a half years. It’s been a great ride, and I’ve learned so much along the way.

An astute reader might notice that “technical chops” stopped being the focus around Part 2 or 3. From there on, it was all about navigating the company and solving the right problems. That’s where most people tend to get stuck and where the real growth happens.

If you’ve made it this far, chances are you’re a pretty ambitious person, and that’s the first step!

I’d be happy to dive deeper into each level if enough people are interested.

Best of luck, and keep building.

Discussion about this post

Ready for more?