December 01, 2005
The Agile Edge: How Agile Are You?Scott W. Ambler
Just claiming the moniker doesn't make you an agility expert: Mix and match these seven elements to create a unique solution that works for your project.
Every few weeks, I run into someone who vehemently claims that agile development doesn't work. This individual always has a story about an "agile project team" in his organization that failed miserably; therefore, agility is just a bunch of hooey and everyone should return to the heavy process we've all known and loved for years. After a few minutes' discussion, I invariably discover that the team in question really wasn't doing Extreme Programming (XP), Scrum or whatever process they claimed to be followinginstead, they were embroiled in some form of code-and-fix hacking. Because the individual didn't know the difference, he honestly thought that the team was agile.
The challenge is that agility is situationalwe clearly need reasonable criteria to quantify it. For example, a large team spread out among several locations can still be agile, but it must do more up-front modeling and documentation than a smaller, colocated team. Team size, location and documentation practices are not definite determinants of agility. But what is?
Evaluating Agility
Stakeholder Who?
Testing Is Your Friend
This approach offers two important side effects. First, by running a regression test, agile programmers can show that their software actually fulfills the requirements they've implemented to date. Second, the unit tests form detailed design documentation that's up-to-date, accurate and useful.
Most agile teams develop a full regression test suite for their acceptance tests, often using the FitNesse framework. This enables them to capture acceptance tests in a form of structured English from which running code is generated (FitNesse currently works for Java and C#). The acceptance tests are treated as first-class requirements documentation because they define criteria your system must fulfill. Having acceptance tests and unit tests do double duty as both test and modeling artifacts reflects the practice of single sourcing information: Store information only once in the most appropriate place possible, thereby reducing your development and maintenance workloads. Despite claims of agility, the absence of significant testing efforts is clearly a sign that the team isn't as agile as it may claim. It really works!
Agile teams produce working software on a regular basis, as it's the only valid measure of progress for a software development team. Even in the first week of a project, it's reasonable to see some working software. Throughout the project, any programmer on the team should be able to build and then run the entire system from his development sandbox. With each iteration (typically a week or two in length), the team adds an appropriate amount of working functionality to its overall system, showing regular and measurable progress. This is often very different than the "earned value" approach taken by teams claiming that delivery of requirements specifications or architecture documents is an accurate measure of progress. How many teams have you seen deliver such artifacts, only to fail to produce a working system at the project's end? Traditional "earned value" sounds more like "justified bureaucracy" to me.
Hello, Version Control
Change Is Good
So, even when teams work closely with their stakeholders and are test and quality infected, they must still produce working software, keep their project artifacts under CM control, and embrace changing requirements. While these practices let teams make concrete progress throughout the life of a software development project, two more criteria make a team truly agile.
Automation, Meet Responsibility
Finally, agile teams should take responsibility for their actions. Even with an agile approach, project teams can fail, but you shouldn't hear "but my part worked" from anyone. The team succeeds or the team failstogether.
How agile are you? Forget the grandiose claims on both sidesit isn't the talk, it's the walk. Given your specific situation, if you're as agile as possible and strive to enhance agility when you can, you're agile enough.
Scott W. Ambler is a Canada-based software process improvement (SPI) consultant, mentor and trainer with Ambysoft Inc. He has written several books and is a regular speaker at software conferences worldwide.
| ||||||||||