I am not yet a Staff Software Engineer, but as I am looking to grow in my career and become one, I decided to pick up the book The Staff Engineer’s Path to understand what skills I have, what I am lacking and what should I focus on to improve in order to fit better in a Staff Software Engineer role.

This post of Learning is from a technical book, so it may be a bit different than the other posts of the collection Learnings from books, as when I read technical books I focus more on the parts that I looking to learn and for my current situation.

Learnings from The Staff Engineer’s Path

Although the Staff+ Engineer role is ambiguous by default, the book brings a lot of information that is useful for current staff software engineers or people that want to be Staff+. It will help you discover and decide your role and what it means to you.

The book is divided into three parts, what the author also calls pillars, which are: big-picture thinking, execution of projects, and leveling up the engineers you work with.

As I said in the disclaimer above, it is not my intention to list everything, I am reading to get the most for my situation, and in this case, I will focus more on the behaviors and characteristics of a Staff Engineer and less on how they work. As I become closer to being one, I will re-read the book with other eyes.

Staff engineer is a leadership role

The first thing to be mindful of is that staff engineering is a leadership role. You will have the same seniority as a team manager, but instead of a managerial role, yours is more technical. With that, you are expected to the “the grown-up in the room”.

Now, “Whenever there’s a feeling of “someone should do something here,” there’s a reasonable chance that the someone is you.”

Understand the big picture

The book list three pillars of the role of the Staff Engineer and understanding the big picture is one of these pillars.

You have to be able to understand the big picture, the trade-offs, the costs, the energy required, the risks, etc. You also have to be able to avoid the local maxima problem in the company where a decision for a local team may not be the best decision for the group or company.

Also, “just as important as seeing the big picture of the situation now is being able to anticipate how your decisions will play out in the future.”

As a Staff+ Engineer, you will have to feel the ownership of the whole thing, rather than any individual part.

“At staff+ levels, you’re often trying to find a balance between seeing the big picture and accepting pragmatic local solutions”

Be a role model

As we mentioned above, you are supposed to be the “adult in the room”. You are a role model. People are going to watch not just what you say but also what you do, so you are going to be setting the expected behavior by not what you say and what you do. You will not be able to get people to follow best practices and standards if you yourself do not follow them.

“When acting as a role model, your review comments should make code and designs better, and your opinions need to be well thought out—you need to be right!”

Have high standards of quality

To be a good role model and a good influence, you need to have high standards for what excellent engineering looks like and practice it. “Your reviews of code or designs should be instructive for your colleagues and should make your codebase or architecture better”

You need to be able to understand the trade-offs and help other people understand them, be able to ask the right questions, ask for help, know what you are talking about, etc.

“Having high standards means making your work as good as it can be. Look for opportunities to put aside your ego and ask someone else to help make your work better.”

Optimize for maintenance, not creation

Creating a new product or service is very nice, but you only create it once and it will probably be maintained for years.

“Software gets maintained for much longer than it takes to create it, so don’t build code that’s hard to maintain. Make your systems observable: easy to inspect, analyze, and debug. And keep them simple”

Take ownership

As a senior person, you own the whole problem, not just when things go right. If you made a mistake, assume it and try to do better. “You’re not running someone else’s project for them: it’s yours and you don’t passively let it sink or swim.”

Leveling everyone up

You are responsible for also improving the quality of your team, not just the project or product that you are working on. You should always be noticing and suggesting projects and opportunities that would help the people that you work with grow.

As mentioned before, you are a role model so will be setting expectations in an implicit way. Leave a good example by helping others.

When reviewing code, make the comments useful, explain your thinking, and help people understand what you are proposing. When writing tests, meet and exceed the standards. When writing a proposal, write and draw the trade-offs in a clear way. Everything you do has an impact (good or bad) on your team.

You have to prioritize

You cannot handle everything! As your career, you will find that more and more things will arrive for you to do, but you are only one. “Every time you choose what to work on, you’re also choosing what not to do, so be deliberate and thoughtful about what you take on.”

Your job is to make the organization successful, not to solve all the problems by yourself. Focus on things that really need your attention and delegate things that can be done by other people. As you will be always trying to level up your teammates, you can start sharing more and together accomplish a lot more.

Write things down

As the author said, the number one tool for success is writing things down. You should strive to document most of the decisions that you make, including the trade-offs you considered and how you got to the decision in the end.

It does not need to be a fancy, 20-page document, it can be a short summary, but write it down. “Write things down. Be clear and opinionated. Wrong gets corrected, vague sticks around.”

It is supposed to be difficult

If it helps you feel better, it is supposed to be a difficult job. Learning and navigating the unknown is uncomfortable, but you are not alone. “When it gets difficult, everyone needs to know that the difficulties are expected, and that they can be overcome.”

It is normal to feel overwhelmed by a project or challenge. You are doing difficult things, “If it wasn’t messy and difficult, they wouldn’t need you.”

Choose what is important for you

When you are a staff+ engineer, probably you will be the one choosing your own work, so you need to be mindful of what type of work gives you energy and also what type of work drains your energy. You need to choose what is important for you. “Choosing projects that support your growth, reputation, and happiness can feel a little selfish in the short term, but your needs are important, and you’re the person with the most incentive to watch out for them.”

At the end of the day, you are responsible for your career and your choices. “There are a lot of options about what to optimize for. Know what’s important to you. Be deliberate.”

Favorite quotes

These are my 5 favorite quotes from the book.

“There’s only one person in the driver’s seat for your career, and that person is you.”

“Being a senior engineer means having a growth mindset and a drive to improve.”

“Your organization, codebase, and production environment probably existed before you joined them. They’ll probably exist after you move on. Don’t optimize for now at the cost of future velocity or engineering ability. It’s OK to plant some seeds that you won’t personally see grow.”

“Write things down. Be clear and opinionated. Wrong gets corrected, vague sticks around.”

“There’s a Martin Fowler quote that I love: “Any fool can write code that a computer can understand. Good programmers write code that humans can understand””.


These are my learnings from the book The Staff Engineer’s Path: A Guide for Individual Contributors Navigating Growth and Change written by Tanya Reilly.

Happy career!