Who's a Staff Engineer?
As a Staff engineer, you’re a leader, without necessarily being a manager:
You lead a major area of work, like the frontend, mobile or backend. Or all the third-party integrations and APIs.
You work as an architect, taking responsibility for the overall architecture of your area.
You take on problems that are ill-defined in engineering, product and UX aspects, and work cross-functionally to progress despite ambiguity.
You may assign work to team members.
You estimate projects, and help in better planning, including evaluating technical feasibility of proposed product ideas. You may make counter-proposals like “I can do what you want, which will take a month, or this other thing, which isn’t the same, but takes a week.” You may generate new product ideas.
You track the progress of the project you’re working on, and communicate that periodically and transparently to all stakeholders in writing. Communication should be at the right level of detail. For example, your salesperson may not care to know that you switched to a managed high-availability Redis. She may just want to know the big picture, such as whether the project is 20% done or 80% done.
You proactively identify and handle risks, to fail fast, rather than letting a project run for a quarter and then failing.
If an engineer is blocked, you unblock him.
There’s always more work to do than there is time, so you prioritise.
You handle both the urgent and the important. An example of an urgent problem is something that may cause a production issue next week. An example of an important problem is technical debt. You flag both kinds of problems without being asked to, and before they become crises.
In addition to technical matters, you also either solve or flag to your manager process problems, like sprint tasks not getting completed, or certain reviewers becoming bottlenecks, or too many bugs going to production.
You share knowledge: you document things, both personally and by encouraging others to. You conduct tech talks periodically to spread knowledge. You conduct brainstorms on various topics. You help newcomes become productive.
Coordination
You got to where you are in your career by focusing on your work. You took on something major, focused on it, got distractions under control, and got it done. You helped others, but you were primarily focused on your work. You may not be aware of all the work going on in the team, or how it’s going.
But once you reach a certain point in your career, whether as an Staff Engineer or Manager, the switch flips. The things that made you successful so far are not the ones that will make you successful in the future. It’s no longer about optimising your own work.
Junior engineer == thinks about his work.
Staff engineer == thinks about team’s work.
Mindset
Being a Staff Engineer is not just about skills. It’s also about mindset:
Taking the initiative to flag things that are important but being left undone.
Understanding what the business goals that the team is trying to achieve. For example, is the overall goal of the engineering team to increase the scalability of the system? Or is to improve the quality of the user experience? You need to understand the company’s goals, and work towards them, rather than doing what you consider good engineering but isn’t aligned with the company’s priorities.
Not making commitments you know you can’t keep, because you’re pressurised to.
Always keeping your manager informed, including of problems. Imagine you delegated two projects to two people. One person summarises his goals at the beginning, then gives you weekly updates on the project. When there’s a serious problem, he brings it to your attention. When there’s a minor problem, he makes a decision himself. When the project is done, he informs you. By contrast, you don’t hear from the second person for weeks. When you ask, he says he didn’t even put the plan into effect yet. You tell him to put it into effect, which he does, but then again doesn’t give you updates for a month. When you ask him about the status, he says the project has been stuck for a while. You re-iterate that he should keep you informed, and you find that he keeps telling you minor details. The project never gets done. Every sprint, he keeps telling you that it will be done this sprint. But it never gets done. If this was your experience with these two people, who among the two would you pick for an important project next time? By the same logic, your manager should never be unpleasantly surprised about your work. Manage up.
What A Staff Engineer is Not
A Staff engineer is not merely the best engineer, one who writes the most code or the best code. It’s no longer about individual brilliance, like retreating to your cave for a few weeks, coding 24x7, and coming up with something revolutionary.
A Staff engineer is not a scientist or a researcher who comes up with novel technologies.