Here is a list of books that I recommend to anyone interested in software development. Some of these are books that I read a long time ago so your mileage may vary, but every book here has had a positive effect on my career at some point so this list will at least give you some idea of my interests and perspective.
Product development and business
- Getting Real by Jason Fried and Matthew Linderman. For developers and non-developers alike (it's not a technical book), this book explains 37signals' product development philosophy of keeping things simple. You can also read it free online.
- Rework by Jason Fried and David Heinemeier Hansson. More 37signals philosophy on work and business. A quick read, it's a collection of one- or two-page essays such as "Meetings are Toxic" and "ASAP is Poison". You might find them obvious, or you might completely disagree with them, but I'm sure it will provoke some thought and I highly recommend it to everyone.
- Running Lean by Ash Maurya. Starting a startup? Developing a product? Here's a method to help ensure that you build only what your customers want.
General Software development
I've included books on development methodology here, but one thing that's really missing from this list is a good book on "lean" software develoment, including Kanban. I've read a few, but can't quite recommend them.
- The Pragmatic Programmer by Andrew Hunt and David Thomas. It's been a long while since I read this, but I'm sure it's still 100% relevant. 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 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. Don't let the Java examples scare you away.
- 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.
General technical theory
Technical books that offer a more general view of a subject, rather than focusing on how to work with a specific tool or technology.
- Building Scalable Web Sites by Cal Henderson. It's been quite a few years since I read this, but I expect that it's still completely relevant. 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.
- Scalable Internet Architectures by Theo Schlossnagle. This is a dense book, packed with info about building large-scale web sites. Even if you don't use any of the specific technologies that he describes, this book is worth reading for a good general understanding of scalable architectures.
- 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".
Languages and tools
I don't read technical manuals in book form much as much as I used to because it's usually not something I want to read in a linear way, beginning to end.
I also generally use the official API documentation for whatever I'm using as my main source, but here are some good reference sources that I've found to be valuable in the past:
- Pro Git by Scott Chacon. The best way to learn Git that I've found anywhere. Written by Scott Chacon of GitHub It's also available for free download or online reading.
- Introducing HTML5 by Bruce Lawson and Remy Sharp. This one won't stay timely for long but it's a great summary of changes and new technologies introduced in HTML5 and a good guide to how and when to use them.
- Ruby on Rails Guides. If you're learning Ruby on Rails this is probably the first place to go, and it's still a good reference for seasoned Rails developers.
- The Rails 3 Way by Obie Fernandez. This is a lot more in-depth than the Ruby on Rails Guides, so I also recommend this to new and veteran Rails developers.
- Peter Cooper's email newsletters. Of course I stay up-to-date in technical topics by reading a lot of blog articles and other things online. I discover a lot of it via Twitter, but a great way to keep up-to-date on new projects, technologies, and interesting articles is through these curated weekly email newsletters:
- 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.
- Ars Technica is still my favorite source for keeping up to date on the software industry in general.
Productivity and career
- Becoming a Technical Leader by Gerald M. Weinberg. "Becoming a leader is not something that happens to you, but something that you do". If you are, or want to become, a leader of technical people, then I can't recommend this book strongly enough. Heck, if you work with technical people in any way you will learn a lot from this book. Written in an entertaining style with lots of stories and personal anecdotes, it's a lot more enjoyable to read than it might sound.
- The Secrets of Consulting by Gerald M. Weinberg. If you work as a consultant or contractor this book will help make your career more successful and more enjoyable. As with Becoming a Technical Leader it's a lot more enjoyable to read than it might sound.
- Getting Things Done by David Allen. 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.
- The Passionate Programmer by Chad Fowler. A short collection of entertainingly-written recipes to inspire your (software development) career and keep yourself relevant. (I read this book in it's first edition which was named "My Job Went to India (And All I Got Was This Lousy Book)").
- Presentation Zen by Garr Reynolds. This is a very quick read and it will help you avoid inflicting "death by Powerpoint". Your audience will applaud you.
While not necessarily related to software development, here are some other things that I've enjoyed or found useful, mostly to give you an idea of what I'm interested in.
- 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 (well, it was modern-day a few years ago when it was written anyway). There's a ton of action, adventure, romance and entertainment, but also a lot of surprisingly accurate cryptography and computer security concepts.
- Mongoliad by Neal Stephenson, Greg Bear, "and friends". A "community-driven" serial novel that is being released one chapter at a time online, for reading via iPad/iPhone app, Kindle, Android app, or in a web browser. If you like reading any sort of action novels, then definitely check this out. Both Neal Stephenson and Greg Bear are well-known authors of sci-fi, and Neal Stephenson has also written some (epic!) historical novels, always meticulously researched. For this series they are actively learning western martial arts, and it shows in the excellent fight scenes.
- Brain over Brawn by Clint Cornelius. When I'm not coding or reading I like to stay healthy (in spite of all the coding and reading!), and this is the best overall book I've found about fitness, exercise, and healthy habits in general. It has a distinctly different viewpoint from anything else I've read on the subject. It's also available as a free e-book.
To see the list of books I'm interested in reading, see my Amazon wish list.