My Reading & Listening List

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.

  • 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.

Generic Books

Books that I recommend to anyone, engineer or manager.

Engineering Career Books

The books to read if you're looking to level up, as an engineer, or switch jobs.

Interview preparation:

Engineering Books

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.
  • Javascript: The Good Parts - Before this book I used to think that Javascript is "bad" or a "hacky" language. This book changed my perspective, understanding some tradeoffs and some remarkable strengths of this weakly typed language that is starting to take over the world. Note that this book is now dated - I would recommend Eloquent JavaScript (free online, paperback) or  the You Don't Know JS series instead (free online, paperback).

★★★★☆

  • 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.

Note: as an Amazon associate, I earn a small amount from qualifying purchases.

Newsletters

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).

Tech Leadership

  • 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.

Software Engineering

  • 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.

Podcasts

I frequently listen to the below podcasts.

Software Engineering

  • 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.

Tech Leadership

For more tech leadership resources (books, blogs, podcasts), see the Leadership Library by Philip Paetz.


Note: As an Amazon Associate I earn a small amount from qualifying purchases.