On Feb 2001, a group of 17 independent software practitioners came up with idea of Agile Manifesto. Agile manifesto was born out of need for Software Development methodology that is driven by features and end product rather than driven by process.
Agile is set of values and principle or we can say collection of beliefs that a team can use for making decisions. The decision could be related to How to do Work or develop a software?
Agile is surprisingly flexible and doesn’t make decisions for you, Rather it give foundation to whole team to decide on anything. Agile manifesto says we can develop any software by giving value to high priority items in the list than giving value to low priority items.
The big difference between traditional model & agile is
Tradition model is Scope drives budget & schedule
Agile Scope is driven by budget and Schedule.
Let’s consider a scenario, where a developer is working on a feature of product where he realized that he need additional database to make that feature work.
The first idea comes to his mind is to stop working on that feature and build a robust system that provide support and serve his need.
But if the developer believes in agile values and principles he will think that if I build a database first that means ”I would have to delay the delivery of my feature which should be completed within specified time” In other way If he can find out a way to build just what is necessary to deliver a working feature then he live agile principles”
Before going in depth of Agile as a human nature lets find out what are the advantages of Agile.
Agile has 4 values and 12 principles:
Let’s look at each of these 12 principles to learn what they are and how they can help you manage your projects.
Let’s consider a very simple example from our daily work routine:
We make a list for what we need to do for a perfect Date plan. Exciting!!!
Step 1: To maintain do list.
- Clean home
- Buy flowers
- Bake cake
- Arrangement of Candles
- Arrangement for food and Drinks
- Get ready
Step 2: We will allocate sometime for each activity.
Step 3: We will find out highest priority items in the list.
Step 4: You will start executing the highest priority items from the list.
Voila!!! You will find you are almost done.
This is what we do in Agile.
Any Agile model will consist of 5 phases. These phases don’t have linear process rather they have signal in nature. These stages were described by one of author of agile project manager Jim High smith. Below are the 5 phases of Agile:
Envisioning: We envision what this product is going to be? What value should be delivering to end customers? What is the vision of overall project?
Speculating: How to implement different feature or functionalities that would fill that vision which customer has created in their scope
Exploring: We perform iteration of learning, We develop the code, software, we test it and get feedback on it. We shall also figure out the way to fill the gaps.
Adapting: As we learn we adapt & Change the plan. We might change the sequence of work to do the tasks and sequence of highest priority tasks
Closing: Since Agile is iterative model, we need to consider this phase where we can either close a project or an iteration.
You must be wondering How can we deliver something which value every week? The answer is simple:
- Get feedback
Agile will have different Roles based on Processes:
- Product owner
- Scrum master
- Team members