Agile Methodology
History of Agile
In the early 2000s, a small group of software industry leaders met in Snowbird, UT, to discuss these new methodologies. The term agile software development was coined in 2001 to describe the flexible nature of software developed in iterative stages and became a blanket term for the new methodologies.
In particular, these thought leaders sought ways to quickly build working software and get it into the hands of end users. This fast delivery approach provided a couple of important benefits. First, it enabled users to get some of the business benefits of the new software faster. Second, it enabled the software team to get rapid feedback on the software's scope and direction.
The seeds of Agile methodology can be dated back to 1990s however it got officially documented only in famous meetings of 2000 and 2001 at Oregon and Utah respectively. So, what is Agile?
Understanding Agile
Agile methodology of project management promotes continuous iteration of development and testing throughout the software development lifecycle of the project. Both development and testing activities are concurrent unlike the Waterfall model.
Even though the concept of agile project management is usually associated with software development projects, it offers the same value when managing non-software projects. The amazing thing about agile project management is that while it drives governance and discipline in every phase of the project it can easily handle changes along the way.
Benefits of Agile project management
- Customer satisfaction: by rapid, continuous delivery of useful software.
- Great Communication: Customers, developers and testers constantly interact with each other.
- Speed to market: Working software is delivered frequently (weeks rather than months).
- Increase Quality: Continuous attention to technical excellence and good design.
- Flexibility: Regular adaptation to changing circumstances.
- More Transparency & Better Visibility: The ability to know all during the software development process, how much progress is being made.
- Increase Productivity and high customer satisfaction: We know customers often don’t know what they want until they see it. We're able to show them something earlier and communicate and talk to them about it. They can give us feedback on whether that’s really what they want or not.
- Decrease Risk: Reduce the risk of project failure.
From above points it’s clear that Agile methodology has lot of advantages but the big question here is ‘How is it actually implemented?’
The most common examples of Agile methodologies are Scrum, eXtreme Programming (XP), Feature Driven Development (FDD), Dynamic Systems Development Method (DSDM), Adaptive Software Development (ASD), Crystal, RUP and Lean Software Development (LSD).
Scrum Methodology
Scrum is the most popular and widely followed Agile methodology worldwide.
The entire SCRUM method involves around three major stakeholders:
1. Product Owner
2. Scrum Master
3. Scrum Team
It is critical that all three parties work in perfect synergy for seamless delivery of product. However, what are their roles?
1. Product Owner
The major job here is to document requirements, create backlog out of it, prioritize this backlog and ensure delivery of a feature at the end of each iteration.
But how is the backlog created?
The requirements are broken into small steps (also known as stories). The aim is to deliver the complete product via delivery of all stories. Every new iterative requirement becomes a story and is added to backlog.
2. Scrum Master
The one who is responsible for unlocking dependencies and resources for project, collecting the team and ensuring that the team goals are aligned to product releases
How is this done?
Each iteration of scrum is known as sprint. Generally a sprint lasts for 2 weeks. It’s the onus of product owner and project manager to pick up the top items from product backlog and prioritize it for sprint. This creates the sprint backlog. Any requirement has to be transferred from product backlog to sprint backlog in order to be executed
3. Scrum Team
Organizes the work, manage their own work items in backlog and ensure its delivery at sprint end.
Oops, too much of information here it seems. So let’s try and consolidate all this into simple steps and Scrum events.
Collect Requirements >>> Break it into small stories to create - Product backlog >>> Remove dependencies to work on stories >>> Move the prioritized stories from Product backlog to sprint backlog >>> Code/ develop the prioritized stories and test the same >>> Release, test and seek feedback >>> Keep working on the above loop for future iterations.
Scrum Events
Scrum defines four events (sometimes called ceremonies) that occur inside each Sprint: Sprint Planning, Daily Scrum, Sprint Review, and Sprint Retrospective.
Isn’t Agile simple and great to use. Trust me, it is simple but there are more nuances to learn around it but that’s for another day. However, I will sign off by saying that everything in Agile is not gold and there are various disadvantages of agile too like:
1. The Project Management Institute says that Quality, Cost, Time and scope are always interlinked. Since in agile the requirements and scope keep changing, its extremely difficult to keep a track of other three variables. The cost, delivery time and quality are bound to be impacted.
2. Post release of MVP, business needs can always change and since the MVP is already launched the teams tend to fall in the trap. They shift their priorities to different product without working on future iteration of MVPs thus leaving the customers with an incomplete product for a long time.
3. Expertise is required to manage Agile projects.
On that note I would say that Agile is definitely great, but the experts should ensure that they don’t fall in the above traps and keep working towards solving the customer problems in most efficient and quickest way possible.