In February 2001, following 17 software developers met at the Snowbird, Utah resort, to discuss lightweight development methods. Agile Manifesto-
Kent BeckMike Beedle
Arie van Bennekum Alistair Cockburn Ward Cunningham Martin Fowler |
James GrenningJim Highsmith
Andrew Hunt Ron Jeffries Jon Kern Brian Marick |
Robert C. MartinSteve Mellor
Ken Schwaber Jeff Sutherland Dave Thomas |
They were representatives from Extreme Programming, SCRUM, DSDM, Adaptive Software Development, Crystal, Feature-Driven Development, Pragmatic Programming, and others, sympathetic to the need for an alternative to documentation driven, heavyweight software development processes.
They published the Manifesto for Agile Software Development to define the approach now known as agile software development. Some of the agile manifesto’s authors formed the Agile Alliance, a non-profit organization that promotes software development according to the agile manifesto’s values and principles.
Agile values
The Agile Manifesto reads, as follows:
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. |
Let us understand the values
- Individuals and interactions over Processes and tools
The message here is that while processes and tools will be necessary on our projects, it is more important to focus on individuals and interactions involved. The projects are a result of effort by people. The problems get resolved by people. The ideas to solve problems come from people. Also the projects are defined by people, scope decided by people and finally accepted also by people. Focusing early on developing the individuals involved in the project and emphasizing productive and effective interactions help set up a project for success.
- Working software over Comprehensive documentation
The message here is that, software without any documentation is certainly problematic, but comprehensive documentation without software is also valueless. The message is to document but documentation should be such that it is barely essential for others to understand whats there in the software.
- Customer collaboration over Contract negotiation
The message here is that one must be flexible and accommodating rather than being uncooperative with the customer. We could build the product as originally specified but it may become worthless if customer recognizes that there needs to be a change to make it more effective. Rather than beat up the customer with a change management process that is really more of a change suppression process, we have to assume right at the start that things will change.
- Responding to change over Following a plan
Initial plan should always be a starting point and the plan should progressively elaborate as time goes. More energy should be spent on responding to the inevitable changes on the project. However, this does not mean that one must throw the plans out of the window and be ad-hoc. We still need to plan. Just that there should be an assumption that plan will change and one must respond to Change positively.
Agile Principles
In addition to the four Agile Manifesto values, the authors of the Manifesto created twelve guiding principles. Following are the 12 principles
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable product.
- Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
- Deliver working product 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 product 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.
- Customer satisfaction by rapid delivery of useful software
Let us deep dive into the meaning of the principles
Principle#1 – Our highest priority is to satisfy the customer through early and continuous delivery of valuable product
- Focus on Customer
- Deliver Early and Deliver Fast
- Focus on end goal
How does Scrum implement this principle?
- Incremental delivery helps deliver working product. Therefore the artifact Increment represents early and continuous delivery in small pieces
- Product Backlog which is ordered as per value consists of small incremental pieces which represents valuable product.
Principle #2 – Welcome changing requirements, even late in the development. Agile processes harness change for the customer’s competitive advantage.
Changes are great if they allow us to deliver some late high-priority features.
- Traditional project management sees changes negatively. Finally only the high-priority changes go thru.
- Agile projects accept that fact that changes will happen.
How does Scrum implement this principle?
- Product Backlog represents changing requirements. It is an emergent list and always keep getting modified as per customer feedback
- Sprint Review is a feedback forum where customer feedback is sought and changes are implemented to give value to the customer
Principle #3. Deliver working product frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
- Get Feedback fast
- Incorporate stakeholder comments fast instead of waiting for end moment
- Keep Business engaged thereby a dialogue on project progress is continuous
- Prevents late-stage escalations from customer
How does Scrum implement this principle?
- Sprint is less than or equal to one month. The one month or less timeframe helps deliver frequently and take constant feedback from customer. In a sprint, something usable should be developed so that the feedback can be received from the customer.
Principle #4. Business people and developers must work together daily throughout the project.
- Frequent collaboration with business helps build good rapport and trust between business and development team
- Development Team learns business requirements much better by collaborating with business effectively
How does Scrum implement this principle?
- Business people representative is called the Product Owner in Scrum. The Developers and Product Owner constantly collaborate to get results
- Sprint Review represents a feedback from the stakeholders continuously
Principle #5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
- Trust and collaboration increases productivity
- Autonomy to organize and plan their own work helps build motivation
- When a right environment is created for the team, the team gets motivated and generates productivity and results
How does Scrum implement this principle?
- Scrum Master makes sure that the environment is conducive to collaboration
- Scrum Master helps imbibe the values within the team so that the trust builds
- Scrum Master’s role is to make sure that teams are motivated. Motivated teams create productivity
Principle #6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
- Face to face does not mean co-location. Even a online communication using tools such as Zoom is also a face to face communication
- Face to face conversations enable quick transfer of information so that feedback looks can be closed
- Body-language, gestures help build trust
- Face to face is called high bandwidth communication
How does Scrum implement this principle?
- Scrum implements this principle via a Daily Scrum where the developers collaborate every day in a face-to-face manner and convey information to each other
Principle #7. Working product is the principal measure of progress
- The effort of creating documentation and designs should be supporting work and should not be primary activity.
- The definition of progress and the binary nature of “working software” creates a resulted oriented view of the project.
- Interim deliverables and partially completed work gets no external (customer) recognition.
How does Scrum implement this principle?
- Increment represents working product. One needs to keep creating increments continuously
- Definition of Done has to be passed so that the product can be called working product and becomes a principle measure of progress once the Definition of Done is passed
- Sprint Review forum is the forum where working product is inspected and adapted based on feedback received from stakeholders
Principle #8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Intensity levels in agile projects are high
- Long workdays lead to dissatisfaction
- Work Life Balance is equally important
- Flow should be maintained and bottlenecks should be decreased as much as possible
Sustaining a pace on a AGILE SCRUM project for each Sprint vs a typical Waterfall project where pace picks up as the project progresses |
How does Scrum implement this principle?
- Scrum implements constant flow of work to the stakeholders so that the bottleneck does not build up
- Scrum focuses on creating a sprint backlog every sprint which represents sustenance. Only the items which the team can do are taken by the developers. The right to create the sprint backlog is therefore given to the developers so that they can sustain their work and flow can be maintained
Principle #9. Continuous attention to technical excellence and good design enhances agility.
- Most people think agile is about doing work fast without any focus on technical excellence
- This principle guides the teams into focusing on technical excellence and good designs
How does Scrum implement this principle?
- This principle is implicitly implemented via Definition of Done and increment where utmost importance is given to the quality of the product
Principle #10. Simplicity—the art of maximizing the amount of work NOT done
- 20% of features deliver 80% of values
- 80% features never get used at all
- Focus should be on maximizing value rather than doing everything
- Focus on doing less. Whatever you do – do it properly with good quality and focus on technical excellence, good design and customer value
How does Scrum implement this principle?
- Product Backlog is always arranged by value such that the important items are done first
- Sprint Backlog represent the most valuable items being picked up each sprint so that the most valuable products are created first
- Sprint Review is a feedback forum to ensure that the most important feedback is incorporated and taken up at the earliest possible
Principle #11. The best architectures, requirements, and designs emerge from self-organizing teams.
- Micro-management culture creates dis-satisfaction and people do not take accountability
- To get the best out of people, we have to let them self-organize.
- It allows them to find an approach that works best for them.
- By allowing the people to take their own decisions, it puts accountability on them to own the decisions that they have taken thereby resulting in better commitment
- When people commit mistakes, encourage them to do better instead of punishing them. Culture to punish demotivates people and then the people do not take risks and always play safe
How does Scrum implement this principle?
- Scrum recommends that the scrum team be self managed
Principle #12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
- Gathering lessons at end of project is too late
- Gather lessons early and adapt
- Retrospectives is a good way where lessons are learnt at the end of each iteration, adapted in the next iteration
How does Scrum implement this principle?
- Sprint Retrospective is a good way of implementing constant improvements. As per the improvements identified, tuning and adjusting can be done.
Agile Manifesto therefore, the guiding artifact for any Agile method or framework.