What is the Agile Methodology?
Earlier this week, we discussed the Waterfall methodology and today we're going to go over another popular methodology in the industry called Agile. Agile is an extremely iterative approach to product development based on the Lean methodology that rapidly delivers a product in small batches.
Many new startups find Agile to be a preferred methodology because Agile relies on a high level of customer involvement and thus the product is much more likely to be in tune with what the market wants when the product finally ships.
What is Agile Methodology?
Agile is the practice of iteratively delivering a product in short cycles, called Sprints. Agile relies on 4 core principles:
- It uses frequent deliveries to accelerate learning about what works and doesn't work by building software and getting feedback from customers early and often.
- Agile changes plans constantly to reflect new information. Agile teams deliver software every 2–4 weeks.
- It uses an empirical approach to build the right product rather than following a plan.
- Agile is more concerned with adaptability and responding to change than with finding the "one best way" of doing something.
- It seeks rapid feedback so that it can learn, make changes, and keep moving forward. It is an empirical approach to the work of software development.
- Agile puts a large emphasis on teamwork and collaboration, which are essential for producing great products together. Agile teams have members with varied skillsets who can communicate effectively and work well together in making trade-offs between schedule, cost, and functionality.
Traditionally, large companies with complex products (think Microsoft and their operating system or Nasa and a space rocket) couldn't launch their software in pieces, or else the entire product wouldn't work properly. These companies had to ship products in a predictive manner by carefully planning through all customer use cases/edge cases.
As development costs went down, smaller teams were able to ship faster and start to outpace industry incumbents with significantly smaller teams. Meanwhile, companies were spending years working and launching products only to realize that customers had already changed their minds about what they needed.
Teams began to focus on adapting to the market by shipping new releases to a product over time in smaller batches and figuring out what the market wanted before investing huge periods of time/resources into creating products that no one wanted.
- Agile can quickly produce a working prototype to immediately show customers feedback
- Customers can provide input throughout the entire development project
- Since sprints last 1-4 weeks, projects can deliver new features quickly and frequently as well as with levels of predictability
- Unlike Waterfall, which is harder to change up once specifications have been drafted, Agile allows a team to always be optimizing or re-prioritizing a product backlog
- Since the project is broken down into manageable phases, teams can spend a lot of time on development and testing which greatly reduces the chances of unnoticed bugs release date
- If the estimates for certain features are not accurate, a team will have to add sprints or push features to later sprints which will affect the overall deadline
- A lot of responsibility falls on the scrum owner who is constantly managing the product backlog to make sure sprints are finished in time
- Larger teams may find it harder to employ the more rapid Agile methodology
Popular Agile Methodologies
The following are the most popular and useful Agile methodologies the most successful product teams are using. Let's take a look:
Scrum is a popular methodology used by many startups that can be broken down into 4 major components:
The product manager will generally maintain a product backlog, which is a prioritized list of items for your team to work on. At the end of the current sprint, a PM would start working with their team to plan for the following sprint. The PM would pull out sprint candidates (items that the team should consider working on for the next sprint) from the product backlog and spend some time working with appropriate team members to cost how long each candidate might take to implement. This way, during the sprint planning meeting, the team can focus on discussing priorities of each item and how many candidates the team realistically thinks they can complete in the following sprint. Once these sprint candidates have been discussed and finalized, they are moved into the sprint backlog to be allocated to individual team members to work on.
Each may have varying sprint time periods although a common sprint cycle is 2 weeks (where a product release / new update gets shipped live to users at the end of the sprint cycle). In the actual sprint, team members will be assigned sprint candidates to work on and whatever doesn't get completed in time for release will be considered "slipped" and get re-prioritized for a future sprint or perhaps de-prioritized.
Stand-up meetings usually happen daily (again, this varies by team) and are a way for the team to check in with each other. The scrum owner, or the PM, will ask everyone what they did yesterday, what they are doing today, and what roadblocks there are. This lets everyone stay abreast of what's going on with everyone's work, hold people accountable for getting work done, and offer help to anyone who is stuck.
A retrospective is generally a meeting that happens at the end of your sprint cycle where you review what happened during the latest sprint. Your team might discuss agenda items like what went well, what didn't go well, what could be improved, and any questions/concerns about the entire process. The PM might be the one taking lead on asking these questions, gathering feedback, and figuring out how to improve the sprint process.
Kanban is also a popular methodology used by many startups that is less stringent than Scrum and is oftentimes used by teams who want to just continuously crank out work without focusing on estimations/deadlines.
Unlike Scrum, Kanban doesn't run off sprints so there isn't a need to maintain a sprint backlog. Instead, there is only a product backlog where team members continuously pull tickets out of the backlog to work on.
With Kanban, there is generally a board with 3 columns, To Do, In Progress, and Done. The To-Do column would be the prioritized product backlog where team members can pull items off the top of the list to work on. Upon finishing a ticket, the team member would then just pull the next ticket to work on from the top of the list. There might also be certain constraints applied by the team, such as only have a certain amount of items in each column at a given time.
Kanban allows teams to work quickly without the need for a heavy process since there aren't any meetings like sprint planning or stand-up meetings. The lack of this process also means that it's much harder for teams running on Kanban to estimate when work might get done since your team isn't timeboxing itself like Scrum teams do.
3. Extreme Programming (XP)
Extreme Programming is a methodology aimed at creating extremely high quality software that can evolve and change without the need for major overhauls or corrections as new ideas come along. Agile and Agile-like methodologies are just modern iterations of XP, which was created in the late '90s.
However, XP does take a lot of time to implement. When teams first start out Agile, they usually start with some form of Agile-light methodology since a lot of Agile methodologies can require way more process on the front end than traditional waterfall models. This is why many companies start by implementing Agility principles by using Agile-light methodologies or even just outsourcing certain parts of their software development to put Agile into practice.
4. Adaptive Software Development (ASD)
Adaptive Software Development (ASD) is a methodology that was popularized by Microsoft back in the '90s, which basically melds Agile and Waterfall together into one process.
In an Agile-Waterfall hybrid like ASD, there are still sprints where Agile principles apply to the length of the release cycle. Agile planning still happens at the beginning to make sure that both Agile and Waterfall principles are being adhered to. After Agile planning, the development team carries out waterfall methodologies for implementation. At the end of a sprint (Agile), a product milestone will be delivered (Waterfall). Agilists say combining Agile with Waterfall leads to a final product that is shippable faster without sacrificing quality. Agilists also say that Agile can help reduce the amount of waste that happens in waterfall methodologies because these methodologies are stuck on estimates which might not always be accurate.
5. Dynamic Software Development Method (DSDM)
Dynamic Software Development Method (DSDM) is Agile's counterpart to the Waterfall model. DSDM is a method where Agile project management and Agile programming are used together in one overall methodology.
D SDM generally consists of Agile planning, Agile programming, Agile development (for the actual Agile), and Agilesupport (for managing Agile projects).
The Agile planning part involves defining a suitable time-box for sprints where team members can work together to get their tasks finished. The Agile programming part involves Agile team members working together in small chunks to get a portion of the Agile project done. Agile development is when Agile programming and Agile planning come together, Agilesupport involves keeping Agile projects on task by tracking tasks, being flexible to change, and working with other teams involved for facilitating a smooth Agile process.
6. Feature Driven Development (FDD)
Feature Driven Development (FDD) is Agile's closest cousin that exists outside Agile. FDD and Agile aren't the same but Agile borrows many things from it. Agilists say that Agile is an extension of FDD, not a replacement.
Melancholy, Agile project management will always be Agile. Agilists say Agile is such a diverse group of methodologies that Agile project management does not exist without Agile programming or Agile development. Agilists say Agile is not just a list of things that Agile project managers do but Agile is an overall process (a methodology) in itself where Agile programming, Agile project management, Agile development all have their places and must be used together to get the full Agile effect.
7. Behavior Driven Development (BDD)
Behavior Driven Development (BDD) is Agile's Agile cousin. Agile project management and Agile programming are Agile through BDD. Agile development is Agile through BDD. Agilesupport is Agile through BDD. Agilists say Agile is not Agile without Agile project management or Agile programming in it and, therefore, Agile cannot exist without BDD.
How to Choose The Right Agile Methodology for You?
When Agile first started being talked about by Agilists and Agile enthusiasts, there was a lot of excitement. Agile could potentially be the panacea for all the problems in software development.
In order to choose the right Agile methodology for you, you need to assess yourself. Agile is a lot about your organization and culture, which makes Agile difficult to choose if Agile is not in your DNA. Agilists have created Agile methodologies that best fit a certain profile of an organization and Agilesupport specializes in Agile project management, Agile development, Agile programming.
Interested in discussing the agile methodology with other product managers? Meet and chat with product leaders around the world in our PMHQ Community!