My Staff Software Engineering Reading List
After reading Four books professional developers should read, by Phil Eaton, I was inspired to write my own engineering reading list.
Originally I thought of this as a “staff engineering” reading list, because I probably wouldn’t have appreciated these earlier in my career. When starting out, my reading was mostly about the specifics of using Ruby on Rails, HTML, and CSS. Which was great, and worked well for me.
But while the books in this list have been useful for me as an engineering leader, anybody at any level can get a lot out of them. Here they are:
A Philosophy of Software Design, by Jon Ousterhout (ISBN 13: 978-1732102200).
A pretty short book about what abstraction is, and how to make good abstractions. Even though the examples are written in C++, this has been very relevant to me for thinking about React components and design systems.
Mastery Teaching, by Madeline Hunter (ISBN: 978-0761939306).
A book about classroom teaching? Oh yes. So much of my job is teaching. Not only by instructing others, but also by presentations and documentation. Madeline’s masterpiece is full of ideas that I use every day.
The Pyramid Principle, by Barbara Minto (ISBN: 978-0960191031).
I’m still working through this one, which is about how to structure your ideas when writing or presenting. What’s nice is even though it comes from management consulting, it’s not about persuasion or influence. It’s about communicating your ideas in the clearest way possible. Communication is a large part of being an engineering leader.
An Elegant Puzzle, by Will Larson (ISBN: 978-1732265189).
A book about engineering management may seem unusual for a list of staff engineering books. I’m not advocating for engineers to take on management tasks (unless they want to). But there is a lot of overlap, and this book does a great job outlining approaches for things like managing technical migrations, onboarding, and team dynamics.
Two others that are great for specific interests are
For computer science nerds, Structure and Interpretation of Computer Programs, by Harold Abelson, Gerald Jay Sussman, and Julie Sussman (ISBN: 978-0262510875).
If using Scheme to dive in to computer science content from the 1980’s sounds like a good time, check this classic out! No other book has inspired in me a sense of wonder about computing as much as this one. On the other hand, if this sounds terrible to you, there’s nothing wrong with skipping it.
For people working on web sites and apps, Inclusive Design Patterns, by Heydon Pickering (ISBN: 978-3-945749-43-2).
I work on accessibility, so am biased towards this pick. If you work on websites or web applications, though, it’s the best I’ve found about accessibility, covering the why and how (in HTML and CSS).
Most of these aren’t actually about writing code. For experienced engineers, technical skill is important. But also a given.
We’ve gotten to where we’re at in part because of technical skill. The next level, however, also requires some more people, organization, and communication skills. These books have helped me be more effective.
What do you think about these books? Which ones have been helpful for you? Are any missing from the list? Let me know!