The following post is an excerpt from a chapter we have authored in an upcoming book “The Encyclopedia of Software Engineering” to be published by Taylor and Francis.

How are Agile Methods Different?

Agile processes operate from a different set of guiding principles than traditional software development processes. In order to achieve success, most traditional processes rely upon such principles as locked down requirements, detailed estimates and plans, separation of duties, phase-gate signoffs, strict change control, and a linear development model. In problem spaces where requirements do not change much and where the solution is well understood, this linear process can be quite effective. In a nutshell, traditional methods are great at hitting fixed targets. But in problem spaces where requirements do change often, and where the solution is not fully understood in advance, and where systems must adapt to an ever-changing reality, Agile is often a better choice because Agile processes are designed to hit moving targets. But managing such projects requires a different set of tools because hitting moving targets is a different set of skills with a different underlying science.

What does Agile look like at the Team Level?

Agile processes are relatively simple ones from an algorithm standpoint. By cycling through this simple process repeatedly, the team will, in a very short time, typically within a few months:

• Implement many of the highest priority requirements
• Get highly valuable software feedback in the form of testing defects, usability assessment, user and stakeholder comments
• Get highly valuable architecture feedback in the form of performance tests, security tests, scalability tests, etc.
• Determine the suitability of build and test tools and environments
• Develop a strong interaction with each other and with the customer

How Do Customers Benefit?

After several iterations, the customer has software that has been demonstrated to work. Often, customers will choose to take an early delivery, because even though not every requirement has been completed, there is great value in what the team has already accomplished. This surprisingly simple process is remarkably effective. It has been used successfully in a variety of vertical markets such as large scale insurance processing, banking, mortgage processing, embedded software development for electronics, military applications, and a variety of other areas.

A key difference between agile methods and traditional plan-driven analytical approaches is that Agile methods utilize iterative, empirical feedback cycles to generate information for analysis; this provides richer input for analysis and subsequent product modification. Iterative solutions are routinely used in mathematics, engineering, and other disciplines with great effectiveness, and Agile applies them to the problems of software development. But iterative approaches operate on a different set of principles and must be managed differently from traditional methods.

More on this topic in the next post….