This is a collection of software engineering and engineering management books that I have read and would recommend to others.
Currently Reading / Reviews Pending
These are books I have either read and am writing up a review, or ones I'm reading.
- The Coding Career Handbook: guides, principles, strategies and tactics from code newbie to senior developer. Impressions so far: I'm impressed. Lots of fresh ideas, and food for thought.
- The Standout Developer: a complete guide for developers on job hunting, acing the interview and landing the job. Impressions so far: I like the authentic voice from Randall. I'd recommend this book for people starting out in software, or with a few years' experience.
- 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.
- 14 Habits of Highly Productive Developers: a short and sweet book, with good inspiration from prolific software engineers (Kindle version, ePub version)
- Software Engineering at Google. Impressions so far: the second part is interesting in getting a proper look into Google software engineering practices.
- But How Do It Know? - The Basic Principles of Computers for Everyone. Impressions so far: I've picked this up, reading with a friend. Most of it is a refresher on how computers work. I am interested in how simple the explanations are for something complex. So far, it's an okay book.
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: ★★★★★)
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.
- 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.
- 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.
- Software Architecture Patterns by Mark Richards - a lightweight introduction to common design patterns that can be read in one sitting. Covers layered, event-driven, microkernel, microservices and space-based architecture.
(Engineering) Management Books
These are books that helped me level up, being a tech lead and engineering manager.
- 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. See my longer book review.
- The Manager's Path - a short reference handbook for managers at all levels.
- An Elegant Puzzle - a long overdue read for engineering leads. The most hands-on read on engineering management I've picked up. See my in-detail review and book notes.
- 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.
- Scaling Software Teams by Woven Teams- stories on successes and failures from high-growth engineering leaders around the world.
- 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.
- The Ladybug Podcast - a fresh take on the industry with three women software engineer hosts. Shorter episodes every week or two.
- Software Engineering Daily - longer technical interviews on technical topics.
- DevPath.fm - conversations with industry veterans about their software engineering careers and learnings.
- Level-Up Engineering by Coding Sans. Talks with successful tech leaders.
- Greater Than Code - a podcast with frequent software engineering guests from underrepresented groups. Weekly episodes on the human side of tech.
Note: As an Amazon Associate I earn a small amount from qualifying purchases.