Award-winning Top 25 JUG!

Book Reviews

This book review was submitted by a DenverJUG member as part of the Book Review Program.

BOOK DETAILS

Pragmatic Project Automation
Author: Mike Clark
Publisher: Pragmatic Bookshelf
Publish Date: July 2004
Pages: 176
ISBN: 0974514039
Publisher's Book Description

Review Date: August 2004

 

REVIEWER

Alex Vasconcelos has spent the past 7+ years developing software, 5 of which as a consultant for a company in Pittsburgh, with clients all over the U.S. He has developed enterprise systems using C++ and Java, and technologies that range from CORBA to J2EE and Web Services. Since December 2003, he has lived in Colorado Springs, where he works for MCI as a hands-on team leader for a group of Java developers.

REVIEW

"Pragmatic Project Automation" is the third book in a series about different aspects of the software-development life cycle published by The Pragmatic Programmers, LLC. The other two books are "Pragmatic Version Control: with CVS" and "Pragmatic Unit Testing: In Java with JUnit."

Although the classic "The Pragmatic Programmer" by Andrew Hunt and David Thomas (Addison Wesley) shares a similar title with "Pragmatic Project Automation," and the authors of the former are the founders of the Pragmatic Programmers, "The Pragmatic Programmer" is not one of the three books in the Pragmatic Bookshelf. Pragmatic Project Automation is a well-written and easy to read book. Although the book contains script samples and Ant scripts for the technical audience, it also will be readable by managerial audiences. Technical reader will enjoy the sample scripts and the step-by-step explanations on each line of the scripts provided. Non-technical readers will be able to follow the concepts and ideas of new processes to be implemented in their development shops.

The concepts presented represent some of what has become "best practice" in Java development. Namely, building with Ant, using source-code control (using CVS in this case), writing unit tests (using JUnit), using Log4J for logging, and automating as much of these processes as possible.

Although I have used the concepts presented in the book on several projects in my former life as a consultant, the ideas still seem fresh and at no point did I feel like I was wasting time reading this book. I also feel that for the uninitiated in these concepts, the book presents the material in a gentle-enough way that picking up the ideas and putting them to use is a matter of copying the suggested procedures to one's project and diving in deeper where more knowledge is needed.

The book covers the development process from the build through the release process. As the title indicates, automation is the word of the hour. And as I was told once in my career: automation is the only way for a company that sells software. The more automation you have, the less you leave to chance and human errors, and if you are in the business of software development, you can't afford to leave things to chance. There are suggestions on how to set up your source directory tree and how to schedule your builds using readily available tools in Unix and Windows environments. It also highlights the importance of using source control throughout your development process. The concept of letting the computer proactively communicate to you the status of your builds and tests is a nice one, and one that is not used in many shops. Finally the book walks you through deploying and releasing your final product to your customers, presenting you with options on how to address troubleshooting issues that may arise.

Pragmatic Project Automation is filled with script samples that are explained in detail and can easily be modified to fit your individual needs. One very nice aspect of this book is that it uses tools that are available in the operating system or available free on the Internet. The book provides the download sites for all the tools used. One aspect of the book that left me a little disappointed, even though I do understand the reasoning, was where it dealt with the references provided. Throughout the book, the other two books in the Pragmatic series are provided as the references for both JUnit and CVS. Although I have not read the other two books, and I am sure that if they are at same level as this one they are nice references, I felt that other books should have been mentioned. For example, "JUnit in Action" by Vincent Massol (Manning Publications) is a very good and comprehensive book on JUnit. Also books from O'Reilly on these subjects are top-notch references. I believe these books are not mentioned because they are direct competitors.

Overall I have a very positive opinion of this book. I think it is an excellent book for those interested in improving their software-development process. I am looking forward to taking a look at the other books in the series to improve my skills as a software developer/designer.