Agile is a set of values and a related collection of methods and tools for managing and delivering projects. Agile emphasizes iterative and incremental development, close collaboration with the customer, and cross-functional teams to build working software. Based on a set of values and principles outlined in the Agile Manifesto, agile development encompasses a number of methods, tools and techniques, such as Scrum and Extreme Programing (XP).
The agile movement evolved in response to the traditional waterfall approach commonly used in large software development projects. Many view the waterfall process as document-heavy and expensive. Waterfall is based on significant, up-front planning and in completing each phase of a project in a sequence of steps before moving on to the next phases. The sequential approach used in waterfall contrasts sharply with the incremental and iterative approach used in agile development.
Agile evolved with a mindset significantly different from the waterfall approach. The core values that shape agile are outlined in the Agile Manifesto, and emphasize the following:
- Individuals and interactions over Processes and tools
- Working software over Comprehensive documentation
- Customer collaboration over Contract negotiation
- Responding to change over Following a plan
Agile efforts are also shaped by the following principles, also outlined in the Agile Manifesto:
- Customer satisfaction by rapid delivery of useful software
- Welcome changing requirements, even late in development
- Working software is delivered frequently (weeks rather than months)
- Close, daily cooperation between business people and developers
- Projects are built around motivated individuals, who should be trusted
- Face-to-face conversation is the best form of communication (co-location)
- Working software is the principal measure of progress
- Sustainable development, able to maintain a constant pace
- Continuous attention to technical excellence and good design
- Simplicity–the art of maximizing the amount of work not done–is essential
- Self-organizing teams
- Regular adaptation to changing circumstances
These values and principles guide the agile movement and the various methods and tools that have evolved, including Scrum, Extreme Programming, Crystal Clear, and Dynamic Systems Development Method (DSDM).
With its collaborative and iterative approach, agile has become widely accepted as a set of project management and development methodologies. However, several issues have emerged. For organizations already using agile, it is often a challenge to understand the true value and return on investment for implementing an agile approach. While there is great value to an incremental and iterative approach, the measures of success are usually anecdotal and qualitative. This presents challenges to the management approach and structure of many organizations and can drive behaviors that conflict with agile values.
In addition, large adopters are driving changes that threaten the agile approach by imposing requirements that conflict with agile values, methods and techniques. Organizations committed to agile methods are seeking ways to instill greater resiliency in their agile implementations.
To learn more, Contact Broadsword.