What is Agile?
Agile methodology is an alternative to traditional project management, typically used in software development. It helps teams respond to unpredictability through incremental and iterative work in a rhythmic flow, known as sprints. Agile methodologies are an alternative to waterfall, or traditional sequential development. In Agile software development, requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. It promotes adaptive planning, evolutionary development and delivery, a time-boxed iterative approach, and it encourages rapid and flexible response to change.
It is a conceptual framework that promotes foreseen interactions throughout the development cycle. The Agile Manifesto introduced the term in 2001.
"This is not a technical approach -- it is business driven
-- John McLean, IBM VP of WebSphere Connectivity Development and director of the IBM Hursley Laboratory
"[It includes] use of continuous stakeholder feedback to deliver high-quality and consumable code through user stories and a series of stable, short, time-boxed iterations."
-- IBM SWG Carl Kessler, vice president of Worldwide Software Development for IBM's Enterprise Content Management
Agile development provides opportunities to assess the direction of a project throughout the development lifecycle through sprints or iterations, at the end of which teams present a potentially shippable product increment to all the stakeholders. The Agile team's focus is on delivering a functional product using an "iterative" and "incremental" approach. It's a paradigm shift in software development from Waterfall to Agile, where the requirements, design, development, and testing are continually revisited throughout the project's lifecycle.
An Agile team stops and reevaluates the direction of a project at end of the sprint, looking for problems and improvements -- the "inspect-and-adapt" approach. This approach reduces both development costs and time to market. Stakeholders have repeated opportunities to evaluate the releases and judge their likely success in the market.
Using Agile, companies can more easily release the "right" software, because development teams replan and reprioritize throughout the project to achieve maximum usability and value.
Just enough planning
Motivating the team
Differing stakeholder goals
Repeatable, sustainable iterations
The term "Agile" actually describes a series of related methodologies. The most famous and most commonly adopted are:
State of Scrum Report
Scrum (Ken Schwaber and Jeff Sutherland)
eXtreme Programming (XP) (Kent Beck, Ward Cunningham, and Ron Jeffries)
Kanban (Taiichi Ohno)
Crystal methods (Alistair Cockburn)
Feature-driven development (Jeff DeLuca)
Dynamic systems development method (DSDM Consortium)