I have seen people raise their eyebrows whenever I talk about the Agile Manifesto. They understand Agile and working on it, but they did not hear this term before. So, in this article, I will be focusing on:-
- What is the Agile Manifesto - We will talk about how the Agile Manifesto came into the picture and why it was needed?
- Development of the Agile Manifesto - This will include how the Agile manifesto was developed? What makes it different from other Methodologies and the procedure?
- Agile Manifesto Purpose - With the help of example we will try to understand the purpose of the Agile manifesto? We will also talk about how it resolves the issues that were there with the other models.
- Agile Values - We will talk in detail about the four core values and understand what is the purpose of having these values
- Agile Principles - With the help of an example we will understand all 12 principles of Agile Manifesto.
Let’s start understanding the Agile manifesto-
What is the Agile Manifesto?
Agile manifesto was formally produced by 17 developers during an outing on February 11-13, 2001, at The Lodge at Snowbird ski resort in Utah.
The developers, who developed a manifesto, called themselves the Agile Alliance. They were seeking a restructuring of the traditional software development processes that they saw as cumbersome, unresponsive and too keen and focused on documentation. They wanted to bring a balance and improve on client involvement. They were neither against the documentation nor favored it, as much as we used to, in traditional methods, which was never maintained and reused. They wanted to plan and limit the documentation to the required information. Their new approach to software development was “by doing it and helping others do it”.
To make their view and priority clear, they created this document and called it "Agile Manifesto”. When they built this document, they had no idea how quickly their ideas would spread beyond their industry, and in today’s date, the Agile Manifesto is accepted globally.
The Agile Manifesto is a proclamation that articulates four fundamental values and twelve principles that its authors believe; software developers should use to guide their work of development.
Development of Agile Manifesto:
The Agile software development approach is defined by its commitment to developing software periodically and incrementally. The Agile approach offers the user a new version of software development which is done by following brief periods of work as per commitment and these periods are called Sprints.
The Agile manifesto is all about giving the preference to below four factors:
- Communication and
This Agile process is in complete contrast to the traditional methods of software development, where the developer usually takes down all the requirements from the client, compiles them, and then develops the software all at once. In these methodologies, the software will be released at the very end of the project cycle and, this team of developers, i.e., Agile Alliance was looking out for an alternative to these types of cumbersome documentation processes, like Waterfall Model, which they defined as “documentation driven, heavyweight software development processes”.
Agile Manifesto Purpose
The four values in Agile manifesto promote a software development process, which focuses on quality. They do it by creating software that meets customer’s expectations and needs.
Let’s understand this with the help of an example-
This is your kid’s Exam month, and he has his:-
- Homework to be submitted next week
- Exam preparations to be done for the exam which is there in next to next week
- Assignments to be reviewed and sent next month.
Now to deliver quality, i.e., to get good marks and do well in the exam you need to prioritize the activities as per requirement.
- Since homework needs to be submitted next week, you will ask your kid to finish off his homework first within two days, then
- He can prepare for the exam as per his exam schedule for the next three days
- Lastly, he can start working on assignments as they are to be submitted next month.
That’s what precisely Agile values do. Agile focuses on exactly what is required by the customer; it does not get into making plans and plots; it just goes with the flow and works on small tasks.
Agile is not about “you tell me everything you want”, which is called requirements gathering; this step can take months to document it. Only after documentation, you will be able to start working on software development, and you will get a working product at the last step. The problem here will be “making a change”.
Agile values and principles make it different from others. They make Agile work with change. We ask the client what do they want first and give them the first product, and if any further changes are required, those can be accommodated in the next iteration.
It’s like your food truck would start working quickly rather than waiting for months and make a plan to start a big food chain.
Purpose of the twelve principles is to create and support a work environment which is:
- Focused on and around the customer
- Aligns to business objectives
- Responds and pivots quickly as user needs and market forces change
Agile projects are customer focused and encourage customer guidance and participation. The Agile intends to align development with the business needs, and the success of Agile is apparent.
Agile Core Values
Four core values are used in different ways in each Agile Methodologies and all of these help in delivering high quality and working software.
- Value Individual and Interactions over Process and Tools: In the software development industry there will be people who will be providing requirements i.e., business, as well as people who will be working on the specifications, i.e., software developers and that’s the reason why the communication between the business and the development team matters a lot. To get a clear idea on what is needed and what are the exact requirements, proper communication between business and developers is required, and hence we should value people, their requirements more than processes, and tools because if the requirement is not clear, we can’t create what the customer wants us to create.
- Deliver working software over comprehensive documentation: Agile does not support eliminating documentation but limits it to only required documents. The primary reason to do that was, much documentation like requirements, specifications, prospectus, design documents, test plans, approvals and a lot more, used to cause a delay in the delivery. In agile instead of all these documentations, we create "User Stories”, which is sufficient for a developer to begin a task. "User stories" are nothing but the to-do list given by the client as per its priority. In Agile, our primary focus will be on delivering working features in their respective periods rather than creating huge documents on the client’s requirement.
- Collaborating with the customer over Contract Negotiation: Usually, in any process, the customer interacts with the development team to negotiate in detail on requirements, timelines but that is before the work starts. Once the job is done, they usually interact for feedback and inputs. In Agile - the customer is engaged and collaborates throughout the process as we deliver value to them every week (every period) and hence it makes it easier for the development team to meet the customer’s needs. Delivering values to the customer every week helps the developer to understand the customer’s requirements in detail, and eventually, this helps in delivering the project in time.
- Responding to and implementing changes over following a plan: Changes are considered an expense in most of the traditional methods as a lot of rework is needed because feedback is given after complete project delivery. In Agile - priorities can be shifted from iteration to iteration, i.e., periodically, and new features/changes can be included in the next possible iteration. Moreover, according to Agile, the change is not an expense; it adds value to the project.
Since then the original document was used by different groups; from Sales to Marketing to Restaurants, Agile has been universal. This universality is derived from a group of principles that can be broadly and uniformly applied, quickly learned and rarely mastered completely. The Twelve Principles are the guiding principles for the methodologies. They describe the culture in which change is welcome, and the customer is the focus of the work.
These 12 principles can be considered in four distinct groups i.e.
- Customer Satisfaction
- Project Management
Here is a list of all 12 principles and the group they fall under:
|Categories||Agile Manifesto Principle|
|Customer Satisfaction||Customer Satisfaction through Early and continuous Software delivery Face-to-face Interaction Regular reflection on how to become more effective|
|Quality||Accommodate changing requirements throughout the development process Simplicity Collaboration between business and Developer throughout the project|
|Teamwork||Timely and frequent Delivery of working software Believe, Support and encourage the people involved Agile Processes to support a consistent development Pace The self-organizing team encourages great quality|
|Project Management||Working software is Primary measure Attention to technical detail and design enhance agility.|
We will take the help of an example to understand these principles.
Let’s say you want to start your food chain in an area where there are fewer food joints, for this what you can do is-
First, start a small food truck with whatever you have and eventually grow.
We will stick to this example and explain the principle with the help of this. Here are the key principles for development.
Satisfy the Customer: Customer satisfaction through early and Continuous Software Delivery. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
Now in our example, our approach would be to start a food truck with whatever you are best at, with a few signature dishes and start feeding people. We will not let our customers wait while we plan.
Welcome Changing Requirement: Accommodate changing requirements throughout the development process. All changing requirements are always welcome, even in later stages of development. Agile processes harness change for the customer’s competitive advantage. After every feature delivery, the customer feedback is taken, and if any changes are suggested by the customer, they are incorporated in the next stage.
In the same example, we have started a small food truck, now we will see how people respond to the current dishes available and change our flavors, spices, and dishes according to the customer need. Our focus would be delivering better quality to the customer.
Deliver Working Software Frequently: Here we have to deliver value to the customer every period and this period may vary from one week to a couple of months, the shorter the period, the better it is. This part is taken care of by a team working on sprint. They are to deliver working software at the end of each sprint, the customer gets an idea of the progress. It is all about accountability and time management.
With food truck example, if the customer has ordered five dishes, then we can ask him for his priorities and can deliver it with a little time gap. This will make the customer happy as you are fulfilling his requirements in time.
Collaborate Daily: Collaboration between business and Developer throughout the project. Business people and software developers work together daily throughout the project. Communication is the key in Agile, and here the customer and the developer are in continuous communication, which makes it different from traditional methods.
With our food truck, we will always be in touch with the customer and will get continuous, live feedback, which will help in improving.
Motivate Individuals: Believe, Support and encourage the people involved: Create project around motivated individuals, give them the environment and support they need, and trust them to get the job done. People involved in the project should always support each other.
For our food truck, we need to continuously motivate our cooks to give their best for those happy and satisfied faces, which are their reward and this will help us meet our target.
Face-to-Face Conversation: The most efficient and effective method of conveying information to and within a development team is a face-to-face conversation. Here we have face-to-face interaction from business and within the organization.
This goes well with our example because if someone is happy with your food; it will reflect on his face. All we have to do is to keep interacting with people. We need to ask for feedback for continuous improvement; as there is nothing better than face-to-face interaction because that gives you real-time feedback and requirement.
Measure of Progress through Working Product: Delivered software is functional and works properly is the essential factor that measures progress. Our priority is to deliver a working feature every period, and if we can do so, we are on the right track.
A hit dish and repeat orders for that would be our success measures in case of our food truck. If a dish is loved that means you are on the right track.
Promote Sustainable Development: Agile Processes to support a consistent development Pace: Team establishes or makes processes that promote sustainable development. The customer, developer, and the user should be able to maintain a constant pace indefinitely to avoid any delay in the project.
For our food truck, we have a team of cleaner, cook and some helpers and we have to ensure that all of them are working in tandem and delivering a required dish to the customer in a timely manner. If there are any bottlenecks, like an oven that is not working, then it needs to be addressed on time to keep a consistent pace.
Continuous Attention to Technical Excellence: Attention to technical detail and good design enhances agility. The right skills and good design ensures that the team can maintain pace, continuously improve the product and sustain change.
In the case of our food truck, we have to concentrate on delivering quality to our customers. For that we need to ensure that we are using the right quality products, spices are used in the correct amount, food is not too oily, should not be over or undercooked, etc. These will be our technical details In case of our food truck that we need to pay attention to deliver excellent quality.
Simplicity is Essential: Simplicity is the art of maximizing the amount of work. Develop just enough to get the job done for the moment. We do not have to produce something which is not needed at the moment. Here simplicity means not getting into too much of documentation.
This is the reason why we will keep things and menu simple for our food truck and will not include too much of it, that is not even needed and will add on to unnecessary mess. We will have only what is required or liked by the customer.
Self-Organizing Team: This encourages excellent quality. The best architectures, requirements, and designs emerge from the self-organizing teams. If the team is organized within itself; mistakes & delays rarely occur in the project.
Here in our food truck case, if our team is happy to do their work, is getting good feedback and rewards, then nothing can stop them from delivering the best, so that is the crucial part.
Regular reflection on Continuously Improving: How to become more productive. At regular intervals, the team reflects on how to become more effective & tunes and adjusts its behavior accordingly. Regular feedback from the client helps us in achieving it.
For our food truck too, regular improvement as per customer’s requirement and behavior will lead us to success, and if our one food truck is successful, we can move on and start another food truck and eventually can start the food chain.
The customer centricity and focus on communication have brought success to Agile manifesto. It is just a proven technique with implications not only in the software industry but other industries as well, and today it has become an industry in itself.