Learn Agile Principles and Discover the Agile Manifesto
In the last chapter, you saw how the waterfall model could work for some projects but not for others. For example, when you don't know the requirements at the start of a project, trying to capture them during a specific phase can often prove fruitless; in these cases, an iterative approach can work.
Agile emerged from iterative approaches and is very popular today. Let's take a look at how it began and how it's defined.
The Story of the Agile Manifesto
In February 2001, a group of leading experts met in Snowbird, Utah, to discuss common ground between their approaches in the quickly developing world of agile. Although some of the 17 experts that attended had quite low expectations, they quickly hit it off and decided to write a joint document that summarized their belief system. It would act as a rallying call for the whole software industry.
You can see the concise summary of values below, along with the 17 leaders who created this valuable document:
The Agile Manifesto
A Closer Look at the Agile Manifesto
The Agile Manifesto states that:
We are uncovering better ways of developing software by doing it and helping others do it.
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.
These are fundamental principles and values that underpin all successful agile development, so let's take a look at them in more detail:
The first principle is to value:
Individuals and interactions over processes and tools.
Agile development puts communication at its center. This implies respect for everyone, honest communication, transparency in data and actions, trust that everyone will support each other, and commitment to the team.
Individuals and their interactions are extremely important to this process. The team develops a set of common goals and then tries to grow as individuals and as a team to make these goals happen.
While the process is essential, people are the key contributors, and if their behavior creates an open, honest, transparent environment, then the best results can be achieved.
The second principle is to value:
Working software over comprehensive documentation
Delivering small pieces of working software to the customer at regular intervals is one of the fundamental tenets of agile development. Instead of lengthy documentation, working software can be produced with lightweight requirements (typically a set of tests or scenarios that must be supported).
The third principle is to value:
Customer collaboration over contract negotiation
Having smaller projects and delivering working software at regular intervals allows the customer to provide feedback. The goal of agile development is to work on products that deliver value to the customer. Sometimes the customer (an internal stakeholder, external client, or even the Product Owner as a proxy for the end client) can ask for features that don't meet their needs or change their opinion on what is required based on new information.
Agile development works with the customer to add value rather than force them to stick to previous requests, contracts, or requirements.
The fourth principle is to value:
Responding to change over following a plan
Humphrey’s Law says that customers never know what they want until they see working software. It is normal that they will react this way, so most agile frameworks build in frequent feedback opportunities by delivering small pieces of working software to the customer at regular intervals.
When change is required to deliver value to the customer, the team tries (within reason) to respond rather than resist by pointing to any previous requests or agreements.
The Agile Manifesto also describes twelve principles of agile development:
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 for the shorter time scale. 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. A face-to-face conversation is the most efficient and effective method of conveying information within a development team. The primary measure of progress is working software. 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.
As we move through the rest of the course, see if you can observe how these principles shine through various agile frameworks.
Additional Resources Martin Fowler tells the of writing the Agile Manifesto in Snowbird, Utah, in Feb 2001.
In February 2001, a group of leading experts from the agile community created the Agile Manifesto. This manifesto sets out four important 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 Twelve principles underscore the four values All agile software development methodologies and frameworks (Scrum, Kanban, XP) embrace these principles. They represent a set of values that define how people in the organization behave toward each other.
In the next chapter, we'll discover three types of Agile project Management frameworks that would help you in your coming projects!