I like books. This is a non-exhaustive list of books I found enjoyable or valuable. I think you might benefit from them too.
These are mostly nonfiction and what I consider “evergreen” recommendations. For more content on books, check out posts tagged with books.
Note: Each book is linked to Amazon. None are affiliate links. I have no financial incentive to recommend anything to you.
Leadership and Soft Skills
Deep Work: Rules for Focused Success in a Distracted World: Helped me understand the importance of long periods of focused, deep work for increasing productivity and opening the doors to real problem-solving. Like a lot of productivity books, there’s some fluff to wade through. But take away the key ideas, some suggested tactics, and I bet you’ll find yourself a more productive, stronger problem-solver.
Extreme Ownership: This book, which was recommended to me by my first manager at Amazon, Paul Horvath, dramatically changed me. While it might not be for everyone – it’s filled with bravado and uses militaristic examples – the lessons in here are phenomenal. I think that this book changed how I operate at Amazon and in my life in ways that have been hard to quantify, but extremely powerful.
Reading Tip: This book has chapters organized by topic. Each chapter begins with a description of the concept, illustrated by the author’s experience as a U.S. Navy SEAL. Each chapter ends with an example of the concept in this weird, fictional business environment. Skip that weird fictional crap. As soon as you get to it, just jump to the next chapter. Why? Because the concepts are not hard to understand, and the fictional things are a drag to read, which add nothing to the conversation.
How to Measure Anything: Finding the Value of Intangibles in Business: Before reading this, I thought some things were quantifiable, and some weren’t. Turns out, everything is quantifiable. This was an eye-opening book for me, which goes along with how I like to think about software development effort estimation. Check out the companion website, which is full of great resources.
How to Win Friends & Influence People: Some people really hate this book. I don’t. I read it in my college years and, as a socially awkward geek, it helped me understand how to interact with people in a positive way. I’ll go as far as saying that it made a significant difference in my career by giving me practical tools to improve my soft skills.
How to Write a Lot: A Practical Guide to Productive Academic Writing: Writing is extremely important in my craft. It’s one of the best things tech teams can embrace, and one of the best features of working at Amazon where we’re proud of our writing culture. But, it can be hard to get started and to build the habits of writing. This book inspired me to write more. It’s filled with ideas, primarily around how to prioritize writing if it’s actually important to you, but also tactics to help get you writing more.
The Lean Startup: Read this even if you aren’t starting a startup. The thing is, you probably are in a “startup”. You just might not understand what that means. This is a classic on the idea of moving quickly to launch an MVP and then learning and adapting. Should be required reading for anyone in any business of any size.
So Good They Can’t Ignore You: Why Skills Trump Passion in the Quest for Work You Love: Makes a case that the “follow your passion” advice you’ve heard repeated as gospel the past few decades is bunk. Falling into this “passion mindset” is the same as thinking the world owes you something. In other words, if you just do something you love, you’ll achieve fantastic success. Here’s a lesson everyone should learn at a young age: the world does not owe you anything. Instead, focus on something like a craft. Applying the “craftsman mindset” helps you find new passion through dedicated work to better yourself in any given area. It’s extremely fulfilling to just be good at something, and the more time you spend in it, the better you get. The best in any domain are the ones with the most success. Fantastic book.
Sprint: How to Solve Big Problems and Test New Ideas in Just Five Days: More about process than “Leadership and Software Skills”, this book talks about how to go from idea to MVP in a week. Many developers and their teams could benefit from embracing the practices here. You don’t have to follow the process exactly, although I encourage you to try it at least once. But takeaway the concepts of moving quickly to experiment and learn. Remember: the goal is always learning first.
The Staff Engineer’s Path: A Guide for Individual Contributors Navigating Growth and Change: You’re an engineer leading tens to hundreds of engineers, but you’re not a manager. You’re expected to influence without any organizational authority. Right? If so, please take me seriously when I say you need this book. It’s like a manual for your job. Recommended to me by Avi Romascanu, I wish I had it when I started as a Principal Engineer at Amazon in 2016. Note that this book is, although by a different author, a follow-up to The Manager’s Path: A Guide for Tech Leaders Navigating Growth and Change. I haven’t read the original, but I’ve heard good things about it.
The Algorithm Design Manual: A good reference on algorithms. I think everyone in tech ought to have at least one such book.
Astronomical Algorithms: Want to compute solar positions, sunrise, sunset or other astronomical stuff? This book is a nice reference for exactly that.
Building Evolutionary Architectures: Automated Software Governance: This book isn’t great. So why recommend it? Because the ideas in it are fantastic. You should wade through the cruft here because the concepts are that important. Admittedly, I read the first edition; this link is to the 2nd edition. I can’t say if it got better. I hope it did, because these topics need a bigger audience and deserve a nice narrative.
Clean Architecture: An encyclopedia of architectural patterns. You might dislike the author. In fact, I strongly dislike most of his books. But the content here is useful and worth the price. Don’t sit down and read it all at once. Go through a pattern at a time and really absorb it, or use it as a reference.
The Code Book: The Science of Secrecy from Ancient Egypt to Quantum Cryptography: An engaging walk through the history of secrecy, from Caesar cyphers to modern day cryptography. This book is educational. But more importantly, it’s very well written. The author is an awesome storyteller.
Computer Science Distilled: Learn the Art of Solving Computational Problems: I’m a sucker for compact little reference books that summarize large domains. This is one of those, and it does very well. I’ve used this as entertainment (because I like reading this stuff), as a reference for work, and even as a tool to help devise new interview questions.
Game Physics: Eberly’s book on physics is the book on physics for game developers. It’s an approachable, complete reference. Although it’s a bit dated, the content is still supremely relevant for physics developers, in or out of games.
Hacker’s Delight: This is a wonderful book for the bit-twiddler inside you. I discovered this in my gamedev days and found a lot of applications directly to my work. In games, we cared about every single cycle and found ourselves bit-twiddling often. Now, outside of games I haven’t found as much use for it. But, it’s still fascinating to see what can be achieved with low-level computing.
An Introduction to the Bootstrap: I love this book. The bootstrap is basically what I call “doing really fancy statistics with less math and more CPU cycles”. Even if you don’t get this book, do yourself a favor and go learn about bootstrapping statistics. It’s simple and powerful.
Practical UML Statecharts in C/C++: Event-Driven Programming for Embedded Systems: This book is probably pretty dated at this point. Don’t take it literally; i.e. it’s not about UI systems or embedded systems. And definitely ignore the “UML” part. Blech! The fact is, state machines, and especially statecharts are highly useful abstractions, which remain woefully underutilized in everyday programming. I’ve used statecharts (or hierarchical state machines) to build large, complex video games in my time at PlayStation to great success. If you don’t read this book, find another way to learn about Harel statecharts and apply it to your work. Please.
Rust for Rustaceans: Rust is a language that’s relatively easy to approach, until it isn’t. Basic rust, which I’d argue you should prioritize, is pretty understandable. But advanced rust gets hairy quickly. Jon Gjengset set out to make advanced rust concepts more approachable in this book. He did very well. If you’ve got a little rust under your belt and are looking to understand more advanced concepts, run quickly and get this.
Style Guide (The Economist): There are lots of writing style guides to choose from, from the NY Times to AP to the Chicago Manual of Style. They each vary because there’s no one right style. This one is good, although probably not the best for my current normal target audience. I should probably pay more attention to the MLA Handbook or something else more technically oriented. But, you should pick one you like. Better yet, pick the one your audience will like.
Thing Explainer: Complicated Stuff in Simple Words: Written by Randall Munroe, author of xkcd, this book explains complicated topics using only the most common words in English. As a fan of his work, of simple language, and of complex topics, I find this very entertaining.