Introduction to Agile Development
The Software Engineering Institute's Capability Maturity Models (CMMs) have been a major force for software process and acquisition improvement in both the commercial and private sectors since the early 1990s. Major investments have been made by the U.S. government, its contractors, and many other organizations to make software development more consistent and reliable. CMMs provide an alternative to the "cowboy programmer" archetype.
Amid this backdrop of progress, a new trend in software development has emerged: agile development. Agile development is a collection of software development approaches that aim to build software faster and more flexibly than traditional approaches. This movement's manifesto says that it values "individuals and interactions over processes and tools."1 For organizations that have invested in a CMM, do agile methods represent the rebirth of the cowboya weed to be stamped out? Or are agile methods a reasonable way to build software in a world in which needs are changing at an ever-increasing pacea wildflower to be nurtured? Is there a home for agile methods in the organizations that have embraced the CMM?