Reading

Here is a list of books that I recommend to anyone interested in software development:

  • The Pragmatic Programmer by Andrew Hunt and David Thomas. Absolute must-know fundamentals. Short, to-the-point, and enjoyable to read. Experienced developers should read this too, it’s a quick and easy read and even if you think you know it all you’ll probably still get something out of it.
  • The Practice of Programming by Brian W. Kernighan, Rob Pike. Also fundamentals that every programmer should know. Somewhat C-oriented, which doesn’t make it any less valuable. Well-written, in the same terse style as the classic K&R C book.
  • Pragmatic Version Control Using Subversion by Mike Mason or Pragmatic Version Control Using CVS by David Thomas and Andrew Hunt. Brief but reasonably thorough coverage of the basics of the two most popular revision control systems. Experienced developers should probably just stick with the online docs (for SVN or for CVS) if it’s only needed for reference.
  • Building Scalable Web Sites by Cal Henderson. If you develop web-based software you must read this! Again it mostly covers basics, but like The Pragmatic Programmer it’s an excellent survey of all the fundamental issues and even experienced developers will probably find it worth skimming through.
  • ppk on JavaScript by Peter-Paul Koch. Flat-out the best book on JavaScript, written by the maintainer of the excellent quirksmode.org. The book covers the fundamentals of the JavaScript language, DOM scripting, browser scripting, usability and accessability. The writing style is very clear and concise and there is a lot of interesting historical context throughout.
  • The Rails Way by Obie Fernandez. If you’re learning Ruby on Rails get this book first. If you’re developing Rails applications get this book. Enough said.
  • Database in Depth by C. J. Date. The fundamentals of relational database theory, and interesting (if not strictly practical) discussion of how SQL’s support for the relational model is “deficient”.
  • The Mythical Man Month by Frederick P. Brooks. A classic compilation of essays about software development, first published in 1975. Although still very relevant, it’s also a fascinating historical view of software development.
  • Extreme Programming Explained (2nd Edition) by Kent Beck and Cynthia Andres. Changed significantly from the first edition, this is a good overview of the ideas behind XP. Anyone who thinks they’re practicing XP must read this, it describes something quite different from a lot of the “XP” that I’ve seen practiced! Perhaps interesting for sceptics as well.
  • Test-Driven Development by Kent Beck. Good explanation by example of how to let unit tests drive your design and development.
  • Design Patterns by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. The classic book that originally introduced the idea of design patterns. This book created a language to describe techniques that were commonly used in object-oriented software design.
  • Refactoring by Martin Fowler. Another classic reference that brought a new term into common use. This book is a catalog of techniques to improve the design of existing code.
  • The Debian System by Martin F. Krafft. The most up-to-date information is online, but if you want a coherent overview of Debian-based Linux I’d recommend this book. It covers package management, security, and more advanced topics like creating your own packages. It also covers the philosophy of the Debian project.
  • My Job Went to India (And All I Got Was this Lousy Book) by Chad Fowler. A short collection of entertainingly-written recipes to inspire your (software development) career and keep yourself relevant.
  • Hackers and Painters by Paul Graham. An eclectic collection of essays on various topics including nerds, programming language design, and high-tech startups. I think all of these essays (and many more) are available online but they’re so good it’s worth owning the book anyway.
  • Founders at Work by Jessica Livingston. This is an interesting collection of interviews with founders of influential and successful technology companies. It’s quite long because it’s unedited transcripts of interviews but it’s interesting. It’s definitely required reading for anyone starting a startup.
  • Accidental Empires by Robert X. Cringely. A book about the history of the personal computer, especially one written in 1992, should not be this entertaining! But it’s incredibly enjoyable to read, even now. Perhaps that’s because Cringely trashes every one of his characters in an entertaining way, showing them as flawed and human, while still acknowledging their accomplishments and the influence they’ve had. Since it was actually written at the end of the first wave of the PC revolution, before the Internet era, it offers a different perspective on that time than a book written today. It makes a good companion to Founders at Work.
  • Dealers of Lightning by Michael A. Hiltzik. A long but interesting history of the famous Xerox Palo Alto Research Center and the people behind it. The cast includes many incredibly influential pioneers of the computer industry such as Alan Kay, Robert Metcalfe, Douglas Engelbart, etc.
  • Getting Things Done by David Allen. OK, I know this sounds like a nerdy one even compared to the rest of this list, but really the point of this one isn’t making yourself more productive it’s about lowering your stress. If you often feel you have too much to do, and not enough time to do it, here’s how to regain a feeling of control. It’s about meeting external demands with less effort.
  • Cryptonomicon by Neal Stephenson. FICTION. Take a break and read this! It’s a really fun story, or rather two stories that gradually join together into one. The first plot-line follows some cryptographers in World War II, and the second revolves around a modern-day high-tech startup. There’s a ton of action, adventure, romance and entertainment, but also a lot of surprisingly accurate cryptography and computer security concepts. If you like this one you can’t go wrong with anything else written by Neal Stephenson.

To see the list of books I’m interested in reading, see my Amazon wish list.