Senior to Staff Engineer
What are the similarities and differences? What are the criteria for promotion? And some tools and techniques that come in handy.
I work as a Senior Staff Engineer. One of my most important missions is to help grow the next generation of leaders using a variety of tools.
One such tool is mentorship. Mentorship is a two-way street however, because I get to learn from the experience and questions of someone who has put their trust in me.
Below is an interesting Slack conversation I had with a Senior Engineer about the role of Staff Engineer, promotions, and required skills.
Notes:
The conversation is slightly edited to make it suitable for the public audience.
Our career ladder is roughly modelled after Circle CI but due to the size and shape of the organization, we have 2 levels for Engineer: Software Engineer 1 & 2.
In this conversation, the mentee and mentor are level 4 and 6 respectively. Whereas in Circle CI ladder, they are levels 3 and 5 respectively.
Convention
Update (2023-10-27):
Originally, I used quote style for all conversations, but it was hard to read.
So now:
The questions and comments are marked like this
And the regular text is my own response.
Hard skills?
Senior Eng: What are the skills I need to develop to get to the staff level?
Depends on what you mean by skill. Broadly speaking there are two groups of skills:
Hard skills: programming languages, design patterns, libraries, frame works, tools, etc.
Soft skills: influence, negotiation, coaching, leadership, etc.
If we only focus on hard skills, the difference between the Staff Engineer and the Senior Engineer is not as large as the difference between Junior Engineer and Senior Engineer. It follows a typical S-curve:
That is because:
Due to other responsibilities, Staff Engineers have less focused time to learn hard skills.
The pace of learning hard skills naturally follows an S-curve as you stay in the same line of work for too long.
But when you bring the soft skills into the picture, it starts to make more sense:
Staff Engineer is a leadership role. If Senior Engineer is measured by contributions in the code, the Staff Engineer is measured by their impact radius empowering other engineers to do their job.
Senior Eng: How do you even measure skill level?
When it comes to knowledge work, it is very hard to measure skill in an objective manner.
If you hire someone to mow your lawn or lay tiles on the kitchen floor, you can measure output like the time it took to do the job or number of failures.
If you try to apply the same concept to measure software engineering skills, you’ll end up with vanity metrics like number of lines of code, number of PRs, number of features shipped, etc.
and wrote an insightful post in response to McKinsey which promoted such vanity metrics.Senior Eng: Right, we should measure outcome instead of output.
Output is the stuff we produce; outcome is the impact of that stuff.
For example, if we assume that code is the output of a software engineer, the value it generates for the customer is the outcome.
The higher you go on the career ladder, the more you’re expected to represent the “interests of the business”: how the company makes money, what problems does it solves, and for whom.
Again, it is hard to measure that value. We could try to use money as a proxy metric for value. But it is very naïve to assume a 1:1 relationship between money earned and value generated. This lacks many nuances about where Staff Engineers deliver their value.
Of the 4 archetypes of Staff Engineer only the solver primarily impacts the solution. The impact of the other 3 (Architect, Right Hand, Tech Lead) is primarily delivered through empowering and leading others.
Senior Eng: Are you saying that Staff Engineers cannot be measured through their direct contribution to the code, but rather how many people they empower?
Not entirely. Staff Engineer is on the individual contributor (IC) career ladder. This means we don’t have any direct reports.
Unlike product managers, we don’t have any mandate over the product.
Unlike engineering managers, we don’t have any mandate over the engineers.
If you go on that line of thought, we merely have a mandate over the technical solutions.
The technical solution doesn’t live in a vacuum isolated from the problem that the product is solving.
The technical solution is often complex enough to require multiple engineers working together.
The impact of Staff Engineers depends on the things and people they have no mandate over! 😁
I call it “leadership the hard way”. One has to be really good at soft skills to be able to deliver an impact. Otherwise, you’re just carrying the title without fulfilling the expectations. Sometimes you may even get in the way of other people doing their job, instead of empowering them.
Learning Soft skills
Senior Eng: How do I learn soft skills?
Unfortunately, this is not taught in most engineering schools. This is the type of skill that you pick up while working as an engineer with other people.
There are a couple of good books if you want to accelerate your learning:
Soft Skills: The Software Developer's Life Manual by John Sonmez
Staff Engineer: Leadership beyond the management track by Will Larson
Software Engineering - The Soft Parts by Addy Osmani
There’s probably more but as you know I am very picky about what I read and tend to focus on practice than theory. You can pick any of those books and end up in a good state. What is important is to use those techniques where you work and adjust your performance to the environment and situation.
Senior Eng: How is the outcome of Staff Engineer different from a Senior Engineer?
It depends on the company, product, team topologies, and your own character. The role of staff is vague by definition. You fill a gap that senior engineers normally don’t. For example:
Interview and onboarding.
Mentorship, coaching, and sponsorship.
Acting as a trusted advisor for engineering leadership.
Solving tricky problems that span across multiple teams and technical solutions.
Time & Expectation Management
Senior Eng: How do I find the time for all of that?
The downside of Staff Engineering that is rarely talked about is that you are going to spend less time in the IDE (integrated development environment) and more time collaborating with others.
Many Staff Engineers who I’ve met miss coding. Think about it: computers are logical, transparent, and predictable machines. Comparably, humans are much harder to work with. There are emotions, misunderstandings, stress, personal agenda, biases, unbased beliefs, etc. 😂
As a trained Software Engineer, you only have formal education in computers, but your impact as a Staff Engineer depends on the human part!
It takes time to build trust and alignment with humans. Debugging a relationship is more complex than code.
One of the challenges for newly appointed Staff Engineers [especially if the role itself is new at the company] is how the Senior Engineers interact with you. As far as they are concerned your hard skills aren’t much different to theirs (if not worse). What justifies the higher position, pay, and access to the room where decisions are made? Add the fact that you don’t have any authority over people and the friction can quickly escalate. You have to be their friend and support them because Senior Engineers are closer to the code and value stream of the company. It is also important to be transparent about the new responsibilities of the higher position.
Staff Engineers also have dotted reporting lines: leaders other than your direct line of report that you need to sync with to achieve an objective larger than your part of the organization.
Obviously, all of this may lead to being overwhelmed. You need to be good at negotiation and managing expectations to have a sustainable career as a Staff Engineer. Otherwise, you can easily end up overworked, exhausted, and burn out.
Senior Eng: It is not easy to spend the time on soft skills when my performance is primarily judged based on hard skills. I will have more time for that if I am officially a staff engineer. How do I prepare for promotion?
Companies usually play it safe and expect you to demonstrate the performance at a higher level before they make it official and promote you.
Sometimes you find it easier to change jobs than go through the whole promotion process.
Apart from that, there needs to be a need for a Staff Engineer in your org. And sometimes that vacancy is filled by you! 😯
Yes, you might be your own career’s worst enemy: as long as you are working in Staff capacity and are not noticed, there won’t be a need for the company to hire someone for that position. This has certainly been the case in my own career.
Senior Eng: Can my manager help me in any way?
Apart from coaching and sponsorship, your manager has an outsized role in your promotion. Steve Huynh says you need a manager who:
Manages more than one team.
Has a history of promoting someone to staff level.
Is fully committed to promoting you.
This is not a universal law, however. You might have a single team manager and still be promoted. You might also have a manager that isn’t pushing for your promotion, but your contributions and impact is recognized by others who do push your promotion (remember the dotted reporting lines?).
Hard Skills
Senior Eng: What about my technical skills? Do I need to improve them to get promoted? Can I slow down learning new technical skills after the promotion?
Staff Engineer is still an engineer!
You are expected to roll up your sleeves and code when needed.
Staff are on the IC career ladder. Think about your counterparts on the engineering management ladder: they spend more time conducting 1:1s, hiring, planning, team building, vacation approval, salary negotiations, approving time/expense reports, etc.
Staff Engineers don’t have direct reports, and this gives us more time. What are we supposed to do with that extra time? “Sharpen the axe”, as Stephen Covey calls it in 7 habits of highly effective people.
Your impact depends on having good technical knowledge AND leadership without a mandate. Like all hard things in life, it’s about balance.
The balance point depends on your interests, current position, and workload. In my case, I had to come up with a few hacks to minimize the load of meetings to get focused work done, for example.
🔴I also opened my TODO list to manage expectations among other things. This paragraph will be replaced with a link to that article when it’s out.
Senior Eng: Do I have to work extra hours to be good at both soft skills and hard skills? 🤨
You need to optimize your paid time to keep up with the technology while serving in leadership capacity.
Please don’t borrow your private time to cope with the expectations at your job. That is not sustainable.
In 20 years, the only people who will remember you working hard are your kids. Don’t sacrifice their rights just to go up the ladder.
If you find the balance between hard & soft skills tricky, you can aim for an engineering management (EM) position. There are a few EM archetypes that are not as demanding technically.
The main selling point for the staff role is technical leadership and one cannot focus on the “leadership” part without being “technical”.
Speaking of sacrificing private time, I’m guilty of that too. Right now, I’m sitting with the computer on a beautiful weekend writing this post. I believe it is important to help the software engineering community by sharing real-world experiences and I don’t believe pay-walling the content helps that mission. If you want to support this cause, I appreciate it. 🙏
Senior Eng: But how much soft skill do you really need? In our team, we’re pretty mature and I’m not sure if there’s enough space to demonstrate soft skills more than anyone else.
That’s where the scope comes in. You’re right, not every team needs a dedicated Staff Engineer.
Where the staff role really shines is when the scope of an initiative spans across multiple teams —especially the autonomous teams where there’s a risk of diverging from each other.
You can contribute to:
Prevent things from falling between the cracks (tactical)
Aligning those teams towards a long-term vision (strategic)
Senior Eng: How do I demonstrate that without the title?
First of all, you don’t need the title to lead. Title makes it easier but is not a requirement.
You are a leader when you care about a vision larger than yourself and can coordinate others together to achieve that vision.
You can check your company ladder to see what exact treats they consider for leadership.
Don’t focus too much on the ladder, however. Most of them are broken. A better option is to take full responsibility for your career growth and look for opportunities to make an impact larger than yourself.
Look at the adjacent teams and see where things are falling between the crack? Listen to complaints and see which one you can reduce or eliminate.
That first step towards the Staff role can be to take responsibilities like release manager or team lead.
Anyone can complain but only a few are willing to take action and make a change.
If you observe and listen carefully, there are a ton of problems you can solve and pick up new skills along the way:
What are the problems that are Staff level, and their scopes are larger than one team?
How to frame the opportunities to attract other collaborators?
How can you negotiate with managers to motivate these collaborations?
How can you bring attention to a blind spot and add a good solution on the roadmap?
Staff Eng: I need to think about the next step. You mentioned that you miss spending more time on code. What are the upsides of having the title?
Having the title certainly opens doors and gives you access to the room where high level decisions are made. The best way to predict the future is to build it. Having a say in where the product goes is an effective way to have control over your faith.
You’ll act as the trusted advisor for leadership and get to influence the solutions at a large scale.
But be aware that going up the ladder implies higher expectations and is not for everyone.
Some people think that leadership is about control over others. At least in the Nordic countries (Sweden, Denmark, Norway, and Finland) it’s the reverse: you are supposed to serve other people. Being responsible for people is complex. That’s why many engineers choose to become Staff Engineers to expand their organizational scope without having to manage more people.
While having a career ladder with the option to pick between Staff Engineering and Engineering Management is a good development, I believe avoiding people responsibilities is the wrong motive to go to Staff Engineering. Because:
Staff Engineering is still a leadership position and leadership is about people. It hurts the company culture to put people with low soft skills in a position of power.
Like I said, Staff Engineering is “leadership the hard way”. If a person doesn’t get along with others, they’re in for a rough ride without mandates. I’d argue the more formal mandates of the EM role compensates for the higher demand of leadership skills that the Staff position requires. It’s definitely a controversial take, but at the end of the day people are more likely to take someone seriously when they know that their salary negotiation, vacation approval, promotion, etc. is on the line. It shouldn’t be like that, but this is what I’ve observed.
Update: after I shared this post with a Staff Engineer friend, he pointed out two important points that are missing from my dialogue above. Here you go:
Longer time horizon
Staff Engineers operate over longer time horizons.
If a junior engineer’s tasks are done in days and sprints and a senior engineer’s concerns span 1 months to a quarter, the Staff Engineer is usually involved in anticipating, preparing, and planning for 1-3 years into the future.
One could say that the Staff’s role is more strategic whereas the other roles are more tactical.
Disclaimer: these numbers are not prescriptive and there are certainly junior or senior engineers who also think long term, but this is my observation from teams I have worked with.
Previously I’ve written about the difference between strategy and tactics.
Vertical and horizontal impact
Up until Staff level, your impact growth is primarily vertical: you learn skills that primarily make you better at your professions.
From Staff Level and above, your impact growth is primarily horizontal: you empower other engineers and act as a force multiplier.
Larger organization scope
Staff Engineers usually serve multiple teams and cover a larger organizational scope.
This contrasts with senior and junior engineers who mainly operate within the scope of one team. There are exceptions, for example most engineers in a platform team support multiple teams due to the nature of the team topology but that doesn’t mean that they are all doing Staff level work.
There are Staff Engineers who work within the borders of one team, but their full potential of the role is realized when they operate across multiple teams, break silos, and prevent things from falling between the cracks.
Closer to business
The higher level you go in the IC (individual contributor) career ladder, the closer you are to the “business”. And that requires a different mindset.
I really like this piece from
:❌ Don’t just learn about the technology stack at your organisation.
✅ Learn about the business and the market and industry you operate in.
❌ Don’t talk technical terms to non-technical people.
✅ Learn to simplify technical terms and communicate in business terms.
❌ Don’t just build the solution you’re being asked for.
✅ Ask questions to discover what the business problem to be solved is.
❌ Don’t just think about your work in your team.
✅ Think about the impact your work has on the business and the customer.
❌ Don’t do work just because it was asked for.
✅ Find out what the highest priority work is and do that.
❌ Don’t refuse to give estimates.
✅ Present a range of possibilities and the tradeoffs and risks to hitting them.
❌ Don’t assume deadlines are fixed.
✅ Negotiate deadlines against budgets, risk and priorities.
❌ Don’t let missing a deadline be a surprise.
✅ Communicate that it’s going to happen as soon as you know and offer options.
Source: Level Up As A Software Engineer By Thinking In Business Terms.
More autonomy
As a Staff Engineer you have more autonomy to set your tasks.
This extra freedom may look very appealing to many engineers, but it often has ramifications that can lead to workaholism or burn out. That’s because as a leader you’re often faced with novel problems that don’t have a clear solution.
This is in contrast with the junior or senior engineers who usually enjoy more clarity. As Staff Engineer it is your job to build that clarity.
Quick test
In my experience mentoring many senior and staff engineers, most engineers above junior level have the confidence to believe they are somewhere in the spectrum to be called Staff Engineer. Unfortunately, there’s a gap.
A good litmus test that I’ve seen at every staff promotion discussion in different forms is to ask:
Is this engineer a good role model?
This simple question has so many sides:
Is there a behavior that I don’t wish to see on steroids across the org?
Is this person already seen as a role model?
Is this person already seen as a role model for top performers?
Is this person a good representative of the type of engineers we want in our organization?
Do I want more engineers like them?
Can this person help hire and retain more people exposing good behaviors and skill levels?
Does this person do the right thing when not observed?
Can this person build a path where there is none without constant hand holding?
…
What prevents senior engineers from growing to staff level is often a lack of:
Soft skills and communication
Hard skills for areas that are key for the company
Perception: the skills are there but aren’t presented to the leaders who call the promo (they often tend to play it safe when they don’t know)
Instead of assuming that the third reason is blocking you, actively seek feedback on the first two!
Follow up
In this follow up post I dig into the learnings from my own role as a Senior Staff Engineer:
Hope you enjoyed this conversation. This article took about 4 hours to draft, edit and illustrate. If you learned something, I will be thankful for a paid subscription to motivate me to share more posts. You get 20% off via this link. My monetization strategy is to primarily keep the content free and rely on donation to support the hours I pull from my private time for this newsletter. Thanks in advance for your support.
You can also share this article within your circles to increase its reach and impact in our community. 🙌
Thanks Alex, glad you liked the post and felt it worthy to mention in such an excellent post.
Good article !! Thanks for sharing !!
I'm in the process to changing role and this text is usefull to me!