Not all software companies have a “Staff Engineer” title but typically we will see the ladder like this: Engineer I, Engineer II, Sr Engineer, Staff Engineer, Principal Engineer, Distinguished Engineer.
1. The term “Staff”
The term “Staff” is adopted from military (or construction) organizations which are typically divided into line agency (or division) and staff agency. The Line agency is responsible for actual work in the (battle) field according to organization purposes (military org means to win the war, construction company to construct the building, and software company to develop the software). The Staff agency supports the line agency from the rear, provides them with logistics/information, relays strategy from the executive, prepares reports, etc.
Engineers (Engineer 1 to Sr Engineer) are the ones who bleed and sweat fighting on the battlefield. The staff Engineer helps engineers focus and win the battle. Engineers and Staff Engineers serve different functions.
2. Becoming Staff
Every company has different conditions and situations. Not all companies require staff engineers and not all engineers should become Staff. Usually, Staff Engineers are the most senior/experienced engineers who focus on non-code technical stuff like design/architecture, mentor other engineers, work on tools/frameworks (productivity), meet with PM or users, and many more.
Due to a lack of talent in the market and company hypergrowth, the engineering career tends to be shorted. If the person is smart, one or two years is enough to bring fresh graduates to senior engineers. The engineer from the earlier days of the company usually gets a better level (staff level) when the company expands.
Rather than counting on years of working, I would like to address at least 3 criteria to fit Staff roles: technical excellence, product understanding, and soft skill (maturity).
3. Staff Engineer VS Engineering Manager
Staff Engineers have different names like tech leads or software architects. Staff Engineer is a universal term for other roles needed outside of coding. There are many archetypes of staff engineers. IMHO, the Engineering Manager is one of the archetypes of a Staff Engineer.
On the dual track career, the engineering ladder is split into managerial and IC (individual contributor). Once you reach the senior level, you may choose an Engineering Manager (people-focused) or a Staff Engineer (technical-focused). In single-track, it is normal for the Engineering Manager to be involved in technical stuff (like Staff Engineer).
An Engineering Manager is not an “Engineer Manager”. The Engineering Manager makes sure the engineering/development process runs smoothly by supporting the engineers.
Staff Engineer is also a leadership role just without the team. Staff Engineers should be able to influence the engineers for better (best) practices.
4. Are Staff Engineers still coding?
Let’s alter the question a little bit. Are Staff Engineers still able to code? Absolutely yes. Are Staff Engineers still coding day-to-day? Probably not, it depends on their “urgent” task and functions.
In one famous tweet, Elon Musk said “Managers in software must write great software or it’s like being a cavalry captain who can’t ride a horse!” Depending on the archetype, the Staff Engineer should be great at “riding a horse” or at least fully understand how.
There are 2 schools of thought on whether Staff Engineers (or Engineering) should code. One believes they should remain relevant in the fieldwork by coding. Others say many engineers do code, but only a fews who manage or do staff functions.
Nevertheless, we should beware of Ivory-Tower Architect Syndrome, where people who live “above” only see far away in the sky horizon and are unaware of what is happening under their tower.
— — -
Share your thoughts and experiences about Staff Engineer