I recently read Release It! by Michael Nygard. I became interested in this book when the NFJS 2008 panel cited it as their #1 suggested read. In my view, the essence of Nygard's expose boils down to two points.
- One can build software that passes QA with flying colors and still fails miserably in real environments.
- Problem in production are unavoidable. Good software will be able to navigate them as gracefully as possible.
That said, the book was mostly conceptual, offering real-world examples of how antipatterns in software development made problems that were encountered even worse. Then, he counters with patterns in stability, capacity, general design, and operations. The principles discussed are those that most developers have at least some exposure to, but those that we don't necessarily consider every day. These consist mostly of non-functional requirements that do not often enjoy QA scrutiny. The set of antipatterns and patterns is one that I think all developers, QA, and project managers would do well to consider within the scope of their current and future projects.
Overall, it was a thoughtful book. I particularly enjoyed the sections on capactiy and stability that seemed more immediately applicable to my everday life in code. I found the operations section to be the driest, but giving me opportunity to consider the plight of sys admins. I would agree with the NFJS panel and highly recommend the read.
I have included a short slide deck on the stability section with some highlights on what one might consider and what is explained in much clearer detail in the book.