
What does it take to get promoted from senior to staff at a tech company?
At the beginning of 2021, Zendesk promoted me to staff software engineer. At the end of 2021 I switched jobs from Zendesk to GitHub. In early 2023, GitHub promoted me to staff software engineer. Successfully going through the staff promotion process twice in two years was a pretty interesting experience, and I think it puts me in a good spot to talk about making the jump from senior to staff1.
If you’re just looking to get the staff role, it’s almost always easier to get hired into it than promoted to it. Senior is typically considered a “terminal level” in tech: once you hit it, nobody will think you’re weak for not seeking a further promotion to staff. Internal promotions to staff are less common. If you do want to get promoted, what does it take?
First, we need to understand why senior-to-staff promotions happen in tech companies. They happen for two reasons:
Promotions do not happen because a particular engineer is really technically strong and ready for the next level. They do not happen because an engineer has been mentoring a lot and is ticking the boxes on the engineering ladder description. They are a tool for retaining or for empowering valued engineers. So to be promoted to staff, you must be known and valued by your organization.
Every company values engineers who ship (i.e., who successfully execute on the company’s plans and goals). The straightforward recipe for this is to successfully lead small projects, which will build a reputation for you to be assigned and deliver on larger projects, and so on until you’re trusted with high-impact work. This means working on things the company prioritizes. If your company has recently pivoted to the enterprise market, you need to be working on enterprise projects. If your company has recently had a slew of embarrassing incidents, you need to be working on availability.
You are very unlikely to be promoted to staff engineer for working on issues the company does not currently care about, even if you strongly believe they’re important. I’ve heard lots of stories (both in real life and online) of engineers who are simultaneously frustrated that the company didn’t seem to care about the amazing performance/refactoring/etc work they were doing, and frustrated that they weren’t getting promoted. Those two things are related! You are free to disregard the company flavor of the month if you want, but it will materially hurt your chances of getting the staff engineer nod.
As a staff software engineer, you will be judged by success and failure, not by effort. That’s how senior company managers have always been judged, so they are unlikely to be sympathetic about it. (Incidentally, senior engineers are also judged like this, but many don’t know it.) That means that your projects have to succeed. If you’re technically weak, it’s probably a dealbreaker: projects almost never succeed unless someone bends their will to making it happen. If you want the staff promotion, that person has to be you.
Everyone will tell you that the staff role involves more leadership and mentoring, and less hands-on engineering work. This is broadly true, because the higher you go in an organization the more time you spend coordinating instead of writing code. But in my experience, you do not get to staff by being a great mentor or leader. You get to staff by delivering value for the company.
One caveat: sometimes a good way to deliver value for the company is by mentoring and leading. When I went up to staff at GitHub, it helped that I had been the kernel of a small APAC-based engineering team, because the company was trying to grow engineers. However, delivering value the traditional way - by shipping projects - is not optional. If all I had been doing was interviewing, onboarding and mentoring I do not believe I would have been promoted.
No, you cannot! Staff promotions only happen at a company that has staff roles, and that has the budget to promote people. If your company doesn’t have staff roles, you’re probably better off switching companies than trying to convince them to open one up just for you.
You can’t get promoted to staff without your manager doing a lot of work: writing the promo packet with you, figuring out for you what senior leaders are looking for, schmoozing senior leaders ahead of time so they know your name, and making sure you’re assigned lead to key projects. That means your manager has to be switched on and fully on board. If your manager is incompetent, or doesn’t like you, or doesn’t think you’re ready for the staff role, you should switch teams or companies before spending six months campaigning for the promotion.
Note that if you’re good and your manager’s smart, they should want to promote you. Having more senior direct reports looks better for them, your success reflects positively on their leadership, and promoting you to staff empowers you to continue making them look good to their bosses.
You also need your skip-level manager to be onside (since it’ll likely be their or their boss’s ultimate call), and a good reputation with the existing staff engineers at your company (since for staff promotions the management team almost always quietly asks engineers they trust about you). If you’ve burnt either of those bridges, don’t expect a promotion until that changes.
My own experience has taught me that titles are kinda dumb, and at times very very insular, which seems to be the case here.
I went from eng, to sr eng, to principal eng, back to eng, making more money each time along the way across different orgs.
Our industry has little to no real standards. Congrats on your promotion, but your title ultimately means little across companies.
My experience of speaking to people who make the decisions is that titles are absolutely a social signal that gets people to listen. Now, if what you say is too whacky, or you demonstrate a total lack of ability once given a chance, then you’ll lose that listening privilege. However, a more senior title can get people’s ears opened in the first place.
One could argue that if you work in a place where people only start listening to you if you have the right title, that place might not have the best culture to begin with.
Instead of trying to climb those ranks, it might perhaps make more sense to look for a place where your input is valued based on its own merit and not based on what label is attached to your active directory entry.
Lots of places don’t have the best culture, you work with what you’ve got in life.
You might be applying for a job and, since they have limited other information, your existing job title is used as signal to figure out if what you’re saying has merit. Particularly if what you’re saying doesn’t mesh with their own experience or expectations.
> One could argue that if you work in a place where people only start listening to you if you have the right title, that place might not have the best culture to begin with.
There isn't a single place where status (and by extension titles showing that status) wouldn't change how people communicate and how open they are to your ideas.
If you think you're in a place that doesn't do that, you're either deliberately closing your eyes to it, are the privileged high status person (and closing your eyes to it) or you don't understand how human relations work.
Even in places where "your own merit" counts, there's a big status gradient between which ideas get listened to. If you don't have titles encoding that status gradient, you just have informal authority structure which does the same.
It's a question of balance and proportionality.
Of course it's unrealistic to expect that the status gradient simply shouldn't matter. It's perfectly natural (and useful, healthy) to weigh what people say according to their status, to some degree. It's just human relations, as you say.
Where things become problematic is when their putative status becomes the primary or overriding factor. That is, "X is true (simply) because Y said so" environments. Or "You're just an L{N}, but I'm a L{N+k} so even though I don't actually know what I'm talking about, I don't have to listen to you" environments.
Those are the ones you want to avoid.
What is the value of credibility under this way of thinking? If someone has a history of delivering but you think their idea is bad, do you give them a chance? Or vice versa, if someone has great vision and a history of failing, do you give them a chance?
Is there no weight to credibility? Similarly, if Terry Tao refuses to even read your ideas unless you have the right professional look, is that cruelly dismissive and arrogant?
Those places are rare and far between and generally have cutthroat competition for getting in.
FWIW, those places are (hopefully) not at your company... it is like, you are at a conference or trying to get meetings with people from other companies.
I worked at a place with great culture, where everyone on a team would have a say on decisions or could start and drive new initiatives that would get an ear from the team, TO A FAULT, and still people would turn around and ask for the promotion. At times this would be for money, but at times where it wasn't, I guess it was for the status. Maybe, now I think about it, it may not be for the status within the organization in question, but rather for the status with friends or, you know, on LinkedIn!
Titles are a great initial assessment as to how much of a politician or charlatan someone may be in the org.
In one of my work experiences, "titles" were used as opposed to (or with a meager) paycheck raises. The most ridiculous aspect was that we had a fair number of group leaders, each with a team of 1 (just themselves).
For some it was effective.
This isn't reflecting the OP case though.
Sadly very accurate. That’s how you can find inflated titles but people with no ability to do work.
I'd agree, but only if the title puts you at the top of a ladder, or just below it.
But in that case, the title is typically paired with authority. The authority is probably what people care about.
It doesn't seem like the blog post reflects your experience. Nor mine to be honest.
Staff engineers are mostly concerned with teams and projects moving forward, not writing code much.
On the other hand it's company specific. The same way armies differ in their pyramid and roles and responsibilities so do engineering teams.
In Germany you get better mortgage deals from banks based on your title seniority.
This. I’m tired of the articles that act like every company has the same titles and structure.
As if the absence of the word “staff” in the org chart means there’s no one doing staff-level work.
exactly this. i’m senior staff at my current company and I could very much envision if i moved to california i would on average be considered a senior at most conpanies.
When I was in the Marines, I was promoted to Lance Corporal twice (and wasn't demoted between the two promotions.) The unit I was in just wasn't that great with Admin.
lol - Sounds like a Terminal Lance comic strip.
> That means your manager has to be switched on and fully on board.
Your manager also needs enough political capital to drive the promotion. This is something I have an acute awareness of, having been told for the last 3 years that I was operating at the principal level (no staff title here) but not getting promoted. Eventually my manager was forced out of the company by bullying from my skip-level, so now I'm left to look for a new role elsewhere or spend some unknown amount of time building the relationship with my new manager.