In February 2001, at the Snowbird resort in Utah, 17 software developers met to discuss lightweight development methods. The outcome of their meeting was the following Agile Manifesto for software development −
We are uncovering better ways of developing software by doing it and helping others do it. Through this work, we have come to value −
- Individuals and interactions over Processes and tools
- Working software over Comprehensive documentation
- Customer collaboration over Contract negotiation
- Responding to change over Following a plan
That is, while there is value in the items on the right, we value the items on the left more.
Twelve Principles of Agile Manifesto
Customer Satisfaction − Highest priority is given to satisfy the requirements of customers through early and continuous delivery of valuable software.
Welcome Change − Changes are inevitable during software development. Ever-changing requirements should be welcome, even late in the development phase. Agile processes should work to increase customers' competitive advantage.
Deliver a Working Software − Deliver a working software frequently, ranging from a few weeks to a few months, considering shorter time-scale.
Collaboration − Business people and developers must work together during the entire life of a project.
Motivation − Projects should be built around motivated individuals. Provide an environment to support individual team members and trust them so as to make them feel responsible to get the job done.
Face-to-face Conversation − Face-to-face conversation is the most efficient and effective method of conveying information to and within a development team.
Measure the Progress as per the Working Software − Working software is the key and it should be the primary measure of progress.
Maintain Constant Pace − Agile processes aim towards sustainable development. The business, the developers, and the users should be able to maintain a constant pace with the project.
Monitoring − Pay regular attention to technical excellence and good design to enhance agility.
Simplicity − Keep things simple and use simple terms to measure the work that is not completed.
Self-organized Teams − An agile team should be self-organized and should not depend heavily on other teams because the best architectures, requirements, and designs emerge from self-organized teams.
Review the Work Regularly − Review the work done at regular intervals so that the team can reflect on how to become more effective and adjust its behavior accordingly.