The Staff Software Engineer role at small companies

published 2023-02-03 [ home ]

When I was hired at Inch 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.

General information on technical ladders

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.

Becoming a Staff Engineer

Not mandatory

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.

The end of "experience"

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).

A polymorphic job

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 people.

Will Larson defines 4 Staff+ archetypes: tech leads, architects, solvers and right hands.



A Staff Engineer should be able to:


A Staff Engineer should tick several (not all) of those boxes:



Ladder examples

More reading

See also