What is Agile?

The ability to create and respond to change in order to succeed in an uncertain and turbulent environment.

What is Agile Software Development?

Agile Software Development is an umbrella term for a set of methods and practices based on the values and principles expressed in the Agile Manifesto.

Solutions evolve through collaboration between self-organizing, cross-functional teams utilizing the appropriate practices for their context.

A Short History of Agile

In the late 1990’s, several methodologies began to gain increasing public attention, each having a different combination of old and new ideas.

These methodologies emphasized close collaboration between the development team and business stakeholders; frequent delivery of business value, tight, self-organizing teams; and smart ways to craft, confirm, and deliver code.

The term "Agile" was applied to this collection of methodologies in early 2001 when 17 software development practitioners gathered in Snowbird, Utah to discuss their shared ideas and various approaches to software development.

This joint collection of values and principles was expressed in the Manifesto for Agile Software Development and the corresponding twelve principles.

Agile Alliance was formed shortly after this gathering to encourage practitioners to further explore and share ideas and experiences.

Agile Alliance continues to curate resources to help you adopt Agile practices and improve your ability to develop software with agility.

Key Agile Concepts

Below are a few key Agile concepts. You can see more in our glossary section.

User StoriesIn consultation with the customer or product owner, the team divides up the work to be done into functional increments called "user stories." Each user story is expected to yield a contribution to the value of the overall product. (see more)

Daily Meeting: Each day at the same time, the team meets so as to bring everyone up to date on the information that is vital for coordination: each team members briefly describes any "completed" contributions and any obstacles that stand in their way. (see more)

Incremental Development:  Nearly all Agile teams favor an incremental development strategy; in an Agile context, this means that each successive version of the product is usable, and each builds upon the previous version by adding user-visible functionality. (see more)

Iterative Development:  Agile projects are iterative insofar as they intentionally allow for "repeating" software development activities, and for potentially "revisiting" the same work products. (see more)

TeamA "team" in the Agile sense is a small group of people, assigned to the same project or effort, nearly all of them on a full-time basis. A small minority of team members may be part-time contributors, or may have competing responsibilities. (see more)

Milestone Retrospective:  Once a project has been underway for some time, or at the end of the project, all of the team's permanent members (not just the developers) invests from one to three days in a detailed analysis of the project's significant events. (see more)

Personas:  When the project calls for it - for instance when user experience is a major factor in project outcomes - the team crafts detailed, synthetic biographies of fictitious users of the future product: these are called "personas." (see more)

See How Agile Evolved

View the Agile Practices Timeline to see how agile approaches have evolved.