The term “agile” is used more and more when people talk about the project management, especially in the software development. It’s one of those fancy words that when used, make you sound smart and informed, so we often say “agile” without understanding the essence of it. So, what does “agile” really mean?
It may seem easy to imagine what “agile” means – “able to move quickly and easily” definition probably comes to mind first. But, the term “agile”, when used in connection with the project management, is not so self-explanatory and simple. The reason for this is that the “agile” is a convention – which means that a group of people (usually some kind of academic community, a team which consists of leaders in the science field, work, etc) came up with a term, a word, and gave it new meaning or expanded its previous meaning. On February 11th, 2001, seventeen people, representatives from Extreme Programming, Scrum, DSDM, Adaptive Software Development, Crystal, Feature-Driven Development, Pragmatic Programming, and others feeling the need to create an alternative to “documentation driven, heavyweight software development processes”, met and convened. These “Founding Fathers” chose “agile” to be the term that combines all the methodologies and goals of their new philosophy. On this occasion, they created the Manifesto for Agile Software Development, which was the first step toward understanding what “agile” really means:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
As you can see, the Manifesto is a set of values and choices – a course towards which to steer if you want to sail through the waters of Agile Software Development.
But, the “Founding Fathers” didn’t stop there. They agreed upon 12 Principles behind the Agile Manifesto, a guideline for the Agile Software Development, thus deepening its philosophy and defining it more precisely. Here they are:
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
- Working software is the primary measure of progress.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility.
- Simplicity - the art of maximizing the amount of work not done - is essential.
- The best architectures, requirements, and designs emerge from self-organizing teams.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Now, after seeing the Manifesto and reading the 12 Principles, you can begin to understand that “agile” is not a methodology, or anything so simple and plain, but rather a complex term that has a story behind it.
Another thing that is evident in the Manifesto and the 12 Principles is that Agile Software Development is human-oriented. As Jim Highsmith, one of the “Founding Father” (and the creator of the 5 agile project management model phases) said:
At the core, I believe Agile Methodologists are really about delivering good products to customers by operating in an environment that does more than talk about "people as our most important asset" but actually "acts" as if people were the most important, and lose the word "asset".
The Agile movement is not anti-methodology or anti-planning, but it chooses valuable products and humanity over corporate bureaucracy and embraces the adaptability as an answer to the ever-changing environment.
So, once again, what is the definition of “agile”?
The synthesis of all the definitions of the term “agile” can be:
Agile is a framework for thinking and making decisions.
“Agile” goes beyond software development, even beyond project management. The Agile movement created a real philosophy that responds to the modern environment, with great results. It is the result of different experiences and practical solutions that emerged over the decades. In order to implement the “agile” framework, you should follow the 12 Principles behind the Manifesto of Agile Software Development, along with embracing the values from the Manifesto itself.