First, there was a few ideas rattling around in my head, then there was a blog post, and now you can buy the book.

The most difficult challenges facing most of us these days are not about making code work. That's relatively easy, compared to making code that you can work on and maintain with other people. I've tried to bring together a bunch of issues and practical solutions for writing code with a team, including defining contracts, creating good tracing and error handling, and building a set of automatic tests that you can rely on. In addition, there's a bunch in here about how to work with other developers using source control, continuous integration, etc. to make everyone's lives easier and more productive.