There can be a lot of misunderstanding and different opinions about what the expression “agile” really means. When used in the context of software development, many people refer to it as a “methodology,” others say it’s a “framework” and still others consider it a “philosophy.”
In fact, principles and methodologies that are considered “agile” were already existed before the word “agile” was used to describe them. However, the word “agile” became an expression used for a variety of techniques, philosophies, values and principles that were described as part of the Agile Manifesto.
What is Agile Manifesto?
In February 2001, group of 17 innovators in software development gathered in Snowbird, Utah, to discuss adaptive software development. The leaders were experts in a variety of software methodologies that were iterative and considered “simple” in comparison to the traditional waterfall methodology.
The leaders wanted to describe principles that would allow the development community to have more autonomy and less bureaucratic unnecessary burden.
Though the group did not create a new methodology, it came to consensus on the value statements, and documented them in what is called the “Agile Manifesto”:
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.
This simple manifesto reminds leaders that there is a need for balance. Above all, the Agile Manifesto reminds us that people are at the heart of successful software development. And this is the foundation for the agile methodology.
The authors of the Agile Manifesto agreed upon 12 principles on which the manifesto was based:
1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable solutions.
2. Welcome changing requirements, even late in the solution delivery lifecycle. Agile processes harness change for the customer’s competitive advantage.
3. Deliver working solution frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
4. Customers and the people doing the work must work together daily throughout the project.
5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
6. The most efficient and effective method of conveying information to and within a team is face-to-face conversation.
7. Working solutions are the primary measure of progress.
8. Agile processes promote sustainable solution development. The sponsors, IT professionals, and users should be able to maintain a constant pace indefinitely.
9. Continuous attention to technical excellence and good design enhances agility.
10. Simplicity–the art of maximizing the amount of work not done–is essential.
11. The best architectures, requirements, and designs emerge from empowered self-organizing teams.
12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
13. One size does not fit all teams when it comes to practices and frameworks.
14. Don’t be afraid to change / challenge processes.
These principles do not necessarily spell out the steps to an agile methodology, but rather are characteristics that are found in software methodologies and techniques that are now described as agile.