agile whyagile

Last modified: July 30th, 2010

Traditional software development approaches have a history of resulting in late and/or over-budget projects.  More often than not, the software systems that do get delivered seem to miss the mark by the time they finally get deployed.  As critical in the current environment, they have also proven incapable of adapting to today’s rapidly changing business demands.

Our current software world has become much more dynamic and time sensitive.  This year’s top priority project might no longer be valued by the business if released 18 months from now.  If real business value is not being delivered and/or adapted on a much more frequent basis, business efficiency, opportunity, and/or competitive advantage are significantly impacted.   The agile focus of delivering real value to the business on a frequent basis has helped transform many software development teams into highly respected, critical components to a company’s overall success.

The traditional approach of testing in quality after the fact has caused millions and millions of dollars in delays and rework.  We know that the cost of an issue in software grows exponentially the later in a software cycle it is found.  A typo caught by a compiler is far cheaper to fix than a defect found after a product is launched.  With this in mind, agile practices promote building quality in throughout the development cycle leveraging such approaches as iterative delivery, continuous customer involvement, test-driven development (TDD), emergent design, and automated acceptance testing.

In more traditional software models, there are often distinct roles and handoffs throughout the software lifecycle, leading to higher communication via documentation than through face-to-face dialogue.  This leads to a static and often inconsistent view of software requirements as well as information silos.  In agile projects, highly engaged, collaborative teams are created with a singular focus on the delivery of a quality product, not on the success of their department within an organization.  Complete transparency and visibility throughout the development cycle are critical.

At its core, agile development practices focus on the rapid delivery of business value in the form of working, tested software.  Agile uses small time-boxed units called iterations or sprints to create a frequent feedback loop that verifies that the work being completed is correct, of the highest priority, and still relevant to the market.   With each iteration, the amount of work completed is tracked and a highly accurate pattern of how much a team can be expected to deliver emerges.  Because this data is based on historically accurate information, much more predictable and realistic project projections can be made available for improving business decision making. 

 

So Why Use Agile? (ObjectMentor/Bob Martin)
Why Agile Works, Looking at the Cost of Change (Scott Ambler)
Agile software development (Wikipedia)