Dreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software is a book about the creation of Chandler, an email/calendar/todo list that works on Windows, Mac, and Linux. It starts by talking about how Mitch Kapor came up with the idea for the product and decided to fund it as an open source project and takes it through three years of development. It does a good job of explaining technical decisions made along the way and capturing the spirit of a lot of hackers.
What the book is really about is why software is so hard. Time and time again the people on the project would dramatically underestimate the amount of time it would take to complete features – indeed, it took basically three years before they had a “dogfood” worthy release (one that they could use themselves everyday – this is known as “eating your own dogfood”). Because the scope of the project was so large to begin with, it took a long time to really nail down what it was going to do and how it was going to do it.
Software development is hard – very hard, and the book does a pretty good job of explaining why that is. The techniques that we have now work reasonably well for smallish projects but just aren’t very well suited for large ones. (see Virtual Case File, Windows Vista, etc.) This is not unlike when we first started building bridges – many collapsed due to poor design, but eventually we figured out how to do it well. Of course the problem with software is what the author dubs Rosenberg’s Law: “Software is easy to make, except when you want it to do something new.” and its corollary “the only software worth making is software that does something new.”
I enjoyed the book and suspect that even non-programmers would find it illuminating.