Federal programmers get agile
Radical new approach makes software development more flexible
Agile is not the first word one might typically associate with government information technology programs, but that term is the moniker for a
radical new approach to software development for a growing number of government projects.
Pioneering practitioners of agile development say the new techniques allow them to produce better software in less time and for less cost than traditional methods, though they caution that the approach is not for everyone or for every project.
Agile development is the umbrella term for a group of related yet distinct techniques that are known by names such as extreme programming, feature-driven development and adaptive development, among others, according to James Highsmith, director of agile project management at the Cutter Consortium and author of several books on the subject.
Collectively known as light methodologies, agile approaches shed much of the baggage that slows traditional software development, such as tedious upfront requirements definitions and the need to formally document nearly everything about the process. Instead, they let programmers focus on what they are trained to do — write software.
Equally important, agile also entails — actually depends on — far more direct feedback from the customers for whom the programmers are working. At frequent intervals during the development process, sometimes even hourly, customers review works in progress and tell the programmers what is and isn't working.
This feedback helps avoid situations that can arise with traditional software development, when programmers write software based on what they think the customer wants at the project's outset. Because customers don't always know their desires, programmers deliver products months
or even years later that are built on poorly understood or outdated requirements. Agile practitioners, by definition, reject this kind of inflexibility.
"We accept and embrace change throughout the development process," said Dave Garrett,
a senior system analyst at the U.S. Army Environmental Center, who, along with his colleagues, is using a blend of agile techniques to develop software used to
support environmental cleanup missions at military installations. "We take a chunk of requirements at a time, we build to that, test along the way and then we throw it back to the customer. We allow the customers to change their minds."
Instead of lengthening the process, as one might expect would happen, the frequent customer/developer interaction results in software built correctly the first time, which eliminates time-consuming revisions, Garrett said.
"When you run into a problem with traditional development, you have to start
all over again from the drawing board, going back to the requirements phase, redesigning, recoding and retesting," Garrett said.
Garrett's team decided to try agile methods as a way to offset ever-tightening project funding and get needed software into the field more quickly. An important component of their approach is combining the agile techniques with a host of tightly integrated, automated software development tools, such as a computer-aided software engineering system.
Another agile technique Garrett's team uses, an element of extreme programming, is called pair programming. With this
approach, two programmers work together on joint tasks instead of working
independently.
At first blush, this might seem to double the programmer resources needed
to do a project. However, a study called "The Costs and Benefits of Pair Programming," by Alistair Cockburn and Laurie Williams, found that the overall programmer cost on a project rises only by
about 15 percent with pair programming. This extra cost is more than offset by, among other benefits, savings in testing, quality assurance and field support that
result from producing higher-quality
software.
In its first project using agile methods, the Army Environmental Center team shaved nearly a month and $50,000 off a six-month, $250,000 project to develop an addition to a financial accounting system, Garrett said. The team is on its second project using agile methods and is on track for similar savings. Garrett said the center's officers are impressed enough that they will allow agile methods to become the standard approach on future development projects that Garrett's team undertakes.
Agile vs. CMM
The earliest uses of agile methods date back more than a decade, but the practice has really begun to blossom in the past few years, Highsmith said. The biggest agile users have been e-commerce companies, for whom business requirements are dynamic and quick production of new Web applications is critical.
IT departments at more established companies have been slower to adopt agile methods, Highsmith said, but even that is changing as a number of large, well-known firms adopt the new techniques.
But what about government? How might agile methods that
eschew documentation and centralized planning and control fare in an environment that is highly risk-averse and thrives on well-
defined processes and accountability?
Perhaps there is no better example of this contrast than the government's growing desire to hire IT contractors that
are certified under the Software Engineering Institute's Capability Maturity
Model (CMM) rating system, which emphasizes planning, documentation and process discipline for software development operations.
Although agile techniques and CMM have been perceived as incompatible approaches, many experts who have explored
the topic find that the two methods
can coexist in many circumstances. A CMM-certified shop can use agile techniques with a set of best-of-both-worlds benefits resulting.
In fact, that is exactly what has been happening with an Energy Department project involving the deconstruction of the closed Rocky Flats nuclear weapons production site in Colorado. CH2M Hill, a subcontractor on the project handling the IT services, hired a number of new programmers for the project's CMM-assessed work process who introduced agile development techniques such as extreme programming.
"One of our objectives was to rapidly deploy software with minimal cost and maximum business benefit while still maintaining CMM compliance," said Glen Alleman, vice president of the program management office at CH2M Hill.
So far, the plan is working. In one case, the company used extreme programming to write a wireless phone provisioning application needed by the plant deconstruction team. The project took less than three months, which was half the time it took another team of programmers to write a different application of similar function and scale using traditional methods.
Alleman pointed out that the company does not use agile techniques for every Rocky Flats project, because there are cases in which extreme programming does not fit well with CMM.
That right time/right place application of agile methods is the model in the government, where the use of the new techniques is growing, particularly in defense applications, Highsmith said.
***
Agile development do's and don'ts
Do find a customer who can be as agile as your software development team. One contractor said he had to nix a plan to use agile programming when the customer balked after being told he would have to be available to review works in progress on short notice.
Don't inundate the customer with too many reviews. Agile-based projects benefit when customers have sufficient time to mull prototypes and provide thoughtful feedback to developers.
Do use agile tools to automate and accelerate as much of the development process as possible. These include automated testing
tools, configuration control tools and integrated development environments.
Don't impose agile methods on programmers who are not ready for them. One government information technology analyst said he prefers to use more senior programmers on agile projects because they have the skills and experience to work independently. Others said junior programmers can be part of agile teams but should be paired with more experienced colleagues.
NEXT STORY: DHS funds think tank