None of the Staff Engineer I spoke with got there alone. Most got there either through voracious reading or building a powerful network of colleagues. This section is a collection of recommended resources.
Your Network
Almost unanimously, Staff-plus engineers' most valuable learning resources wasn't a book, blog, talk, or paper, but instead their network of peers and mentors. If you only have one hour to develop yourself as an engineer, your best bet would be building a network of people in similar roles.
If you're looking for a Slack community, #staff-principal-engineering
in the
Rands Leadership Slack
is a fairly lively room.
What do Staff-plus Engineers do?
- Being a principal engineer at Skyscanner by Nicky Wrightson
- Defining a Distinguished Engineer by Jessie Frazelle
- How I operated as a Staff engineer at Heroku by Amy Unger
- Not all engineering leaders are engineering managers by Tanya Reilly
- The Nuts and Bolts with Tanya Reilly
- On Being A Principal Engineer by Silvia Botros
- On Being a Senior Engineer by John Allspaw
- Staff Engineering by Sam Kleinman
- Staff Software Engineer Responsibilities by David Xiang
- Thriving on the Technical Leadership Path by Keavy McMinn
- What's a senior engineer's job? by Julia Evans
- What a Senior Staff Software Engineer Actually Does, Part 1: The Role and My Tasks and Part 2: The Mindset and Focus of the Role by Joy Ebertz
- What does Staff level mean at GitLab? by Charlie Ablett
Becoming a Staff-plus Engineer
- Becoming a Staff Engineer – Interview with Kristina Fox, Staff iOS Engineer at Intuit by Kaya Thomas
- On becoming a senior technical leader by Jesse Pollak
- On Mid-Career and Managers by Ryn Daniels
- How does one become a Staff Software Engineer at Google? on Quora
- The Engineer/Manager Pendulum by Charity Majors
- Things to Know About Engineering Levels by Charity Majors
Operating as a Staff-plus engineer
- Being Glue by Tanya Reilly
- Computers can be understood by Nelson Elhage
- Effective Mental Models for Code and Systems by Cindy Sridharan
- "I Wouldn't Start From Here." How to Make a Big Technical Change by Tanya Reilly
- Migrations: the sole scalable fix to tech-debt by Will Larson
- On Mid-Career and Team Dynamics by Ryn Daniels
- Surviving the Organisational Side Quest by Tanya Reilly
- Systems that defy detailed understanding by Nelson Elhage
- Team Objectives by Marty Cagan
- Technical Decision Making by Cindy Sridharan
- Technical Research and Preparation by Keavy McMinn
- The Behind-the-scenes Work of Tech Leadership by Jean Hsu
- Understanding Project Management Will Improve Your Developer Job by Daniel Na
- What Does Sponsorship Look Like? by Lara Hogan
- Where to Start by Keavy McMinn
- Design Docs, Markdown and Git by Caitie McCaffrey
Technical Specifications
- A practical guide to writing technical specs
- Design Docs at Google
- Design Docs, Markdown, and Git
- Documenting Architecture Decisions
- How to write a better technical design document
- Technical Decision-Making and Alignment in a Remote Culture
- Writing Technical Design Docs
Engineering Strategy
- A Framework For Responsible Innovation
- How Big Technical Changes Happen at Slack - Several People Are Coding
- On Drafting an Engineering Strategy
- Defining a Tech Strategy
- Delivering on an architecture strategy
- Stepping Stones not Milestones
- Achieving Alignment and Efficiency Through a Technical Strategy
- The difficult teenage years: Setting tech strategy after a launch by Anna Shipman
- Learning to have an engineering vision
Examples of engineering strategies:
- Run less software by Rich Archibold
There are also many great resources on other facets of strategy as well, for example, Marty Cagan's series on Product Strategy.
Books
Although I've found that many folks don't read too many books, when I asked Staff engineers for their most valuable resources, they inevitably mentioned a personal mentor or a book. They had blog posts and tech talks they might mention related to a more specific problem, but they were most changed by this larger, more papery format.
Some books which were recommended:
- A Philosophy of Software Design by John Ousterhout
- Accelerate: Building and Scaling High Performing Technology Organizations by Forsgren, Humble, and Kim
- Becoming a Technical Leader: An Organic Problem-Solving Approach by Gerald Weinberg
- Building Evolutionary Architectures by Ford, Parsons, and Kua
- Escaping the Build Trap: How Effective Product Management Creates Real Value by Melissa Perri
- Good Strategy Bad Strategy: The Difference and Why it Matters by Richard Rumelt
- High Output Management by Andy Grove
- The Manager's Path: A Guide for Tech Leaders Navigating Growth and Change by Camille Fournier
- The Mythical Man-Month by Fred Brooks
- The Phoenix Project by Kim, Behr, and Spafford.
- The Passionate Programmer by Chad Fowler
- The Pragmatic Programmer by Hunt and Thomas
- Resilient Management by Lara Hogan
- Software Design X-Rays: Fix Technical Debt with Behavioral Code Analysis by Adam Tornhill
- Thinking in Systems: A Primer by Donella Meadows
If you're looking for, even more, recommended book lists abound, including my own at Irrational Exuberance's Best Books.
Talks
The Staff-plus engineers I've chatted with have generally mentioned giving talks as more valuable to them than listening to talks, but there certainly are some excellent talks out there. Cindy Sridharan (Twitter) is the best source of amazing talks, in particular, her write-ups of Best of 2019 in Tech Talks, Best of 2018 in Tech Talks, and Best of 2017 in Tech Talks.
Papers
Relatively few Staff-plus Engineers are avid readers of Computer Science papers. However, most are familiar with a handful of foundational papers, and the small subset who do spend time reading papers tend to get quite a bit out of it.
If you aspire to join the category of frequent paper readers, there's no better place than Adrian Colyer's the morning paper, which will send you a summary of a computer science paper every weekday. If you're more interested in getting some foundational exposure to some well-known papers, first read one of How to Read an Academic Article by Peter Klein or How to Read a Paper by S. Keshav, and then jump into this list of recommended papers:
- Dynamo: Amazon's Highly Available Key-value Store
- On Designing and Deploying Internet-Scale Services
- No Silver Bullet - Essence and Accident in Software Engineering
- Out of the Tar Pit
- The Chubby lock service for loosely-coupled distributed systems
- Bigtable: A Distributed Storage System for Structured Data
- Raft: In Search of an Understandable Consensus Algorithm
- Paxos Made Simple
- SWIM: Scalable Weakly-consistent Infection-style Process Group Membership Protocol
- Hints for Computer System Design
- Big Ball of Mud
- The Google File System
- CAP Twelve Years Later: How the Rules Have Changed
- Harvest, Yield, and Scalable Tolerant Systems
- MapReduce: Simplified Data Processing on Large Clusters
- Dapper, a Large-Scale Distributed Systems Tracing Infrastructure
- Kafka: a Distributed Messaging System for Log Processing
- Large-scale cluster management at Google with Borg
- Mesos: A Platform for Fine-Grained Resource Sharing in the Data Center
Probably the best place to find high-quality papers to read is Papers We Love, which also run meetups to discuss papers. A few other resources are the ACM SIGOPS Hall of Fame Award list and Irrational Exuberance's paper collection.
Other nice things
As I did the research for these resources, I found some other pieces that didn't quite fit anywhere above, but which I think are good and worth looking at nonetheless:
- Testing in Production, the safe way and Testing in Production: the hard parts by Cindy Sridharan
- A decade in review in tech by Cindy Sridharan
- Boogeyman Problems by Dan Na
If you find more, please send them my way!