This is a collection of software engineering and engineering management books that I have read and would recommend to others.
- 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.
- Staff Engineer: 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.
- EMPOWERED - the book describing how and why empowered teams power the most innovative tech companies. My experience at Uber matches that of the book. My only regret is I could not read it earlier. Read my longer review here.
- Building a Career in Software: 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.
- Software Engineering at Google. 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: Proven Strategies for Getting Up to Speed Faster and Smarter. 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: The Classic Guide to Writing Nonfiction - 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.
- The Coding Career Handbook: 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: a short and sweet book, with good inspiration from prolific software engineers (Kindle version, ePub version)
- The Standout Developer: 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 from Spotify software engineer Emma Bostian is 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, Second Edition: 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 (you can also buy from Manning). A great intro, or refresher for all the algorithms that you'd likely need to use at a tech company.
- Cracking the Coding Interview 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 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 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: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems. 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 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 (also on the publisher's site). 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 - 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 - 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 - 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 - 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.
- EMPOWERED - 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.
- Become and Effective Software Engineering Manager -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 - 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 Goal - 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 - 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 - a novel on empowerment, teamwork and breaking down the hierarchical structure. All of it taking place onboard a nuclear submarine (really!).
- The Phoenix Project - a novel inspired by the Goal, this time playing inside an enterprise in 2010.
- Radical Candor - 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 - 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 - 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. (Note: I also send a newsletter on engineering, tech leadership and distributed systems once a month).
- Software Lead Weekly by Oren Ellenbogen, VP of engineering at Forter. Five articles per week on technology and leadership. 23,500+ readers.
- Level Up from Pat Kua, Chief Scientist at N26. 15-20 interesting links on leadership, tech, organisations and processes.
- The Weekly Hagakure by Paulo André, previously director of engineering at Hello Fresh. A weekly newsletter with 3 article, 2 video, and 1 book recommendations for technical leaders - and the occasional longer-form thoughts.
- High Growth Engineering by Stephen Whitworth, senior engineer at Monzo. One issue per week, with a deep-dive on a practice used at high-growth tech companies. Previous issues discussed static analysis, engineering proposals and scoping your work.
- 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.
- Software Weekly. The newsletter accompanying the Software Engineering Daily podcast, curated by Abdallah Abu-Ghazaleh. A recap of top episodes for the week and another 10 interesting picks on software engineering and architecture.
- 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.
- Software Engineering Daily - longer technical interviews on technical topics.
- 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.
Note: As an Amazon Associate I earn a small amount from qualifying purchases.