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.