💾 Archived View for separateconcerns.com › 2023-02-03-staff-engineer-inch.gmi captured on 2023-12-28 at 15:18:27. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-09-28)
-=-=-=-=-=-=-
published 2023-02-03
When I was hired at Inch [1] my "official" position quickly became an issue. For various reasons neither the title they wanted to give me initially (Engineering Manager) nor the one I would be given externally (CTO) nor the obvious Senior Software Engineer worked. So I proposed to help them define the next position on the technical ladder.
What follows is a translation of a document I wrote in French, slightly edited to remove Inch-specific details. It is still written from a European - and more specifically French - point of view. That document was later used to promote a 2nd engineer to Staff. I publish it here so it can help people needing to do something similar elsewhere.
1: https://blog.separateconcerns.com/2021-05-01-inch.html
Typical early career levels for software engineers (or developers) are relatively well-known:
Progression is based on experience and it is expected that a good engineer will reach mid-level after 2 to 5 years of experience and senior between 5 to 10.
Senior developers have two ways to evolve: branch into management or stay on the technical track. This document describes the second option.
Let's start with a few key things to understand regarding management. A development "team" (project or run) is typically 3 to 10 people. It has a "lead", which is not a level or a management position. It is a technico-organizational role assumed by a Senior+ developer at a point in time.
The names of levels after Senior differ depending on companies but can be for instance:
At some large tech companies the "Distinguished" level is equivalent to VP and Fellow to SVP or CXO. At Inch, Staff corresponds to level F. The difference between Staff+ levels is often defined by impact:
Those levels constitute a pyramid where each stage must be much smaller than the one below (e.g. by a factor of 5 at least) otherwise they stop making sense.
Given the size of Inch, only the Staff level makes sense. A Principal level may not be created until the company is large enough to have several independent technical teams (at least 12 developers, ideally around 30). Consequently, some things relating to strategy and aura are expected from the Staff level at Inch.
A key point is that Senior is a "terminal level", which means it is not expected that all Senior engineers will become Staff at some point. An engineer may very well remain at the Senior level for their whole career.
Progression from Junior to Mid to Senior is very related to experience and hard skills (soft as well, especially for Senior). But the value of marginal experience goes down with the years and is harder and harder to measure.
The Staff level is still partially related to experience - at least 8 years are expected in general - but more importantly to impact within the company. This means hiring at this level is rare, and it is not unusual for a Staff Engineer to go back to Senior for a few years after a job change.
Important note: Staff is not a management level but it does require more soft skills than previous levels (more on that later).
Staff is a technical specialization level, hence not all Staff engineers look the same. To understand the differences, here are a few axes.
A developer can specialize in one or several fields or technologies and become a true technical expert. For instance, they can be a master of their language and framework and contribute to their core or ecosystem. They can also become experts in a business domain. Those are depth-first approaches.
Others, on the other hand, expand their knowledge horizontally and know about numerous domains, technologies and parts of the stack. This is the generalist, breadth-first approach.
In general it is rather a mix of both approaches: developers with a very wide background and a few specialty topics they master. We talk about T-Shaped [2] people.
Will Larson defines 4 Staff+ archetypes [3]: tech leads, architects, solvers and right hands.
2: https://en.wikipedia.org/wiki/T-shaped_skills
3: https://staffeng.com/guides/staff-archetypes
A Staff Engineer should be able to:
A Staff Engineer should tick several (not all) of those boxes:
6: https://www.levels.fyi/?compare=Google,Facebook,Microsoft&track=Software%20Engineer
8: http://www.engineeringladders.com
9: https://basecamp.com/handbook/appendix-04-titles-for-programmers
10: https://twitter.com/Gankra_/status/1046438955439271936
11: https://dresscode.renttherunway.com/blog/ladder
12: https://gist.github.com/jamtur01/aef437a79fee5a9cefdc
13: https://labs.criteo.com/2019/02/criteo-engineering-career-tracks-and-leveling/
14: https://about.gitlab.com/handbook/engineering/career-development/
15: https://engineering.atspotify.com/2016/02/15/spotify-technology-career-steps/
17: https://dropbox.github.io/dbx-career-framework/
19: https://eventuallycoding.com/2021/06/24/senior-avec-6-ans-dexperience-et-apres/
20: https://www.touilleur-express.fr/2021/04/11/premier-mois-chez-doctolib/
21: https://blog.danielna.com/understanding-project-management-will-improve-your-developer-job/
22: https://sparktoro.com/blog/if-management-is-the-only-way-up-were-all-fd/
23: https://frontside.com/blog/2016-07-07-the-conjoined-triangles-of-senior-level-development/
24: https://blog.separateconcerns.com/2013-03-24-vogels-skills.html
25: https://spin.atomicobject.com/2015/02/19/software-architect-role/
26: https://touilleur-express.fr/2022/07/17/devenir-staff-engineer/