Okay - so you're "doing the ‘Agile' thing" with your software development. How about your development environment? Are all the tools in your development environment truly practical?
Does your environment effectively leverage Open Source efforts and Open Source-friendly offerings and vendors?
Do the tools in your environment "work and play ‘nice' with others" without consuming too much time, money and effort to make it that way?
Do your tools fit the needs of most of your development projects without each project having to "reinvent the wheel" with substantial scripting and customizing (or all using different tools for the same function)?
At first glance, Matthew Doar's Practical Development Environments (PDE) looks too good to be true. How could it possibly cover all those tools and subjects with such breadth and depth, and in a practical manner no less? But this AMAZING book delivers on that promise! It really does cover the entire
Advertisement
lifecycle of development environment tools for version control, build management, test tools, change/defect tracking and more. My previous favorite work on this topic was the Pragmatic Programmer's Pragmatic Project Automation (PPA), but no more.
Practical Development Environments will help you to decide:
What you really need to support your software development and what your environment must do
Which tools (including both Open Source and commercial tools) to use and how reliable they are to meet these needs for their projects
Each chapter of the book considers a different category of tools (version control, build management, testing, tracking, documentation, release engineering). Requirements management and document control are noticeably missing from this list, most likely because the focus of the book is on environments for small-to-medium sized projects and smaller projects and teams are often much less formal in their need for those kinds of tools.
Each chapter covers important tool evaluation and selection criteria for its category, along with some good & bad ideas, and annoyances for the various development scenarios it supports. Both open source and commercial tools are discussed along with numerous comparisons, and much more detailed information about a wide variety of Open Source tools and Open Source-friendly vendors, such as the following:
Build Tools: make, GNU Autotools, Ant, Maven, Jam, SCons
Test Environments: xUnit (including JUnit), DejaGnu, SilkTest
Tracking Tools: Bugzilla, GNATS, FogBugz, JIRA, TestTrack, Different Server Technologies
It's too bad that Wiki tools weren't evaluated as well, since they often make up part of an agile development environment (especially Wiki implementations tailored to development functions like Edgewall's tracking system, Trac, or the unit testing framework FitNesse).
Perhaps the best thing about the book is that it does more than just describe lots of tools and evaluation criteria. It also discussed setup, administration and support of these tools. Best of all, it provides a TON of highly practical insights and lessons learned about the how to successfully make use of tools to do good project communication, tracking, version control, building and testing. So it is not just about what makes a good tool. It is also about what makes for good process and sound practice. This is evidenced by coverage of subjects like:
Project setup, branching, merging and labeling tips and pitfalls (including naming conventions).
Build states, dependency management, recursive vs. inclusive "make", and common build problems (such as long builds) and what to do about them.
Common testing problems tackled with testing tools.
Common bug-tracking issues like tracking a bugfix across multiple releases and/or multiple products, severity "inflation", overloading fields, bug history, cleaning up, and what makes for an effective bug-report.
Migrating to a new tool and/or repository.
Product and tool maintenance tasks.
Politics and people.
How tools scale to large projects and teams.
There is also no shortage of useful pointers to further information both online and in books. In fact it is difficult to come up with much in the way of criticism for this book. Some probably won't like the fact that it is mostly targeted to small and medium-sized teams and projects, and there are probably some favorite tools of yours that it didn't mention. Still, I cannot think of any other book on the topic that I would recommend more highly.
All in all, Matthew Doar's Practical Development Environments is surprisingly comprehensive in its breadth and depth of coverage of both the tools and best-practices for their effective use. It is very down to earth, common sense, and above all else practical, as its name asserts.
About the Reviewer
Brad Appleton is an enterprise SCM/ALM solution architect for a Fortune 100 technology company. He author's the Agile CM Environments blog, is co-author of Software Configuration Management Patterns: Effective Teamwork, Practical Integration, and the "Agile SCM" column in CMCrossroads.com's CM Journal, and is a former section editor for The C++ Report. Since 1987, Brad has extensive experience using, developing, and supporting SCM environments for teams of all shapes and sizes. He holds an M.S. in Software Engineering and a B.S. in Computer Science and Mathematics. You can reach Brad by email at
This e-mail address is being protected from spam bots, you need JavaScript enabled to view it