Not all Agile methods are alike. If someone tells you that they practice Agile software development, you have only heard the start of their story. That's because today's Agile teams use a wide range of methodologies.
So, how can you determine the right Agile methodology for your team? It starts with knowing the most common ones used by today's top software development teams. The most popular Agile methodologies used by today's practitioners are:
XP (eXtreme Programming)
DSDM (Dynamic Systems Development Method)
FDD (Feature-Driven Development)
ASD (Adaptive Software Development)
Crystal, and LSD (Lean Software Development)
One exception to this list is Kanban. While Kanban is not considered an Agile development method, it is commonly used in conjunction with Agile methods to increase efficiency.
Now that you know the types of methodologies in use, it's time to determine which one is best for your team. When it comes to comparing and choosing which method is best for a team, the idiom "different horses for different courses" comes to mind.
The Agile PrepCast has compiled a helpful methods comparison table based on the following characteristics:
Roles and responsibilities
Virtual team support
Risk mitigation level
Pros and cons
The most popular Agile methods are Scrum and XP, which are very much aligned in their practices. That said, there are some notable differences between the two:
1. Scrum team iterations, which are called sprints, tend to be two weeks to one month in duration. XP teams work in iterations that are one to two weeks long.
2. Scrum teams do not allow changes into their sprints, whereas XP teams are much more open to making changes within their iterations.
3. XP teams work in a strict priority order as determined by who is serving in the "customer" role, whereas a product owner prioritizes the backlog items for a sprint. However, the team has the freedom to determine the sequence in which they are developed.
4. Scrum is much more focused on management practices and less defined when it comes to engineering practices. XP incorporates common technical practices such as test-driven development, automated testing, pair programming, and more. Scrum teams have more freedom to define the engineering practices they wish to follow, but they often use many of the same practices defined as part of XP.
In the end, many teams ultimately settle into a hybrid Agile methodology that combines Scrum and XP.
Lean software development (LSD), more commonly referred to as "Lean," is based on the principles of lean manufacturing which originated from the Toyota Production System. Lean is based on a set of principles aimed at achieving quality, speed, and customer alignment. This method is commonly adopted by startups.
A key tenet of Lean is to work only on those things that absolutely must be done and eliminate waste in the form of unnecessary meetings, tasks, and documentation. There are different camps as to whether Lean should be considered an Agile method in and of itself, or viewed as a complementary mindset that helps achieve Agile goals.
Kanban is a model for introducing change through incremental improvements and is complementary to Agile methods. Work is organized on a Kanban board, where work is tracked through various workflow states flowing from left to right. The only management or process criteria introduced by Kanban is "Work in Progress (WIP)," which defines WIP limits for the various workflow states.
If a certain state or status hits the limit, the whole team needs to help clear the filled-up state first before beginning any other work. The goal of using a Kanban board is to help teams identify bottlenecks and eliminate them in the future.
Each Agile team is different. So, a one-size-fits-all methodology is not the right solution. Each team must assess which methodology will help them thrive based on their unique makeup. That starts with knowing what you need to accomplish -- and why.