Reading List


This is a list of some books I’ve enjoyed or found useful, grouped roughly by subject. It is by no means conclusive. This list was most recently updated on March 15, 2020.

Software Engineering

  • Working Effectively With Legacy Code by Michael C. Feathers - More than any other, I wish I had read this book earlier in my career. It’s packed with advice on interacting with existing systems in the real world. Occasionally, I hope you’re fortunate enough to be able to build something new from (almost) scratch with the best principles you’re aware of, but for most people, most of their career will be spent modifying or interacting with systems that other people wrote in the past - legacy code. This book gives strategies for understanding, refactoring, testing, and expanding such codebases. It includes guides for common questions or problems you may encounter such as “It Takes Forever to Make a Change”. The guidance it gives has been directly applicable to projects I’ve worked on everywhere I’ve worked.

  • The Effective Engineer by Edmond Lau - There are many books on so-called “soft skills”, but this is among the most compact and best I’ve found. It’s fairly short (200 pages) but stays focused on the skills essential to make yourself efficient and a good team member. Many of the techniques it discusses are things that took me years to learn.

  • Peopleware by DeMarco & Lister - A great treatise on what makes great software teams work and what can make them fall apart, backed by real world examples. The chapters are short enough to pick up in a few minutes, but filled with enough information to re-read or reflect upon.

  • The Algorithm Design Manual by Steven S. Skiena - If you’re rolling your eyes at an algorithms book, I can’t blame you. There are any number of reference books that will give you specific algorithms for solving problems and give you the math of how to prove them correct. This is not those books. Skiena’s text is an excellent overview of a wide range of problem sets - graph theory, strings, numerical problems, and more. Instead of giving you specific algorithms to solve problems, Skiena focuses on what kinds of problems these abstract ideas can be applied to and what existing libraries package solutions to them for you. It includes stories of working with actual customer problems and how they were solved or optimized, and gives you a number of important tools to determine what algorithmic approach you should take when presented with a problem. Despite owning a number of algorithm texts, this is the only one I’ve found it worth the time to read cover to cover.

  • The Design of Everyday Things by Donald A. Norman - Excellent insight into how real people use things. The lessons are applicable to hardware, software, and anything that is designed. Observing a usability study where real people try to use your work is often very humbling and insightful. This book will help you gain an understanding of how to approach UI design.

  • Showstopper! by G. Pascal Zachary - Stories from on the ground during the development of Windows NT. A great example of real engineering teams at work and a time capsule into a point in history.

  • Designing Data-Intensive Applications by Martin Kleppmann - The best guide to the technologies and design patterns that go into large applications I’ve found. Also the perfect primer for any system design interview questions.

History

  • Apollo: The Race to the Moon by Charles Murray & Catherin Bly Cox - There are a number of wonderful books out there talking about the experience of the Apollo astronauts in the space race. This book focuses on the rest of the people behind the project - the engineers who designed and built the technology and the managers who worked to keep things on target and on schedule. It’s not only a wonderful story, it’s full of excellent project management examples and advice.

  • Ignition! by John D. Clark - Dr. Clark’s talent for chemistry is topped only by his talent for storytelling. This book tells the story of many years of rocket propellant development written. You don’t have to be interested in the subject matter to get a lot of enjoyment out of this one, as a perusal of quotes from the book should show. Available online for free or now back in print.

  • Collapse by Jared Diamond - This book, written years before Climant Change became a major geopolitical topic, goes into the science and history behind resource exhaustion and how it effects societies. It raises a number of important questions about the sustainability of practices in our day and age.

  • The Code-Breakers by David Kahn - An exhaustive overview of cryptography and cryptanalysis throughout history. Very large but very well done - the best general overview of the topic I’ve encountered by far.

  • Crypto by Steven Levy - The story of the battle against government encryption regulations through the 90s. A tale which is unfortunately increasingly relevant in our day but provides essential context (and is told in a very captivating way)

  • The Cuckoo’s Egg by Clifford Stoll - A tale of computer espionage and tracking a seemingly minor glitch all the way to international implications.

Fiction

Fictional reading is such a personal preference that I hesitate to even call anything out here, but a few works that have stood out to me:

  • S. by Doug Dorst and J. J. Abrams - It’s difficult to describe this book - partially because it’s three books in one with no canonical way to read it. There’s the story of the novel and the story of the people writing the notes in the margins throughout the novel. They’re intertwined but not in order, and you’re left to piece it together. This is a book that left me thinking on it long after I finished it and that rewards rereading.

  • Rememberance of Things Past Trilogy by Liu Cixin - Known most commonly for its first book, The Three Body Problem, the whole trilogy is a classic of modern science fiction. I won’t go into much plot detail to avoid spoilers, but the entire trilogy is well worth your time.

  • The works of Neal Stephenson - Neal blends deep amounts of research and detail into his books, on topics as diverse as cryptography, monetary policy, history, and more, and tells enjoyable stories at the same time. Time and again, I keep coming back to his works, particularly Cryptonomicon and Anathem.

Books