How would you decide if Agile methodology is suited for a project?
How would you decide if Agile methodology is suited for a project?
In the past, software development has followed a rigid process, where each phase in the software life-cycle needed to be completed in order for the team to move to the next phase. This methodology was known as the waterfall model. Waterfall was sequential in nature and the requirements had to be locked down well in advance. This left little room for changing the scope or modifying requirements based on feedback from outside.
In order to overcome the rigidity and inefficiency of the Waterfall model, the Agile methodology was developed. Agile was created to be opposite of waterfall in most respects but with one critical commonality - the goal of creating high quality products in the most efficient way possible. Here's a chart outlining the differences in the two methodologies:
Agile methodology works wells for projects and teams that have the following characteristics.
- Product requirements are uncertain. Agile deals with uncertainty by breaking the work items into smaller logical chunks and dealing with them in sprints. Agile philosophy doesn’t believe in waiting until all the requirements are set in stone to get started with tasks. Agile also introduces the concept of Scrum, where the product owner and the development teams engage on a regular basis to address on any requirements changes and re-iterate on them until the product owner is satisfied with the outcome.
- Product owner is Proactive. Agile methodology works best when you have a dedicated and proactive product owner, who regularly interacts with the team to provide feedback and is willing to fine tune requirements throughout the product lifecycle.
- Culture of the team is collaborative. Scrum best works for teams where people work together to tackle the work items in a sprint. The goal of the entire team is to get through the items in the sprint, and help each other if they are blocked. Prototyping and feedback are key components of Agile, and expects the teams to make mistakes and fail quickly. Teams must be willing to learn from mistakes and use the feedback to course correct. “Fail fast, learn faster” must be the way the team operates.
- Team works on process improvement. This is another critical piece of Agile methodology. The team constantly needs to retrospect their process (usually at the end of each sprint), understand their shortcomings, and change their process to make it better.
Conclusion
Agile works best for the criteria mentioned above. If the project and the team is such that these conditions are true, Agile will be a good option. Otherwise, the team might be better off with a different approach.
Helpful Tips
A good format to follow for answering this question is “Nugget First, Explain Later”, as demonstrated in the above answer. Start each point by providing a brief one-line summary, and then follow up with elaboration.