BACKGROUND IMAGE: iSTOCK/GETTY IMAGES
The Agile Manifesto is a proclamation that articulates four key values and 12 principles that its authors believe software developers should use to guide their work.
The document, formally called the "Manifesto for Agile Software Development," was produced by 17 developers during an outing on Feb. 11-13, 2001, at The Lodge at Snowbird ski resort in Utah.
The developers, who called themselves the Agile Alliance, were seeking an overhaul of the software development processes that they saw as cumbersome, unresponsive and too focused on documentation requirements.
According to agilemanisfesto.org, the online home of the proclamation, the developers' stated goal was not anti-methodology, but rather "to restore credibility to the word methodology."
It further states: "We want to restore a balance. We embrace modeling, but not in order to file some diagram in a dusty corporate repository. We embrace documentation, but not hundreds of pages of never-maintained and rarely-used tomes. We plan, but recognize the limits of planning in a turbulent environment."
Development of the Agile Manifesto
The Agile approach to software development is defined by its commitment to creating software incrementally. 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 is in contrast to the traditional approach to software development, a method 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 these types of waterfall approaches, 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.
Discover the effects of the Agile software development process.
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 much more quickly and responsively than traditional waterfall methodologies.
However, Agile hasn't been without its critics, and some fault it as being overhyped. Some charge that 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.