This is a collection of software engineering and engineering management books that I have read and would recommend to others. See also my list of 100 tech book recommendations for software engineers, EMs and PMs.
Note that none of the below links are affiliate links or sponsored. See my ethics statement on the lack of such links.
- Currently reading
- Generic Books
- Engineering Career Books
- Engineering Books
- (Engineering) Management Books
Currently Reading / Reviews Pending
These are books I have either read and am writing up a review, or ones I'm reading.
- Software Engineering at Google by Titus Winters, Tom Manshreck & Hyrum Wright (free). Impressions so far: the second part is interesting in getting a proper look into Google software engineering practices.
Books that I recommend to anyone, engineer or manager.
- The First 90 Days by Michael D. Watkins. When joining a new company, your perception is shaped massively in your first 3 months. It takes a lot of work to change that perception later. This book is a practical guide on how to be conscious in focusing on getting up to speed, faster. (My rating: ★★★★★)
- On Writing Well by William Zinsser - writing is an undervalued skill for software engineers and this book helps grow with simple and pragmatic suggestions. (My rating: ★★★★★)
Engineering Career Books
The books to read if you're looking to level up, as an engineer, or switch jobs.
- Building a Career in Software by Daniel Heller: a recent book from my former colleague at Uber, Dan Heller. An excellent book to navigate how to grow at tech companies. I like the opinionated and concise advice Dan presents, across a variety of topics.
- The Staff Engineer's Path by Tanya Reilly. A book I recommended after reading it, writing: “If you're a senior engineer wondering what the next level is, a staff-level engineer or a manager of staff engineers, this book is for you." Read an excerpt of the book.
- Staff Engineer by Will Larson: Leadership Beyond the Management Track. The best resource so far on what it's like to get - and perform - at the above senior engineering levels. A very good read.
- The Coding Career Handbook by Shawn Swyx Wang: guides, principles, strategies and tactics from code newbie to senior developer. I'm impressed. Lots of fresh ideas, and food for thought.
- 14 Habits of Highly Productive Developers by Zeno Rocha: a short and sweet book, with good inspiration from prolific software engineers.
- The Standout Developer by Randall Kanna: a complete guide for developers on job hunting, acing the interview and landing the job. I like the authentic voice from Randall. I'd recommend this book for people starting out in software, or with a few years' experience.
- De-Coding The Technical Interview Process by Emma Bostian. A fresh take on navigating the tech the interview process, tailored for frontend engineers. She wrote the book after she found Cracking the Coding Interview to be too Java/backend-focused. The book comes with 1, 2 and 4-week learning plans as well. A great book to start with.
- System Design Interview - An insider's guide by Alex Xu: I've so far not seen good book resources to prepare for the systems design / architecture interview. This book from Alex Xu is the most promising one as of yet. Read my full review here.
- Grokking Algorithms by Aditya Y. Bhargava. A great intro, or refresher for all the algorithms that you'd likely need to use at a tech company.
- Cracking the Coding Interview by Gayle Laakmann McDowell is a classic to prepare for the data structures and algorithms interviews. The author, Gayle, trains large and small tech companies on how to do coding interviews well: she did this at Uber, where we made changes following her help.
- I wrote a longer article with advice on how to prepare for the systems design and coding interviews.
These are books I learned a lot from, as a software engineer.
- A Philosophy of Software Design by John Ousterhout. There are few books like this, that discuss software design in a simple and approachable way, while leaving the reader novel and practical concepts to use. Read my longer review here.
- Clean Code by Robert C. Martin. A reference book of coding best practices/patterns for a healthy codebase with some case studies. I read this book after having about five years' professional coding experience. It changed how I approached code readability, testing, and maintenance.
- Designing Data-Intensive Applications by Martin Kleppmann. The most practical book I've found so far on distributed systems. It covers the different large scale concepts - both those that I've gone through in this post on distributed systems - together with real-world examples.
- Working Effectively with Legacy Code by Michael Feathers. Legacy code has no test and is not written to be testable. Touching it this sphaghetti code somewhere breaks the system. And to refactor safely, we'd need to have tests first... but where to start? This book gives practical suggestions
- C# in Depth by Jon Skeet. C# is the language I probably understood down to the nitty-gritty details. Just when I thought myself of being an expert - knowing all that is to know on memory allocation, garbage collection, LINQ - I read this book. It made me realize how many things I did not know. I found the parts on how C# implemented generics under the hood and the sections on covariance and contravariance especially memorable.
- Release It! Design and Deploy Production-Ready Software by Michael T. Nygard. A useful read for more experienced engineers and those wanting to improve architecture and devops skills on designing and operating reliable systems. The content is excellent, but the book is not designed to be read in one sitting.
- Site Reliability Engineering: How Google Runs Production Systems by Jennifer Petoff, Niall Murphy, Betsy Beyer & Chris Jones - Hardcover & (free) online book - a good overview of SRE at Google. For those who worked at places with oncall, much of the first part of the book will likely be very familiar. Keep in mind that your mileage might vary: what works at Google scale, might not be the ideal fit for your use case.
- Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries by Krzysztof Cwalina & Brad Abrams. An eye-opening view on considerations going into building a widely used public API or reusable library. While the book focuses on the .NET framework, many of the conventions apply to maintainable and reusable components, in general. This book had an outsized impact on me as I read it when I was a mid-level .NET developer. The book is a bit dated, but its contents are still valuable.
(Engineering) Management Books
These are books that helped me level up, being a tech lead and engineering manager.
- An Elegant Puzzle by Will Larson. A long overdue read for engineering leads. The most hands-on read on engineering management I've picked up. Apart from the book, the Recommended Papers section in the appendix list excellent engineering reads. Read my longer review here.
- Become an Effective Software Engineering Manager by James Stanier. A hands-on book for people transitoning to management, starting at a new company or looking to make more of an org-wide impact. Read my longer book review here.
- The Manager's Path by Camille Fournier. A concise guide for managers, from tech lead, through line managers, managers of managers, all the way to CTO. Very much recommended: I have gone back to re-read parts of it several times.
- The Making of a Manager by Julie Zhuo. A guide in going from being a first-time manager to becoming a senior manager in an organization. A refreshingly honest tone, and all the experiences and stories come directly from Julie Zhuo, who worked her way from individual contributor to VP of Design at Facebook.
- EMPOWERED by Marty Cagan. The book describing how and why empowered teams power the most best product companies like Tesla, Netflix, or Apple. My experience at Uber matches that of the book. My only regret is I could not read it earlier. Read my longer review here.
- The Goal by by Eliyahu M. Goldratt & Jeff Cox. Written in the '80s, yet a timeless novel on what management is about, may that be a manager of a team, an organization or an industrial plant.
- The Five Dysfunctions of a Team by Patrick Lencioni. A hard to put down story about a company struggling and how the leadership team comes together under a new leader, doing small things that end up making big differences.
- Turn the Ship Around by L. David Marquet. A novel on empowerment, teamwork and breaking down the hierarchical structure. All of it taking place onboard a nuclear submarine (really!).
- The Phoenix Project by Gene Kim, Kevin Behr & George Spafford. A novel inspired by the Goal, this time playing inside an enterprise in 2010.
- Radical Candor by Kim Scott. The definite book about giving good and candid feedback - and a very useful read for new(ish) managers. The book is a list of ideas around the theme of caring personally and challenging directly.
- Not everyone gets a trophy by Bruce Tulgan. Tips and observations on how to manage the Millenial generation better. Some of these I found insightful, some were less of a surprise. Read my longer review here.
- First, Break all the Rules by Marcus Buckingham & Gallup. Gallup interviewed thousands of high-performing teams and managers and found a dozen of things each of these teams had in common. While the insights are good, the content itself was quite dry for my taste.
Curated newsletters are my preferred way to stay up to speed with what's new and relevant on software engineering. I've tried out many newsletters and here are my favorite ones, which I keep reading though every week.
- TLDR Newsletter by Dan Ni. The most interesting stories in tech, science and coding summarized, daily.
- ByteByteGo Newsletter. Explaining complex systems with simple terms. Written by Alex Xu, author of The Systems Design Interview.
- The Pointer. A reading club for software developers, curated by Suraj Kapoor, fullstack engineer, product person and former VC. 10-15 links with a concise tl;dr; for each article. 7,000+ subscribers.
- Programming Digest, curated by Jakub Chodounsky, CTO at Hatch. One email per week, 5 links of programming, big data, architecture, development processes and databases. 5,500+ subscribers.
- iOS Dev Weekly. A high-quality newsletter on everything iOS and Swift with lots of easily digestible content. 40,000+ readers.
I frequently listen to the below podcasts.
- The Changelog - high-quality conversations with engineers, leaders, innovators in the tech world.
- The Ladybug Podcast - a fresh take on the industry with three women software engineer hosts. Shorter episodes every week or two.
- DevPath.fm - conversations with industry veterans about their software engineering careers and learnings.
- Greater Than Code - a podcast with frequent software engineering guests from underrepresented groups. Weekly episodes on the human side of tech.
- Scaling Software Teams by Woven Teams- stories on successes and failures from high-growth engineering leaders around the world.
- Level-Up Engineering by Coding Sans. Talks with successful tech leaders.
- Tech Lead Journal - discussions from software engineering leaders, with a focus on Asia and Europe.
- Decisive Moments for Engineering Leaders - a weekly, 30-minute podcast on insights to become better engineering leaders.
- HBR IdeaCast - an episode per week on a management topic featured in Harvard Business Review.
- Programming Leadership - a weekly podcast to help great coders become skilled leaders.
- The Heartbeat - a longer episode every few weeks, asking one question to a leader about their biggest leadership lesson learned.