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.
What does this mean?