Pragmatic Project Automation


Author: Mike Clark

ISBN: 0974514039

Publisher: The Pragmatic Programmers

Reviewed by: Dean Wilson

Pragmatic Project Automation is the third in the Pragmatic Programmers starter kit trilogy (so far...) of books. As it is also the first one not written by Dave or Andy the first question is, does it live up to the high standards set? The answer is a very strong yes. While the first two books in the series increased the developers workload (using CVS and writing unit tests) the third installment focuses on pushing the work back to the machine.

This slender, six chapters totalling 161 pages, book provides a whirlwind tour of the benefits and technologies behind the essential and most useful automation available during software development. Starting with the story of a development shop that has done automation right, and provides an informal case study, we then move on to one step builds, scheduled builds, push button releases, software installation and deployment issues and finish up with how to monitor your system.

It's worth mentioning the subtitle of the book, "How to Build, Deploy, and Monitor Java Applications", while many of the principles presented in the book are language agnostic the technologies covered focus heavily on available Java tools such as Ant, JUnit, Log4J, CruiseControl and Groovy; a passing nod is given towards the .NET equivalent where one is available. As an aside if you use a language that doesn't require compilation some of the examples will seem extraneous but a number of the steps, such as project directory structures and automating the install, are still relevant.

Despite the size this book covers a wide range of topics and tools, from using eXtreme Display devices such as build controlled lava lamps and two page monitors to a brief introduction to the NSIS installer, Ant and Groovy the useful snippets are packed in and the inspiration flows thick and fast.

While the books scope is great the depth isn't as hot. As you'd expect from a book covering so much the individual coverage ranges from a short working example to a cursory look at how the tool could be used. The value of this isn't to be underestimated however, considering this is part of a starter kit there is a fair chance the ideal readers won't have come across these tools and even concise coverage may be enough to whet their appetite for more.

On a less technical note the occasional contributed story also helps push home the fact that these techniques are used in the real world, they're not just for ivory tower environments.

The ideal audience for this book seems to be inexperienced Java coders, these are the people that will gain the most from this book. For less grizzled developers using .NET or a dynamic language the implementation examples will be less useful than the principles reducing a short read even further. For the more experienced readers the book is most useful as something to hand out to new team members. For people working on OpenSource Java projects reading this book should be required before any code is released. Your users will thank you for it.