Today’s newsletter features a special guest, Ryan Peterman, who was promoted from Junior to Staff Engineer at Meta in just 3 years.
In this article, Ryan will share his insights on how to fast track your career growth and get promoted faster.
Once you land that first software engineering job, the next big question becomes: how do you get promoted? Many engineers fall into the day-to-day routine of writing code without a clear idea of how to grow their careers.
This happened to me. At my first job at Amazon, I landed code without knowing what I could do to grow my skills. I left that job within eight months because I felt I wasn’t growing as an engineer. Three years later, I made it to Staff Software Engineer at Instagram after tons of mentorship. Early on, I learned that being good at coding wasn’t enough to get promoted; you have to think strategically about your career and often need to develop new behaviors to move up.
In this article, I’ll share everything that helped me fast-track my way up the ladder, from developing the right mindset to making key moves that many overlook. Even if rapid growth isn’t your goal, this guide has learnings for all tech career paths.
In this guide:
Software Engineering Levels
An Algorithm for Promotion
Junior (IC3) → Mid-level (IC4)
Mid-level (IC4) → Senior (IC5)
Senior (IC5) → Staff (IC6)
Luck & Parting Words
Software Engineering Levels
Note: “IC” = “Individual Contributor”
In software engineering, companies measure career progression by levels that measure both behaviors and impact within the company. While the exact titles and structure can vary between companies, most tech companies follow a similar system:
Junior Engineer (IC3) - Early in your career, working on smaller, well-defined tasks with guidance from more experienced engineers.
Mid-level Engineer (IC4) - More autonomous, handling moderately complex projects, and beginning to take initiative in improving the codebase and what they build.
Senior Engineer (IC5) - Leading larger projects with team-level influence. You’ll mentor and guide the team while having a broad impact on the codebase.
Staff Engineer (IC6): Focusing on cross-team collaboration and solving org-wide challenges. Staff engineers are strategic thinkers who influence the technical direction of their organization.
Senior Staff Engineer and Beyond (IC7+): Senior staff engineers and up operate with top technical expertise, driving large-scale initiatives that have a broad impact on the company. Senior staff engineers mentor staff engineers and work closely with executive leadership to meet business objectives.
Your impact and compensation increase as you progress, which is a lot more satisfying in my experience. Not to mention that the skills that get you promoted also let you control what you and the company work on.
Also, many companies consider only senior engineers (IC5) and higher to be “terminal levels.” You must eventually get promoted to IC5, or you’ll be managed out. Most engineers are promoted in time, so it’s not meant to scare you but to encourage you to grow.
An Algorithm For Promotion
There’s a common set of steps across all promotions that will get you to Staff:
1) Exceed expectations at your current level - Your manager will be hesitant to find you opportunities at the next level if they have concerns about your performance at the current level. Also, when your manager puts together a promotion packet, it’ll contain a history of your past ratings. The promotion committee will have concerns about your packet if you have a history of only meeting expectations for your level. Work with your manager to understand the expectations for your level and how to exceed them.
2) Be direct with your manager about promotion - Once you know you’re exceeding expectations for your level, ask your manager what next-level performance looks like. Your manager plays a huge role in your promotion. They build your case and advocate for it, so they have a lot of influence on this process. Also, the lower the level, the more control your manager has. IC3 -> IC4 promotions are straightforward, so your manager’s perspective is usually what happens. For IC5 -> IC6, there is a lot more ambiguity, so your manager serves more as a middleman between you and the promotion committee. Your manager still plays a significant role in writing your packet and delivering feedback.
3) Find next-level scope - If you only work on projects that fit your level’s behaviors, you won’t get any closer to promotion, no matter how good your work is. One simple pattern for finding next-level scope is brainstorming projects with engineers who are 1-2 levels higher than you are. Often, they will have a lot of projects sitting in their backlog that are big enough to help you get promoted. If you take on one of their projects, they’ll often help mentor you, review your designs and code, and give you strong peer feedback for your future promotion packet. I wrote more on this here. Make sure to confirm with your manager that they agree that what you’re working on fits the behaviors of the next level.
4) Maintain next-level behaviors and impact - The duration you need to perform at the next level varies depending on your level and your company. At minimum though, you need to maintain that performance for 6-12 months. This is because promotions are “lagging” in tech. You must prove that you’re already operating at the next level before getting promoted. This reduces the risk of failing to meet expectations at the new level.
Getting promoted faster is a matter of doing steps (1), (2) and (3) as fast as possible. The best you can do is immediately start exceeding expectations in your first half and working with your manager on the next level.
Almost every team has scope for more Senior Engineers (IC5). You can get promoted up to that level if you have the skills and behaviors. Past that, situation and business scope play a much larger role. Many teams don’t need someone who has Staff-level leadership and technical skills. If you find yourself stuck at any point due to your situation, you’ll likely have to switch teams to continue growing your career.
Now that you have the algorithm that applies at any of these levels let’s get into the level-specific strategies. I’ll share what got me promoted and what I would change if I did it again.
Junior (IC3) → Mid-level (IC4)
The main difference between these levels is in the size of the scope that you can handle independently. Here’s a rule of thumb:
IC3 - Can handle individual tasks (<2 weeks of work) with minimal guidance
IC4 - Can handle medium-to-large features (<2 months of work) with minimal guidance
“Minimal guidance” doesn’t mean that you can’t ask for help—it simply means that you can unblock yourself and make consistent progress. Asking good questions is one of the most effective ways to unblock yourself.
You should drive full features and do the project management for them. You should break your project into tasks, set reasonable timelines, and keep stakeholders updated.
You will not be expected to come up with the projects yet at this level—Senior Engineers will often outline them. However, at the IC4 level, you’re expected to take more initiative:
Improving the codebase - Initiate refactoring and code cleanups, and give thoughtful code reviews. Leave the code in a better state than you found it.
Contributing to production excellence - Participate in the team’s oncall, and help debug production breakages.
Own the health of what you build - Add test coverage, logging, and build dashboards to monitor correctness.
Optimize your dev velocity to grow faster at this level. Shipping code faster creates a shorter feedback loop, accelerating your learning process. This core skill will help you ship IC4-scope projects and improve as an engineer.
Here’s an example of several promotion timelines for what you can expect:
Promotion in 6 months (exceptional) - Rare since this means meeting IC4 expectations while onboarding. This is easier for high-performing return interns since they skip onboarding and may have some past track record already.
Promotion in 12 months (great) - I’d shoot for this timeline. It’s challenging yet reasonable since it gives you six months to onboard and then start meeting IC4 expectations.
Here’s my promotion timeline as an example:
H1 (L3 Exceeds Expectations) - First, I took on any task that came my way. These were nice-to-have features that others didn’t have time for. I completed them quickly and started on a larger pipeline rewrite (L4 scope) that my tech lead offered me. Outside of my main project work, I made many contributions to removing dead code and speeding up existing code because I enjoyed it.
I started to hit L4 expectations in the last few months of the half. But, since I didn’t have six months track record, I didn’t meet the promotion criteria.
H2 (L3→L4 Promotion, Greatly Exceeds Expectations) - I continued driving my L4-scope project independently with high engineering quality. I came up with the idea to build a test harness to validate this rewrite that was “comparable to L5 quality” execution. I continued my passion for improving the codebase and led the company in adding static type annotations that MonkeyType couldn’t.
At this point, I had delivered on L4 scope for over six months, so the promotion made sense.
What I Would Have Changed:
Looking back, I would have discussed what IC4 growth looked like with my manager. I wasted our one-on-one time on project updates instead of career growth. This led to two problems:
Spent time on work that wasn’t impactful - I took on any work that was passed my way, even though not all of it was impactful. I probably could’ve gotten more out of my time.
Didn’t have accurate expectations - I had another engineer tell me my work was IC4 level and that I should get promoted in my first half. I knew nothing then, so I took their word for it. I was surprised when I didn’t get promoted, which could have been avoided if I had been in sync with my manager.
Although I could have been more calculated, writing as much code as I did opened doors. My tech lead trusted me with an IC4 project because I showed I could handle it. Similarly, some of the engineering craft work I did for my own personal pleasure ended up being part of what got me promoted too. The more work you do, the luckier you get.
Mid-level (IC4) → Senior (IC5)
The IC4 to IC5 gap is larger than the IC3 to IC4 one. This is because IC5 promotion requires significant behavior changes. Raw code output is no longer the top priority. You need to lead and have a larger influence within your team too. Here are a few examples of those differences:
Example 1 - Improving the codebase
IC4 - Initiates refactoring and code cleanups.
IC5 - Identifies areas of improvement, influences the team to take goals on improving it together, then leads the charge on those goals.
Example 2 - Production excellence
IC4 - Participates in team’s oncall and mitigating outages.
IC5 - Creates an “oncall improvement” workstream and builds a process for everyone to improve the team’s oncall.
Example 3 - Project direction
IC4 - Owns the project management of a medium-to-large feature.
IC5 - Drives team planning and builds a roadmap of several medium-to-large features.
I wouldn’t say the IC5 examples are harder, but they require a mindset shift to own things at the team level.
Also, you’ll need to work on projects of sufficient scope for an IC5. There are a few ways that tech companies measure scope. Here’s a comparison of the criteria for IC4 and IC5 levels:
These criteria aren’t a checklist. Your work can be IC5 scope by meeting only some of these criteria.
IC5 is also the first time engineers begin to focus on growing others. At this level, you should mentor others and build up the team’s culture, which includes driving meetings, knowledge sharing, recruiting activities, and organizing team activities. Starting mentorship relationships early is a good idea since you can’t rush mentorship.
If you can learn the above behaviors quickly, you can expect promotion on these timelines:
Promotion in 6 months (exceptional) - This is rare since you need to exert team-level influence as soon as you join the team. I could see this happening for someone who was under-leveled and just got promoted to IC4.
Promotion in 12 months (great) - If you’re ambitious, I’d aim for this goal. It is possible to do this if you find IC5 scope in your first half. If not, one more half should secure your promotion.
Here’s my promotion timeline as an example:
H1 (IC4 Exceeds Expectations) - This half I wrapped up the workstream that got me promoted to IC4 and picked up another IC4 project. I spent a ton of time on engineering craft this half because I enjoyed it. I deprecated a few legacy systems that no one else would because they were dangerous and not that impactful. I didn’t exhibit any IC5 behaviors this half.
H2 (IC4 No Rating) - My manager handed me an IC5 workstream (~6 eng) to cut video messaging latency in half, which I led successfully. I also began a side project, which became a multiple-half collaboration with another team. Lastly, I took on an intern who did a phenomenal job helping me execute these two roadmaps I led. Although I started exhibiting IC5 behaviors, the company canceled performance reviews this half because of the pandemic.
H3 (IC4 → IC5 Promotion, Greatly Exceeds Expectations) - My impact this half could’ve met expectations at the IC6 level. I doubled down on the cross-org scope I created in H2 and developed a multi-half roadmap. I influenced and led another team to invest several engineers to revamp the IG video ads pipeline with great results. I built out a second workstream and mentored another engineer to deliver it. This half, I had massive impact, team-level influence, and mentorship, which is what got me promoted.
What I Learned:
The Skill of Tech Leading - If you grew from L3 → L4 right, you should be exceptional at landing code. The L5 behavior of team-level influence is just helping others do the same. In my first half of leading an initiative, I remember feeling unsure about it since I only had two years of experience. Leaning on my strong execution skills helped me become comfortable leading others.
Working Hard Led To More Opportunities - I worked a lot and had a ton of workstreams in flight at the same time. This approach increased my chances of having one that had a ton of impact. At the time, I didn’t know it and was just throwing myself at any problems that came my way. Looking back, it was a great way to derisk my promotion.
Focus On Impact - In my first half as an L4, I took on projects that were time-intensive and not impactful. I did these migrations because I loved cleaning up tech debt. I would’ve had more impact if I had influenced someone else to do them while I found IC5 scope instead.
Senior (IC5) → Staff (IC6)
Staff Engineers (IC6) are at the same level as engineering managers. They solve problems that few others can and play a critical role in setting team direction. They lead major initiatives and influence the engineering culture of teams around them.
Some say that promotion from IC5 → IC6 is harder than IC6 → IC7 due to the significant behavior changes needed. There are a few major differences between IC5 and IC6.
1) Influence Across Teams - Staff Engineer’s projects often extend beyond their team. They take on larger problems by influencing other teams without authority.
Once IC6s establish these workstreams, they tackle the hardest problems and work through others. They focus on outcomes and don’t always do the work themselves. Working through delegation and influence across teams is the biggest mindset shift from IC5 → IC6.
This style of working isn’t limited to their main project impact. IC6s should also use their influence to inspire a culture of higher engineering quality and reliability across teams.
2) Creating Scope - Senior Engineers (IC5) build roadmaps of several medium-to-large features that help achieve their team’s goals. In this case, the problem and its business impact are clear; we just need an engineer to create a plan to solve it.
Staff Engineers (L6) handle more ambiguity. They don’t just solve known problems; they create scope by finding impactful opportunities and problems. Managers work with their L6s to expand the scope of the team.
3) IC6 Scope - Big tech companies determine what level projects are in a few ways. Here’s a comparison of the criteria for L5 and L6 levels:
Project complexity also distinguishes IC6 scope. Problems that IC5s can’t solve are considered IC6 scope. This is why specialists often have IC6+ scope; others often can’t do their projects.
These criteria aren’t a checklist. Work can be IC6 scope by meeting only some of these. Your manager will use these criteria to argue that your work is IC6 scope. This is one of the reasons why it’s important to align with your manager on your work’s scope.
4) People Development - Staff engineers uplift others around them. They should have the ability to help IC5 engineers grow. There are a few ways they uplift others:
Mentorship - Dedicated mentorship, preferably with senior engineers
Knowledge sharing - Writing wikis, giving presentations, contributing to Q&A groups
Collaborations - Growing others while working with them (e.g. code reviews, design reviews, discussions)
IC6 engineers should also contribute to growing the organization. This means that they help with recruiting and partner with their manager to improve team health.
Getting to the Staff Engineering level can take a long time. Since IC5 is considered “terminal,” there is no external pressure to achieve IC6 fast. However, if you are eager to grow as fast as possible, here’s how fas you can expect promotion:
Promotion in 1 half (Ridiculous) - You’d need to start influencing outside your team as soon as you join. Even then, it’s unlikely you’d get promoted this fast unless you create something company-changing.
Promotion in 2 halves (Exceptional) - Finding IC6 opportunities on your team is not always possible this fast. It’s a combination of situation and skill to get promoted in two halves, even if you execute well.
Promotion in 3 halves (Great) - If you’re ambitious I’d aim for this goal. It gives you a year to find IC6 scope, which is a reasonable amount of time to pivot if needed. Also, your track record of successes in the first year will help build the narrative for promotion.
My Growth Path
H1 (IC5 Exceeds Expectations) - I led two workstreams that were partnerships with other teams to hit our goals. I also landed a large win in an unplanned ads workstream, which is what brought my rating above expectations. I was also one of the top contributors to code review and interviewing in my 70-person eng org. The hidden success here was that I bootstrapped a new workstream towards the end of the half that was certainly IC6 scope.
H2 (IC5 → IC6 Promotion, Greatly Exceeds Expectations) - The IC6 workstream I created turned out to be a massive opportunity. This work was a huge success, resulting in a company-wide award and public recognition from Mark Zuckerberg. I also created a cross-org collaboration between 3 large orgs (70+ eng each), which received positive feedback from each director. Lastly, I ran infrastructure preparations for my org resulting in no major incidents during the most critical time of the year. The repeated influence and impact of these large initiatives is what got me promoted to IC6.
What I Learned
The Value of Momentum - My past context and relationships at Instagram helped me move a lot faster. I could lead several workstreams at once because I knew so much about the codebase. Also, it was easier to get work done in collaboration because I knew partner engineers from past work. Staying at one company for a longer time does have its benefits.
How to Create Scope - When I was an IC4, I stumbled upon some IC6 scope without realizing it. I had strong initiative so I started solving problems without thinking through why it was impactful. I got lucky that the work had IC6 impact. I’ve since learned the importance of understanding the “why” before diving in. It helps you have consistent IC6 impact and makes it easier to get buy-in for your work.
The Tech Lead Skillset Scales Well - In my promotion to Senior (IC5), I learned how to lead initiatives within my team. This skillset turned out to work well at higher levels too. The difference was just that more people were involved. This skill is a great way to continue your IC growth to the highest levels if you fit the “tech lead” archetype.
Luck & Parting Words
Growth to the Staff level can take a long time, and luck plays a role. As you move up the ladder, each promotion depends more and more on your situation in addition to your skill.
There are ways to increase your luck. For instance, you can go to growing companies and teams. You can pick business-critical projects. You can go where the most talented people are. None of these are foolproof, but they increase your chances.
Aside from picking your situation, one way to manufacture luck is to do as much good work as you can. Many growth opportunities came to me because of some past work I did. People would reach out to me to do more of it or because they wanted to ask me questions about something I had launched.
Although luck plays a role, there are aspects of getting promoted that rely less on luck. Here are four high-level areas:
1) Focus on impact. Impact is any measurable and objective outcome that benefits your company. Promotions are a byproduct of your elevated, sustained impact. If you can learn what your organization considers impactful and you deliver that, you will be rewarded.
2) Leverage is how you have more impact. Software engineers increase their leverage through people, writing, and code. Leverage is what differentiates higher-level ICs from lower-level ones. What I mean by each type of leverage:
People - People leverage comes from technical leadership. This means setting direction, reviewing designs/code, and growing others.
Writing - Writing gives us leverage by influencing and helping others without your active involvement.
Code - Not all code is created equal. High-leverage code solves problems that few others can or helps engineers move faster at scale.
3) Your brand matters. When people hear “personal brand,” their minds often go to social media. But the brand that matters most is your “internal brand.” What do people within your company think about your work and its value? This is the brand that you should care most about.
Most of the top ICs I know are not well-known outside of Meta. They are legendary within the company, though because people see their impressive work. Build your internal brand by doing great work and letting others know about it (further reading here).
4) Build your soft skills. Working with others is a necessity to do anything of consequence. Also, being someone others want to work with makes it easier to find mentors who will uplift you along the way.
Soft skills are underrated among software engineers. It’s important to be an excellent IC, but you can go so much further if you also communicate well. Also, engineers don’t often prioritize soft skills, so having them will help you stand out and lead.
One last thing I’ll leave you with is something that I didn’t realize until looking back. When I first joined the industry, I was an absolute machine. I would get in early and stay until the last shuttle left at 9:27 PM. Although this might sound like hell to some people, I loved it. No one made me do that; I put in those hours because I enjoyed the work and thought it was interesting.
Looking back years later, I realize that was an unfair advantage I had. It let me put in a ton of work without getting burned out. Also, I got much more out of what I did because I was intrinsically motivated.
If there’s one thing I wish for you, it is that you find work at the intersection of what you enjoy and what will get you promoted. That is the best recipe for hyper-career growth.
If you enjoyed this and want to see more of my writing, consider subscribing to my newsletter or following me on Linkedin / Twitter.
Thanks for reading,
Ryan Peterman
Thank you for reading!
If you found it valuable, hit a like ❤️ and consider subscribing for more such content every week.
If you have any questions or suggestions, leave a comment.
P.S. If you’re enjoying this newsletter and want to get even more value, consider becoming a paid subscriber.