What Does it Take to be a Staff Engineer?

#62・
1.26K

subscribers

83

issues

Subscribe to our newsletter

By subscribing, you agree with Revue’s Terms of Service and Privacy Policy and understand that Mastering JS Weekly will receive your email address.

What Does it Take to be a Staff Engineer?
By Mastering JS Weekly • Issue #62 • View online
Staff Engineer is typically the next step after Senior Engineer. It also represents the key point where you choose between being an individual contributor (IC) or an Engineering Manager.

Software Engineer / Engineering Manager titles, in broad strokes
Software Engineer / Engineering Manager titles, in broad strokes
Becoming a senior engineer is about becoming the go-to expert in one area of the code base. Depth, not breadth. Becoming a staff engineer is the opposite: breadth, not necessarily depth.
Career-ladders.dev describes a staff engineer as spending the majority of their time “scaling their own skills to help others.” In my experience, that means ensuring many senior engineers working on different projects can operate effectively while maintaining certain standards.
Staff Engineers and Open Source Projects
Working on open source projects is a great way to level up your career in more ways than one. Contributing to an open source project is a great way to level up your expertise in one part of the code base on your path to senior engineer.
Maintaining a popular open source project is the best way I can think of to practice being a Staff Engineer. As an open source maintainer, you’re responsible for determining priorities, writing documentation, and communicating with developers reporting bugs/issues. This lines up exactly with some staff engineer responsibilities:
  • Creates and maintains internal documentation for the purpose and structure of the systems they’re working on. Carefully documents processes that aren’t clear.
  • Teaches peers how to set up systems and drive execution plans for features and system improvements.
  • Proactively communicates issues and addresses necessary trade-offs. Takes ownership of issues.
It isn’t uncommon for Staff Engineers to be responsible for developer-facing initiatives internally, like building a static type checker or an analytics platform. In these cases, being a Staff Engineer is like being an open source maintainer within a company.
Staff Engineer Interviews
Staff Engineer interviews are not dissimilar from Senior Engineer interviews. There will likely be a coding exercise, and there’s less room for error on the coding exercise than there would be for a Senior Engineer. You’re expected to make short work of the coding exercises. There will also likely be culture fit interviews with Product Managers or similar.
The biggest difference is the system design interview. Staff Engineer interviews often involve either walking through a system you’ve designed, or walking through designing a hypothetical system like “how would you build your own Slack clone?”
Pro tip: be able to go beyond building a simple REST API. Have an example of a system you’ve designed that is “at scale” in terms of both complexity and number of users. For the “how would you build your own Zoom” type questions, you’ll need to talk about services, tradeoffs between different ways of communicating between services (Kafka), scalability, and durability.
Everybody is a Little Different
Tolstoy once wrote that “happy families are alike, but every unhappy family is unhappy in its own way.” With engineering careers it is quite the opposite: successful Staff Engineers run the gambit from deep technical problem solvers to de facto engineering managers without the manager title.
Open source library work can be a great way to level up into the “Solver” or “Architect” archetypes. But those archetypes are just approximations: the biggest difference between Senior Engineer and Staff Engineer is the responsibility to choose how to spend your time. Staff Engineers usually have more input on which projects they work on and what they contribute to those projects.
Most Recent Tutorials
Convert Decimal to Binary - Mastering JS
How to Determine if a Variable is an Array - Mastering JS
How to Determine if a Value is an Object - Mastering JS
Did you enjoy this issue?
Mastering JS Weekly

Pragmatic web development. No bloatware allowed!

In order to unsubscribe, click here.
If you were forwarded this newsletter and you like it, you can subscribe here.
Powered by Revue