All of these methodologies were developed to produce software, but they can just as easily be applied to other types of projects (e.g. Lean was adapted from the Toyota for their vehicle manufacturing process). Each methodology has its own unique characteristics, but all follow the agile manifesto. Below are some of the most popular agile methodologies and what makes them different. You’ll notice that they all overlap, and that should help you understand what agile is all about.
Characterized by seven principles:
- eliminate waste
- amplify learning
- decide as late as possible
- deliver as fast as possible
- empower the team
- build integrity in
- see the whole
XP (Extreme Programming)
A type of software development intended to improve quality and responsiveness to evolving customer requirements. The principles of XP include feedback, assuming simplicity, and embracing change.
This is a family of methodologies that can be used with production teams of six to eight people and it focuses on the people specifically, not processes or artifacts. Crystal requires the following:
- frequent delivery of usable product increments to users
- reflective improvement
- osmotic communication preferably by being co-located
This is definitely one of the most popular agile methodologies. Kanban means “visual sign” or “card” in Japanese, so this is a visual framework to implement Agile. It promotes small, continuous changes to your current system. Its principles include:
- visualize the workflow
- limit work in progress
- manage and enhance the flow
- make policies explicit
- continuously improve
You may have seen a Kanban board before? A board that’s split into columns titled “To do”, “In progress”, “Testing”, etc. The idea behind Kanban is that in each sprint you only have X amount of tasks on the board at any one time. As soon as some amount of effort, represented by the cards, moves off the board (i.e. work is fully complete) then a new card or cards representing equivalent effort may be brought into play. The limitation on the amount of work in progress forces the team to better manage and continuously improve processes.
Certainly the most popular methodology, and hence the most misunderstood. It’s an iterative model that follows an explicit set of roles, responsibilities, and meetings (sometimes called “ceremonies”) that never change. Sprints, usually lasting one to two weeks, allow the team to deliver software on a regular basis. Like Kanban, Scrum enables reterospection and improvement between sprints. The difference is that Kanban implements limitation of fixed amounts of work in progress, while Scrum implements limitation via fixed time blocks.