Electronic Review of Computer Books

[ ERCB Home | New | Catalog | Feature | Brief | DDJ | Letters | Links | Search ]

[an error occurred while processing this directive]

Vital Statistics

Title Agile Software Development
Author Alistair Cockburn
Publisher Addison-Wesley
Copyright 2002
ISBN 0-201-69969-9
Pages 303
Price $34.00 USA/$52.50 Canada


Agile Software Development

Agile Software Development is an introduction to lightweight software development philosophy, thought, and recommended practices. From the inside front cover:

Agile software development centers on four values identified in the Agile Alliance's Manifesto:

The development of Agile software requires innovation and responsiveness, based on generating and sharing knowledge within a development team and the customer. Agile software developers draw on the strengths of customers, users, and developers, finding just enough process to balance quality and agility.

It is obvious to every one connected to software development that most projects don't succeed, though few actually fail. The heavyweight processes attempt to remedy this with some flavor of "Big Design Up Front", getting each step complete and perfect before venturing to the next. This approach has some success, but it often produces more paperwork than working software. Much of it focuses on not making any mistakes and intermediate work products with complete and unambiguous specifications. Unfortunately, often the results are obsolete before the next phase is complete. Agile methods focus on people and communication that is good enough to proceed.

The former is like waiting for GPS to be invented, the scouts to get detailed maps to the printers, and hardcopy in hand before proceeding. The latter is like saddling up the mules as soon as the scouts return with verbal reports of a week's worth of route. If you are trying to get this year's harvest of perishables to market over the mountains, the heavyweight approach fails miserably.

Much of this book is about communications, particularly informal, as-needed communication. Much of the recommended practices are how to shorten feedback loops between people (e.g., pair programming, housing the entire team including customer/user representatives in one room), between program and programmer (test-first development, fully automated regression tests), between past and future (refactoring and barely sufficient documentation), and project and process (process reflection and process adaptation).

What I remember from my first reading was the insights and ideas. On second reading, what strikes me is how much of this is about people (how they think, work, fail, and succeed), communication ("warm" personal forms like face to face meeting and "cool" impersonal forms like paper documentation), and community (co-located teams). Also notable is what is not here - there are no forms, templates, checklists, or cookbook procedures.

I've worked in chaotic development groups (e.g., entry level people left to implement the rushed design left behind by the core of experienced designer who could see the impending death march). I've also worked in a SEI CMM Level 5 organization (the commemorative coffee mug was its most useful artifact). I appreciate the balance agile methods are advocating. And the explicit recognition that one size doesn't fit all. The author covers how to tailor the sample methodologies to larger, smaller, and more critical projects.

He also covers how the various methods work out in practice. He admits being surprised how well pair programming (two programmers side by side in front of one terminal) is accepted. My experience with it is limited, but I find it effective. I also find it tiring, like meetings. This may be because I need quiet time (certainly true of meetings) or because of the difficulty of the task (we only used it on problems that defeated a solo programmer). Programmers enjoy success as much as anyone else and pair programming leads to success.

Chapter 6 is "The Crystal Methodologies", a family of sample methodologies to be adapted for each actual project. Three samples are presented: Crystal Clear (6 project members and non-critical), Crystal Orange (40 people), and Crystal Orange Web (50 people and ongoing development). None of these have enough ceremony (reviews) for life-critical applications. The Crystal Clear description fits on a page and a half:

There is only one team, seated in one office of in adjoining offices.

The roles needing separate people are

One of of those people may pick up the assignment of being project coordinator. Someone will be the business expert, and either one of many people will share the role of requirements gather.

The senior designer-programmer is the key person on the team. The other designer-programmers may comprise some mixture of novice and medium levels, depending on what the senior designer-programmer and the problem can support. Hiring people who know their jobs well helps.

The policy standards are that

The policy standards are mandatory, but equivalent substitution is permitted as would be the case if Scrum work scheduling , XP, or Adaptive Software Development policies were used.

The work products that are produced include:

The following are left as "local matters," to be set and maintained by the team:

Crystal Clear does require project documentation to be created. Just what that documentation consists of is not spelled out by Crystal. That is left as a matter of local judgment. The combined team must decide how to present design notes to future team members.

The most important tools the team can own, besides a compiler, are these:

You should be able to cost-justify several printing whiteboards on any project, based on just the time that people save in typing design documents and meeting summaries and in lost communication cost when people do not copy down whiteboard contents.

The techniques used by individual roles is left entirely to the discretion of the individuals

Substitution of elements from similar methodologies is permitted. For example, the team could decide to use Scrum or DSDM's timeboxing and dynamic prioritization policies, Scrum's daily stand-up meetings, pair programming from XP, and so on.

Reflection about Crystal Clear

Crystal Clear is the most tolerant, low-ceremony, small-team methodology I can find that still works.

It contains those elements claimed by my interviewees to be the cause of their success:

The printing whiteboard has proven more valuable than any of its higher-tech replacements, with the possible exception of the newest generation of whiteboard-capture software (www.pixid.com). People usually start a discussion thinking it won't be worthwhile to record. They discover after their discussion that it would be good to have a record of it.

Crystal Clear provides a place to fall back if you try, and give up on, XP. Any part of XP can be substituted for Clear, because XP meets all Crystal Clear standards except for documentation. If you move from XP to Crystal Clear, you will have to add documentation. I don't think you can get any sloppier than Crystal Clear and still plan on having a better-than-even odds of completing a project successfully.

Developers who have been following the debate around Extreme Programming (XP) and other agile methods should not have much trouble following this outline. One interesting point is that XP is a high discipline method. Crystal Clear is lower discipline, but higher ceremony (the documentation). Most existing development organizations will have established practice for "local matters".

This isn't a big book, 270 pages with appendices. The Crystal Methodologies are helpful, but a vocabulary for discussing software development is more valuable for developing top-notch teams.

Who is this book for? Obviously software developers. Not so obviously, their managers. In fact, it may be more important that the technical leads and the project manager read and agree than the individual programmers. This is a book about the organization of software development, more than about the tactics of programming.

Who is this not for? Beginning programming students and entry level programmers. And lone wolf programmers - the lightest weight methodology (Crystal Clear) is targeted at six developers and explicitly requires at least four separate people. Maybe people who are satisfied with their existing process and are building very large or life-critical systems and intend to stay there through retirement. However, I think there is much here that they could use.

This book reads well the second time around, especially the early sections on ways of looking at software development. There are some deep ideas here that reward multiple readings to uncover all the layers.

Alistair Cockburn (pronounced like Coburn) is co-editor of the Agile Software Development Series. Jim Highsmith is the other co-editor. There are bits of his in this book. A friend just put Highsmith's Agile Software Development Ecosystems in my hands and I am looking forward to reading it.

-- Jeffrey Taylor (jeff.taylor@ieee.org)


Table of Contents


Quick Rating

Readability Star Star Star HalfStar
Originality Star Star Star Star
Organization Star Star Star Star
Accuracy Star Star Star Star
Consistency Star Star Star Star
Depth Star Star Star Star
Timeliness Star Star Star Star
Editing Star Star Star Star
Design Star Star Star HalfStar
Overall Value Star Star Star Star

Explanation of ERCB rating scale:
No stars = unacceptable
1 Star = marginal
2 Stars = average
3 Stars = above average
4 Stars = exceptional


Copyright © 2003 Electronic Review of Computer Books
Created 1/24/2003 / Last modified 1/24/2003 / webmaster@ercb.com