What is Agile?

The Merriam-Webster online dictionary defines agile as:

  1. marked by ready ability to move with quick easy grace
  2. having a quick resourceful and adaptable character

"Agile software development" is a overarching term applied to a category of iterative and incremental software development methodologies, the most popular being Extreme Programming (XP) and Scrum. Agile methodologies focus on empowering people to collaborate and make decisions together quickly and effectively. Agile projects have flexibility and adaptability built into their methods.

All development approaches based on Agile methodology have the following in common:

  1. The belief that requirements for a software product cannot be fully documented at the beginning of a project and are finalized only after multiple, iterative interactions between the customer and the product in development
  2. Very rigorous practices to insure quality control
  3. Dependence on “professionals” skilled in performing key jobs efficiently

While each of the Agile methods is unique in its specific approach, they all share a common vision and core values (see the Agile Manifesto)

History of Agile

The term "Agile" was introduced in 2001 to categorize a family of development methods that had clearly distinguished themselves from the traditional ones, primarily the Waterfall method. more

Common Elements of Agile Methods

The following are common threads that run through all Agile development methods.

Shorter, more frequent releases of working software

Release cycles with Agile are measured in weeks, not months. Each of these release cycles is called an iteration and contains a specific set of new software functions determined by collaboration between the stakeholders' and developers' representatives. This allows stakeholders to stay involved during the course of the project, to provide feedback on what they see, and to provide project course-correction if important new customer or competitive data becomes available.

Adaptability to changing requirements

Agile differs significantly from traditional methodologies in that it is designed to be adaptive rather than predictive. This adaptability means that it is unnecessary to invest in understanding and documenting every requirement up front. The focus is on near-term requirements as functionality is added incrementally. By employing this incremental approach to developing software the risk of "missing the mark" on required functionality is dramatically reduced.

Frequent communication

Agile methodologies emphasize frequent and regular communication among team members, including the development team and the extended team of stakeholders. This communication helps assure that developers are working to deliver what stakeholders want, and that issues that arise during the project can be resolved quickly and with a high level of confidence in the decisions made.