paint-brush
9 Lessons for Engineers of All Levels from 'Staff Engineer' by Will Larson by@dhivyaam
232 reads

9 Lessons for Engineers of All Levels from 'Staff Engineer' by Will Larson

by dhivM6mMay 9th, 2023
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

Staff Engineer Will Carson recently wrote a book about the archetypes of a Staff Engineer. The archetypes are: Tech Lead, Architect, Solver, Right Hand and Right Hand. Carson shares 9 lessons he learned from interviewing 14 Staff Engineers. He says to find work that keeps you energized over work that is impactful.

People Mentioned

Mention Thumbnail
featured image - 9 Lessons for Engineers of All Levels from 'Staff Engineer' by Will Larson
dhivM HackerNoon profile picture
0-item

One of the books that caught my eye for technical development recently was the popular Staff Engineer by Will Larson.


What really drew me to the book was the in-depth interviews with 14 people that were Staff Engineers who spanned the archetypes that he discusses in the book.


For those of you that haven’t read the book, the archetypes are:

  1. Tech Lead - typically scopes complex tasks, coordinates their team towards solving a problem, and unblocking them as necessary. They also closely partner with the team’s product manager.
  2. Architect - responsible for the success of a specific technical domain within their company where the domain is complex and central to the company’s success.
  3. Solver - solves complex problems that are typically high-risk and need a clear approach.
  4. Right Hand - operates as a senior leader without direct managerial responsibilities.

9 Lessons I Learned from The Book

  1. Find work that energizes you

    Staff engineer at Stripe, Michelle Bu, talks about the importance of finding work that keeps her energized over work that is impactful. Her distinction between energized and impactful is the former is more inward-looking while the latter is more company-centric. I think at times, we feel pressure to take on the work that has the highest visibility because it will be what is easiest to call out in a promotion packet or what will stand out to senior organization members.


    However, work that excites you is essential to keep you motivated and enthusiastic. Teams or team leaders should make an effort to increase visibility for work that is not flashy but just as important such as work to reduce on-call noise, etc. I think it pays to take a look at the things you’re doing day-to-day and figure out what actually gets you enthusiastic and seeking out similar work.


  2. Be deliberate about learning

    Michelle Bu, also talks about being thoughtful about her technical gaps and being intentional about filling in those gaps by carefully choosing projects to work on. As a software engineer, it is very easy to repeat the same year, every year.


    By that, I mean you can have made little to no progress on your technical skills year after year if you’re not intentional about what you want to learn. In larger organizations, it’s easy to keep signing up to take on the type of work you already know how to do instead of challenging yourself and taking on work you think you might fail at. Whether it's learning through external courses, expanding the type of material you’re reading, or actively pursuing projects that use technologies you’re unfamiliar with, you have to intentionally get uncomfortable to grow.


  3. Be picky (if you can) about where you work

    I understand that not all of us have this luxury, but the general idea is to focus on working somewhere that will help you grow in ways that you want to and being intentional about where you’re going to get that growth. I’ve personally found that having a quarterly check in with myself and re-evaluating my current skills, what I want to gain, how I think I should grow has helped me be honest and objective with myself about my growth, and my growth at my company.


  4. Make an effort to make connections

    Make an effort to establish good relationships with peers, senior leaders with your company and people in the industry in general. This will help you in the long run when you may need to convince decision-makers to see your point of view or get buy-in for technical decisions.


    Senior Staff Engineer at Split, Joy Ebertz, says in his interview “The more senior you get, the less your job is about code.” Nelson Elhage, former Staff Engineer at Stripe, highlights that it's important to have good relationships with engineering leadership so you know what problems they perceive that you don’t perceive and you can understand what their incentives are.


  5. Cultivate a good relationship with your manager

    Bert Fan, Senior Staff Engineer at Slack, calls this out in his interview. He explains that developing a relationship with your manager where you trust one another will result in your manager handing you important projects.


    If you successfully execute on the project, it will be easier for your manager and yourself, to advocate for your promotion. In cultivating a good relationship with your manager, it is also important to be honest and open with them about what you want to do instead of just telling them what they want to hear. Remember that your manager's success depends on your success and you should be honest with them about what you like/dislike.


  6. When you notice problems, act on them instead of letting them go

    This theme was common in many of the interviews. One staff engineer said the higher up you go, the more you have to care about. The more junior you are, the more you can get away with not caring about things and assuming that it's someone else’s problem. The attitude of caring and taking responsibility, will show itself to the people around you.


    If you care about your impact and take responsibility for the effect that your code/what you do has on your product/codebase, it will show itself in your PR’s, in how you respond to Slack messages, and your in your depth of knowledge. If you don't care, then it might be a good time to dig deeper and figure out why.


  7. Follow your passions

    Acknowledge what you’re good at, what you care about and try to do more of that. We weren’t all made to churn out thousands of lines of code, or build complex architecture. However, we do each have different skills and strengths that we bring to the table which if cultivated, can do some real damage. Figure out what your strengths are and how you can apply them in the context of your role.


    Rick Boone talked about how he had always been fascinated by human psychology and behavior and his natural interest helped him excel at his role as Strategic Advisor to the VP of Infrastructure at Uber. So, figure out what you like, and how you can apply it to your role.


  8. Stay up to date

    A lot of the Staff Engineers interviewed seem to all have different resources that they learned from but some popular methods are following leaders in tech on Twitter and reading books. Some names mentioned for Twitter and personal blogs were Camille Fournier, Lara Hogan, David Fowler, Tanya Reilly.


    Some books mentioned include Radical Candor, Fundamentals of Software Architecture, 7 Habits of Highly Effective People. Depending on the type of material you like to consume; social media, books, podcasts, Youtube videos….there’s ways to stay up-to-date in the medium that you want. Spend a little time figuring out what works for you!


  9. Develop more context

    A theme that constantly came up was about how the higher up the ladder you go, the more distanced you become from the problems on the ground. Some of the ways that the leaders in the book described developing context to make decisions was paying attention to slack channels where bugs were posted, continuing to attend team standups, being assigned low priority tickets so they could still code, and finally having chats with engineers talking about what they’re working on, what problems they’re facing and what their ideal solutions would be. For engineers who aren’t managing people, its never too early to cultivate the habit of putting feelers out to know what’s going on around you.


    It's easy to get caught up in your day-to-day work bubble and the immediate concerns of your own projects. If you have the bandwidth, I’d say its never too early to start practicing the skills you need, like developing context, as you transition to more senior software engineering roles.


“We are what we repeatedly do. Excellence, then, is not an act, but a habit.”


— Will Durant