Hacker News new | past | comments | ask | show | jobs | submit login

I don't think there's a single easy definition of "Staff Engineer" and it's usually just a title. But it might be still good to think about why those folks keep talking about this specific title.

From my observation, there is a certain inflection point in a senior level engineer's career where their expectation rapidly grows in that no one can realistically match it alone. The quality of your work will saturate and it's physically impossible to "work harder". Some extraordinary engineers could delay that point a bit but they will be eventually there.

At the moment, they will need to figure out a consistent, reproducible way to scale their contribution. If they want further career progression. The most direct way is becoming an engineering manager. Someone may develop a technical and organizational skill to influence high level decisions and prioritization. Or just become an engineering genius...

There are many other possible ways to achieve this, but the point is that further contribution at this point usually needs a radically different way. I do see that many companies tend to grant a title of "Staff Engineer" to those folks able to figure out how to handle this situation.






> There are many other possible ways to achieve this, but the point is that further contribution at this point usually needs a radically different way. I do see that many companies tend to grant a title of "Staff Engineer" to those folks able to figure out how to handle this situation.

In my own experience it's also entirely common for your comp and responsibilities to grow and grow until your working peers are all directors, VPs, and heads of this or that and you're meant to act as their API layer to an entire team of humans executing on your technical direction, but your title is just Senior Engineer.

Internally everyone understands this and treats you accordingly, but it sure looks bad on linkedin.


My experience is those are generally technically immature organizations. Everyone knows that "John" is consulted across departments and pulled in by senior leaders, that he's guiding the technical of multiple teams ands areas of the business. But management can't quite explain what it is so they give John more money and his title remains unchanged.

It’s possible to assign further ranks to subdivide titles appropriately.

e.g. The most important senior engineer, with an equivalent rank just one level below the CTO, would be the ‘First rank X Engineer’, then the next level below would be the ‘Second rank X Engineer’, and so on…


There are usually tech industry levels above senior like staff, principal, distinguished engineer. I think the OP's problem is they didn't get a title increase.

I know, hence why I wrote X as a placeholder…

Wouldn’t that be a Distinguished Engineer?

I have long encouraged engineers reporting to me to view the transition to Staff Engineer as not a promotion but a role change similar to the change of transitioning into being an engineering manager.

I think that what you said is only true in the same way "there's no single definition of a manager" is true.

Staff Engineers live on the critical path of implementation and directly contribute to their execution.


> Staff Engineers live on the critical path of implementation and directly contribute to their execution.

What does this mean?


i think the idea here is that a staff engineer should be identifying what needs to be done, figures out how to do it, works to push the team and project in that direction, and provides insight to the org as to how it is going

In my view it's the responsibility of engineering management is to create alignment on what needs to be built, when, and how. You call your shot and then you have to hit it.

Managers need a lot of information to create this alignment, to set correct goals, and to allocate resources effectively.

The first part of a Staff Engineers job is to help provide that information. That might be through prototyping software to inform what is possible or the tradeoffs of taking different approaches. That might be through having an in depth knowledge of technical constraints, historical decision making, and business domain that the manager can query. That might be through seeing patterns with bugs or inefficiencies on the team and surfacing them. That might be through staying abreast of larger industry trends and thinking about how they apply to your team's software.

It's ultimately about removing unknowns so the manager can negotiate effectively on the teams behalf when setting goals and create a plan that will be successful to achieve those goals.

The second part of a Staff Engineers job is to help make sure those goals are met. That might be through solving complex issues when they arise in development. That might be through directly contributing code to projects that are behind because effort was underestimated. That might be through building frameworks to make the whole team more productive. That might be indirectly through setting an example for other team members to follow or consciously influencing team culture. That might be through picking up responsibilities for an overworked manager like coordinating between different teams or helping the team organize tasks. That might be teaching and up-leveling team members. That might be through providing a second set of eyes from a different perspective to the manager about how the work is going.

Unlike line engineers who are evaluated on if they completed the work assigned to them at a satisfactory level, Staff Engineers like managers are evaluated on if the team shipped the agreed upon software on time or not. But the levers they have to pull to achieve those results are different.

At least that's my take on the role and why I think it's not the path everyone should pursue.

I feel like the job and the skillset required to do it well are sufficiently different for it to be a different path that you need to consciously decide you want to go down.

I feel like once you reach Senior Software Engineer, you can stay there forever. There is no longer an automatic 'next' level you're trying to get prompted to.


just want to say, this is the most comprehensive, eloquent, and succinct description of the Staff role I have seen put to page.

Now do principal and distinguished.

Principal - the same but directors and VPs are his best buddies. Distinguished - the same but the founders, C suite and the board are his buddies.

> I have long encouraged engineers reporting to me to view the transition to Staff Engineer as not a promotion but a role change similar to the change of transitioning into being an engineering manager.

Does this imply that becoming a manager is also "not a promotion" in your organization?


At a lot of places, sr. engineer and early engineering manager are same pay band, making it a parallel move rather than a "promotion".

At the risk of being obtuse, depends on what your definition of “promotion” is…

I’d classify the dimensions as:

- Compensation - obvious one. May vary by org

- Authority - are you officially allowed to give orders? Hire and fire?

- Respect and influence- in your org, do people specifically want EMs to be active in areas ICs are not, like strategy, etc. varies widely.

- Alignment with personal Career goals - some people hate management-type duties - so for them, this EM title change would be “not a promotion” to them

I’d say EM is a promotion in some of those ways and it varies a lot by org for sure.


Yes - becoming a manager is a role change; strictly not a promotion.

