A large percentage of software engineers spend years at the “senior engineer” level. Atmany companies, including most of my former employers (i.e., Google, Twitter, Airbnb, and Stripe),this level is fairly straightforward to get into, but hard to get promoted beyond. The difficulty inadvancing past “senior” can cause a lot of frustration and make people feel stuck in theircareers.
In this post, I want to share some observations about this “senior engineer plateau”, whyit causes frustration, and how to navigate out of it.
Aside: The senior engineer level
As described in my earlier blog post, mostcompanies beyond a small size have well-defined career ladders for software engineers, with atleast 4 levels. The details vary from company to company, but in most of these ladders the“senior” level is what employees get to after 5+ years of industry experience.
At most places, this rung on the ladder is also considered the “career level”, which implies a fewthings. First, this means that once you get to it, you can stay in it forever- as long as you meetexpectations, you can spend 30+ years as a senior engineer, and no one will ever complain aboutyour lack of ambition or try to push you out for not advancing further.
Second, as the “career level”, it means that people’s careers naturally flow into it. Assumingthe correct mentorship, management, project work, etc., most company promotion processes don’tput up lots of barriers for people getting to “senior” and, moreover, might even require them to dothis after a certain number of years at the company.
Once you get to senior, however, the path beyond it can be much harder. Because staff and higherroles can come with significantly more compensation (discussed below) and because not everyoneis expected to get up to these levels, companies are much, much pickier about how and why theypromote people into them.
Aside: Why level matters
A common statement I hear is that “levels don’t matter” and thus that people shouldn’t care whetherthey’re stuck at senior or somewhere else on the ladder for a long time.
While this is true from a strictly title-based standpoint (personally, and like many others, Ireally don’t care whether my LinkedIn profile says “software engineer” as opposed to “staff softwareengineer” or something else), the reality is that levels are more than just words.
First, they’re an acknowledgement of the work that you’ve done. Many engineers, myself included,are motivated by working on things that matter, and levels are one way (but certainly not the onlyway) to express that one’s work is valued and has had a positive impact at the company.
Second, and probably more importantly for many, levels can play a big role in compensation. Asdescribed in my earlier blog post, each level has associated salary andequity bands. Once you hit the upper end of the band, which may happen relatively quickly if younegotiated well for your initial offer, it’s hard to get significant increases from year-to-year.
There are a few other ways, beyond pay bands, that levels affect compensation. At some companiessignificant equity increases are tied to promotion. If you don’t get promoted, you might not getstock refreshers frequently. Also, at companies with bonus programs, the target is often tiedto level. When I was at Stripe, for instance, senior engineers had a target of 10% of base salarywhereas staff had a 20% one. This meant that, all else being equal, staff engineers would getsignificantly larger bonuses. Google also had level-specific targets when I was there.
These links between levels and pay are not always 100% fair, but they’re the reality of thecompensation systems at most tech companies. Thus, you sometimes need to “work the system”around levels to ensure that you’re paid competitively.
The following sections describe some of the common frustrations that I’ve felt myself and/orobserved in other senior engineers over my last few jobs.
Productivity alone is not sufficient
Many senior engineers are super productive from a coding standpoint- because they’re experiencedenough to know what they’re doing (usually) and because they don’t have the extra responsibilitiesof managers and more senior level ICs, they’re often at the sweet spot where they can “get stuffdone” with minimal distractions.
Unfortunately, though, this productivity alone is often not sufficient for getting promoted.It’s a data point for sure, but at many companies it’s just one of many things that’s considered.
This causes frustration for many, and was personally something that puzzled me earlier in mycareer, because intuitively it feels like productivity should be the main criterion for promotion.Engineers are hired to create software just as doctors are hired to treat patients and artists arehired to make art. So, if you are more hard-working and efficient at creating software and relatedoutputs (e.g., documentation, bug fixes, etc.) than others, you should be rewarded with a promotion.
But, alas, this isn’t how most career ladders are set up- these systems reward “impact” as opposedto “output”. Productivity is a necessary condition for having a positive impact in anorganization, but, particularly as you get into higher levels, other things like working onprojects that are sufficiently complex, demonstrating cross-team leadership, being visible, etc. arerequired as well.
Breadth over depth
A related frustration I’ve seen with getting to staff level at large companies is that thepromotion criteria often place a bigger emphasis on breadth as opposed to depth. You can be anexpert in a technical field and do great work there, but if you don’t also check off other boxes(e.g., cross-team coordination, mentorship, etc.), then you’ll likely hit roadblocks in gettingto the next level.
Thus, the system tends to reward people whose work is “horizontal”, i.e. spread across multipleprojects, domains, and types of work as opposed to those who are more “vertically” focusedon a specific thing. This isn’t necessarily wrong (horizontal work can have a big, positive impacton a company and should be rewarded as such), but it is something to be aware of and is somethingthat can cause some frustration if, like me, you’re more about depth than breadth.
For promotion to senior and lower levels, the direct manager’s word is usually enough- if themanager says that one of their reports is ready for the next level, and there’s some basic peervalidation, then the person will most likely get promoted.
For staff and higher levels, though, the manager’s word is typically not enough. The person up forpromotion could be the greatest engineer in the world, but if no one outside of their immediateteam can affirm this, then they’re unlikely to get to the next level.
The easiest way to get this affirmation is to be visible to those outside of your team andparticularly to those who are making the promotion decision. Unfortunately, though, this can behard if you’re super introverted (as I am), or you’re working head’s down on a deep technicalproblem that isn’t flashy and doesn’t naturally lend itself to cross-company visibility.
How to fix it
Find the right role
This might come across as a bit extreme, but if you really care about career advancement thenthe most important thing is to find a company and a role where the work and evaluation criteriamatch your strengths. Personally, I feel that I’m strongest on the productivity sideand less good at the “cross-team coordination”, “evangelizing new technologies across the company”,and other dimensions that high-level ICs are promoted for. Other people, however, might excel atthe latter and not want to spend all day pumping out pull requests.
It’s important to note here that there can be a ton of variation not only between companies at ahigh-level but also between the roles within a company. Backend infrastructure engineers indivision X, for instance, might be evaluated differently than frontend product engineers in the samedivision, and these two groups might be evaluated differently than engineers doing similar work indivision Y at the same company.
Before you sign a new job offer or switch teams inside a company, it’s really important to assessyour strengths and compare them to the work outputs and behaviors that are rewarded for the role.
Make sure you check the boxes
As mentioned above, many companies evaluate employees on a broad set of criteria and requirepositive signal in all of them before allowing a promotion. Thus, if you’re trying to advanceit’s really important that you “check off all the boxes”, even if some of these aren’t fun oraligned to your strengths. So, for instance, if getting to staff requires “mentorship experience”,then it’s important that you have some opportunity to do this, e.g. by hosting an intern for thesummer.
You should consult your company’s career ladder documentation and work closely with your directmanager to figure out what these boxes are and how you can fill out the missing pieces.
Improve your visibility
Getting more visibility for yourself and your work is really key for advancing to higherlevels. Even if you’re introverted and even if it’s uncomfortable, you need to ensure thatthe people evaluating your work understand what you’re doing and why it’s important.
In some cases, for instance if you’re at a really small company or working on a flashy,high-visibility product in a larger company, the visibility comes for free. In other cases,though, you need to do extra work to get this. Some tips here include:
- Do regular “skip level” 1:1s with your manager’s manager; if they don’t understand your work and aren’t promoting you to others, then it’s going to be hard to get ahead.
- Send out progress reports, launch announcements, etc. so others beyond your immediate team know what you and your colleagues are working on.
- Write blog posts, present at conferences, do internal “tech talks”, and participate in other activities that allow you to build your personal brand and promote your work.
At many companies, the senior engineer level is easy to get into but hard to advance beyond.I personally felt stuck at senior earlier in my career and many of my colleagues over the yearshave experienced similar feelings.
The key thing is to realize how the system works and ensure that where you’re working and whatyou’re working on are aligned with your long-term career goals. Once you achieve this alignment,advancing can still be slow but at least there’s a clear, achievable path to follow.