Agile emerged in the early 2000’s as an alternative to the traditional waterfall-style management that many felt was at the root of common issues such as delays and poor internal communication. Closely related to emerging methodologies such as Extreme Programming and DSDM, Agile came on the scene with the publishing of the Agile Manifesto in 2001.
The Manifesto was the result of a joint effort by a group of software developers dedicated to defining lean processes that allow for faster and more efficient development. It would be the joint effort of many lightweight methods that preceded it: Extreme Programming, SCRUM, DSDM, Adaptive Software Development, Crystal, Feature-Driven Development, Pragmatic Programming, and more.
The Manifesto and its history can still be found at the original website made by the creators, agilemanifesto.org. In addition to the Manifesto itself, which is quite short (in keeping with its ideals), they also list the twelve principles Agile development principally follows. These are:
- Customer satisfaction through early and constant delivery of useful software
- Welcome changing requirements, even late in development
- Working software is delivered frequently, with preference of weeks rather than months
- Sustainable development, able to maintain a constant pace
- Daily cooperation between business people and developers
- Projects are built around motivated individuals who are trusted to get the job done
- Face-to-face conversation is the best form of communication
- Working software is the principal measure of progress
- Continuous attention to technical excellence and good design
- Simplicity is essential
- Self-organizing teams result in the best architectures, requirements, and designs
- Teams regularly assesses how to become more efficient and adjusts accordingly
Alongside Agile development practices comes Agile Project Management – fundamentally grounded in the idea of the iterative life cycle, in which deliverables are submitted in stages throughout the project. Other key aspects of the approach include continued involvement from the product owner, and backlog evaluation. Scrum and similar methodologies were derived based on these principles.