Agile was envisioned in February 2001, when seventeen software professionals met at a distant ski resort in Snowbird, Utah. Besides skiing, they also spent some time reflecting upon how the core principles of Agile should be defined, and how Agile should be used for software development purposes. Although these professionals were coming from varied backgrounds, and they had their subtle differences, they all had one thing in common. They shared a common objective of uncovering better ways to develop software, and help others do the same. Even while their opinions differed as to what Agile principles ideally ought to be like and include, they agreed upon some common values which formed the base of the Agile manifesto
The manifesto for Agile software development includes four main values.
- 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 software development manifesto principles
The Agile software development manifesto includes twelve principles.
- The highest priority is to satisfy the client, or the customer, by delivering valuable software to him or her on a sustained and consistent basis.
- Be open to changes in the product design or requirements – even late in the development process – and incorporate those changes into the project.
- Deliver working product feature releases on a frequent basis, ranging from a week to even months, through the product development cycles, with a special emphasis upon shorter product releases.
- The client and stakeholders should collaborate daily and work together with the development team during the project.
- The project should include motivated individuals. They should be given a conductive environment and all the support to develop the project. They should also be trusted to “get the work done”.
- The most effective and efficient way to convey or share information is through face-to-face interactions.
- The main objective is to deliver working software features. The success of the project should be “measured” on the basis of how frequently, and how many product features are delivered to the client.
- The development process should be consistent and regular. Every team member should maintain a constant “pace” at all times.
- Continuous attention should be paid to technical excellence and sound project design.
- The Agile process should be simple and straightforward so it can be easily followed.
- Best architectures, sound product designs, and requirements should emerge from self-motivated and self-organizing teams.
- The team should constantly reflect upon how to improve its working and find new ways and means to complete the project in time, and in a successful manner.