There is also the alternative to accept, like companies exponential growth doesn't last forever, and maybe one should be happy where they are instead of pursuing growth paths that will ultimately make them unhappy while getting more money they cannot ever spend, every day thinking why go to the office.

Personally, I am happy to die as IC, having tasted management related roles.


People forget this a lot. Yours truly has seen this thought slip .. is more really more?

> The most direct way is becoming an engineering manager.

After 30 years of engineering experience, I tried to transition from engineer to engineering manager, and I hated every minute of it.


I'm 19 years into my development career. I've been promoted to some sort of manager position twice. Currently, I'm 7 years into a management role. I don't hate every minute of it; but I sorely miss every minute I'm not coding.

I don't personally agree with the idea that senior is basically the end point of writing high level code. Perhaps it's just a difference in terms but I think of seniors at the high end of their capacity as being able to release high quality features. But if I needed a whole new app greenfielded, would I trust a senior to not only get the job done, but execute at a high level, with a clear vision, clean design system, beautiful code base, all the right choices of libraries, following all the best practices, linting, style, etc? Of course not.

To me, a staff engineer can deliver that application at that level, and can lead senior engineers in maintaining and enhancing it.

We also consider a level above that, the principal engineer, who is primarily focused on higher level and longer term thinking and less about individually jumping into tickets and features. They re-envision the entire approach to implementing the business logic and scale the business in ways that seniors are mostly helpless at. They do work through others much more, and I do personally see Staff Engineer as the highest level where you primarily are still coding day to day.


IMHO greenfield vs new features vs maintenance/tuning/scaling are different skill sets, not level dependent per se. Plenty of junior engineers can spin up a reasonable greenfield app, and plenty of staff/principal engineers never have had to.

The way I look at it is that levels only make sense within an organization that is big enough that a hierarchy is needed to scale. At that point staff+ IC levels are needed because you want purely technical people on the same pay scale and influence level as managers to counteract the incentives of empire building that can corrupt the entire architecture and lead to a Dead Sea effect of engineering talent if left unchecked.

From this perspective most staff+ work is in some way generating influence and impact across multiple teams and individuals. Outside of certain specialties and specific R&D roles I think it’s pretty hard to justify staff leveling on purely technical work.

Of course different companies calibrate levels differently, and they’re all subject to level inflation, but that’s my feeling for a traditional Google L6.


In my opinion, there is absolutely no way a junior / SWE1 could greenfield an app by doing anything other than following a youtube tutorial or similar step by step guide, and would have basically no understanding of the decisions made throughout. They would have no real experience with style, linting, no good opinion on libraries, no knowledge of accessibility, security, usability, nothing. They would end up with a basic 'hello world' application that would likely fall apart before you could even get your business logic in there.

If you have a SWE1 that can literally just greenfield an entire application and do it at a very high level, then they are a unicorn / 10X developer operating at a ~SDE4 level already.

I personally do not think the average SDE1 can meaningfully contribute to a quickly moving and efficient team. By the time they are even able to contribute regularly, they are SWE2/mid in my book.

I do have much less experience in giant beaurocratic slow moving organizations so I don't have an opinion on how all of that rigmarole works, I'm speaking more to highly focused small teams delivering at a high level quickly.


Sure, someone that is an entry level programmer will not have deep technical knowledge, that's not what I was trying to say though. My point is that levels only make sense in organizations that are big enough that tech leadership can't directly assess and compare ICs work because there's too much going on for any one technical expert to assess. Smaller organizations sometimes cargo cult leveling systems because it helps their ICs resumes and give a sense of progression even though the organizational problems that are the raison d'etre for staff+ levels don't exist at that scale.

To say it a different way: consider hobbyist developers who have spent a lot of time developing technical skills. These folks will tend to be very good at creating greenfield apps, and depending what they do, they may also have technical chops that are applicable to large companies as well. So they may be able to be hired as L4 or L5 (Google leveling) just based on technical chops. L6+ will be tough though, unless they have very deep specialist knowledge, because the most common L6+ work is about using technical knowledge to achieve outcomes that depend on navigating multiple teams and stakeholders in a way that the solo dev never has to deal with.


I concur. It was a eye opening experience to move into management and staff/prin levels after research. The focus was very much more on "doing through others" rather than "doing yourself". For me this felt unnatural. If someone had warned me prior, I'm not sure I'd have made this jump. I'm happily now doing direct RnD again.

For me if your a principal and you're only doing through others your either not looking at it right or doing it wrong. For basically everything I do, I ask myself the question: is this something that I should be doing directly, or something that other people should be doing, or something I should coach people up on doing train them, or build an organization around or whatever. In many cases I will build an organization and it will take 5 to 10 times longer than if I did it myself. But it keeps going for years after I move on to something else, as opposed to stopping the instant I stopped working on it.

What I say to a ton of mentees as they mature into staff/pe, is the important thing is to always figure out what is the highest leverage thing you could be doing. if it's coding, code. if it's writing a doc to explain to other people why other people should be coding, write a doc. if it is slowly nursing junior engineers through a multi-year arc that you could do in a week, maybe that's what you need to do tho I'm seconding guessing that one. But you definitely shouldn't be hanging up the keyboard as a tech ic.

Also as of this week at 9 years at a company, I have now shipped code in almost every language the company uses, and on all but: salesforce, an actual prod sagemaker model (all local prototypes), jira workflows, and SAP.


Same. Working indirectly saps my life force. Maybe some day in the future, but I'm about 80-85% hands-on nowadays. Seems right.



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: