Secondary title: "Two dozen programmers, three years, 4732 bugs, and one quest for transcendent software".

The author has spent 3 years closely documenting the process of developing Chandler, a Personal Information Manager. The project was founded by Mitch Kapor of Lotus fame, and funded by him for several years in order to create a PIM of his dreams. He hired programmers, designers and managers to implement the thing from scratch, which served as a very good observation target for Scott Rosenberg.

The book is one long programming "battle story" - of the kind that you'll find developers telling one another during lunch. It is a very detailed documentation of the whole software development process, from early requirements specification, through design, implementation and testing. It goes into very intricate programming details from time to time (such as a two-page comparison between Perl and Python), and hence parts of it would be incomprehensible to non-programmers. Nevertheless, most of the book can be understood by any reader that has been involved in any kind of intellectual design work.

The author tries to understand what makes software development inherently hard. It provides great and precise insights into the mindsets of programmers over a wide range of aspects, which is an interesting read. There's no doubt that any programmer with several years of experience developing software has run into at least some of the problems the Chandler team ran into. And since Chandler was (and still is) far from achieving its original goals, even after much more time and money than initially planned was invested, it also provides insights into the reason for failure in software projects.

I think it's an interesting read for programmers, because it's always educational to understand how other people ran into the same problems you ran into, and how they approached to solving them. Also, since the book is essentially a great post-mortem of a failed project, it serves as an invaluable resource for understanding what should not be done. It's always better to learn from someone else's mistakes than from your own.