Book Review: "Release It!" by Michael T. Nygard

I just finished "Release It!: Design and Deploy Production-Ready Software (Pragmatic Programmers)" by Michael T. Nygard, from The Pragmatic Programmers. This isn't the book I thought it was when I bought it, but it's still a really valuable read. "Release It!" focuses on (and most of the author's experience seems to be) massive, web-scale e-commerce sites, generally running on Java. While on the surface it has little to offer to other worlds of software development, digging a little deeper shows ideas that are applicable across all software development.

If you're doing massive web stores in Java -- well, you've probably already read this. If you haven't I'd say this book is a must-read. Of course, my projects aren't web-scale, aren't e-commerce, and don't use Java, and to this point, haven't -- so do take my comments with whatever amount of salt you feel is appropriate.

Even if you're doing shrink-wrap software, I'd say "Release It!" has something of value for you -- it appears to be a collection of hard-won, common-sense techniques for creating what Nygard calls "cynical software" -- software that assumes that itself, and the other software it links to will all fail at one time or another, and is prepared for that failure. A number of failure modes spring to mind, but Nygard enumerates them, the anti-patterns that create them, and the patterns you can use to respond to them with exceptional clarity and obvious expertise.

In addition to being chock-full of good ideas and interesting concepts, it's also filled with entertaining war stories about various failures and how Nygard and his team responded to them. And for a systems geek, there's few more satisfying ways to spend an hour than reading about the nightmare series of cascading failures that ruined someone else's weekend.