Architecture & System Design
How to build reliable software that works well.
- Release It! by Michael T. Nygard
- The Architecture of Open Source Applications by Amy Brown
- The Architecture of Open Source Applications, Volume II by Amy Brown
- The Performance of Open Source Applications by Tavish Armstrong
Books about best practices, code quality and professionalism. Every single one of these books is fantastic and I got so much out of them. If you don’t know which area to focus on first then start here.
- Clean Code by Robert C. Martin
- Team Geek by Brian W. Fitzpatrick
- The Clean Coder by Robert C. Martin
- The Passionate Programmer by Chad Fowler
- The Zen Programmer by Christian Grobmeier
- HBR’s 10 Must Reads on Managing Yourself
- Better: A surgeon’s notes on performance by Atul Gawande
- Code Complete by Steve McConnell
Books about specific programming languages that I enjoyed. There’s often free resources available online but sometimes it’s nice to just buy a book that takes you through many aspects of a language. Some of these books are great reads even if you’re not interested in the language specifically, as they teach you important universal concepts.
- Learn You a Haskell for Great Good! by Miran Lipovača
- Parallel and Concurrent Programming in Haskell by Simon Marlow
- Writing Idiomatic Python by Jeff Knupp
- Effective Python by Bret Slatkin
- Python Cookbook, 3rd Ed. by David Beazley and Brian Jones
- Two Scoops of Django by Daniel and Audrey Roy Greenfeld
- Fluent Python by Luciano Ramalho
- Automate the Boring Stuff with Python by Al Sweigart
- Programming in Scala by Martin Odersky
Interviews & Hiring
These books work both ways. If you’re trying to be hired as an engineer or hiring others then you can learn a lot from them.
Leadership & Managing developers
These are useful even if you’re not in a leadership position. They’ll help you understand your manager better and will make you a more effective communicator.
CompSci fundamentals, algorithms, and math
This stuff is important. Languages and frameworks come and go but the foundations remain largely static. Re-visit these every once in a while.
The best software engineering war stories around. I get inspired by reading about successful or failed software projects that others have worked on. These books let you learn from the experiences and careers of some of the best people in the field.
- Coders at Work by Peter Seibel
- FoxTales by Kerry Nietz
- Masters of Doom by David Kushner
- Postmortems from Game Developer by Austin Grossman
- Showstopper by G. Pascal Zachary
- The Future Was Here: The Commodore Amiga by Jimmy Maher
- The Making of Karateka by Jordan Mechner
- The Making of Prince of Persia by Jordan Mechner
Being able to communicate succinctly in writing is often more important than raw technical ability. Especially if you want to convince others. These books have helped me to structure my thinking and improved my English. Especially if English is your second language like it is for me this is an area you should focus on.