The Agile Manifesto is a document that identifies four key values and 12 principles that its authors believe software developers should use to guide their work. Formally called the Manifesto for Agile Software Development, it was produced by 17 developers during an outing on Feb. 11-13, 2001, at The Lodge at Snowbird ski resort in Utah.
The developers called themselves the Agile Alliance. They were seeking an alternative to the existing software development processes that they saw as complicated, unresponsive and too focused on documentation requirements.
According to agilemanisfesto.org, the online home of the document, the developers' stated goal was not anti-methodology, but rather "to restore credibility to the word methodology."
Furthermore, the developers express a desire to find a balance between the existing ways of development and new the alternatives. They admit to accepting modeling and documentation, but only when it has a clear, beneficial use. The developers also explain that while planning is important, it is also necessary to accept that plans change and to allow flexibility for these modifications. Overall, the Manifesto focuses on valuing individuals and interactions over processes and tools.
Development of the Agile Manifesto
The Agile approach to software development is defined by its commitment to creating software incrementally -- or in regular increases and stages. The approach offers users new versions, or releases, of software following brief periods of work. Those brief periods of work are often called sprints.
This Agile process contrasts with the traditional waterfall approach to software development, where developers typically compile the needs and requirements of the users and then build the software all at once. With these traditional methodologies, the completed project is released at the very end of the project cycle.
The Agile Alliance was seeking an alternative to waterfall model, which it described as "documentation driven, heavyweight software development processes."
Four values of Agile
The four core values of Agile software development as stated by the Agile Manifesto are:
- individuals and interactions over processes and tools;
- working software over comprehensive documentation;
- customer collaboration over contract negotiation; and
- responding to change over following a plan.
The 12 principles
The 12 principles articulated in the Agile Manifesto are:
- Satisfying customers through early and continuous delivery of valuable work.
- Breaking big work down into smaller tasks that can be completed quickly.
- Recognizing that the best work emerges from self-organized teams.
- Providing motivated individuals with the environment and support they need and trusting them to get the job done.
- Creating processes that promote sustainable efforts.
- Maintaining a constant pace for completed work.
- Welcoming changing requirements, even late in a project.
- Assembling the project team and business owners on a daily basis throughout the project.
- Having the team reflect at regular intervals on how to become more effective, then tuning and adjusting behavior accordingly.
- Measuring progress by the amount of completed work.
- Continually seeking excellence.
- Harnessing change for a competitive advantage.
The Agile Manifesto's purpose
Proponents of Agile methodologies say the four values outlined in the Agile Manifesto promote a software development process that focuses on quality by creating products that meet consumers' needs and expectations.
The 12 principles are intended to create and support a work environment that is focused on the customer, that aligns to business objectives and that can respond and pivot quickly as user needs and market forces change.
Agile vs. scrum and other methodologies
Agile, as outlined in the Agile Manifesto, is considered a philosophy, but there are other specific methodologies and frameworks that formalize many or all the ideas presented in the Agile Manifesto.
For example, Scrum is a framework for managing and controlling iterative projects where the product owner works with cross-functional teams to create a list of tasks to be done. This list is known as the product backlog.
Criticism and controversies
Agile has been broadly adopted by software development teams throughout the technology industry, as well as in enterprise information technology departments.
Moreover, Agile has been credited with making software projects more successful at meeting user, customer and business needs, and at producing software more quickly and responsively than traditional Waterfall methodologies.
However, some people accuse Agile as being overhyped. Critics say Agile doesn't work in all situations, and that the methods, terminology and culture associated with Agile could fit poorly within the cultures of some organizations and projects.
Others note that some development teams claim to have an Agile mentality when, in reality, they have simply abandoned some of the ideas of traditional development without actually embracing the values and principles of Agile.