Agile prescribes working incrementally, collaboratively and flexibly; it does not prescribe a specific framework or methodology. A few of the most popular frameworks that Agile teams adopt are Scrum, Kanban and Extreme Programming. Teams may choose one of these frameworks or pieces of each.
According to the Scrum Guide Exit, “Scrum is not a process or a technique for building products; rather, it is a framework within which you can employ various processes and techniques… Scrum is grounded in empirical process control theory, and employs an iterative, incremental approach to optimize predictability and control risk.”
Scrum is the most prescriptive of the three frameworks and follows a set of repeated activities and ceremonies.
Scrum at a Glance
- A product vision is created with input from stakeholders, customers and end users.
- The product owner creates a prioritized list of features called a product backlog.
- During sprint planning, the team pulls work from the product backlog to create a sprint backlog and collectively discusses how to implement those features.
- The team works during that timeboxed sprint (typically 1-4 weeks) to complete the sprint backlog’s work.
- The team holds a daily scrum meeting to discuss commitments and impediments.
- The ScrumMaster helps remove impediments and keeps the team focused on its goal.
- At the end of the sprint, the team should demonstrate finished work (product that is ready to be deployed or shown to a user) at the sprint review.
- The sprint ends with a sprint retrospective wherein the team focuses on continuous improvement.
- This process cycles as needed.
Kanban started in Lean and Just In Time manufacturing from the Toyota Production Systems. It focuses on a visualized workflow where work is broken down in small pieces, pulled using a task board and Work-in-Process (WIP) is limited. By implementing and respecting WIP limits, following explicit process policies and measuring and managing flow, Kanban can identify bottlenecks and waste, reduce wait time and increase efficiency.
Kanban at a Glance
- Visualize current workflow (value stream).
- Identify and respect WIP.
- Measure and manage flow (reduce waste).
- Make process policies explicit.
- Implement feedback loops.
- Continuously improve.
Extreme Programming (XP) is a framework centered around engineering principles and focused on ensuring delivery of high quality software. XP teams work collaboratively in short development cycles and are flexible and adaptable to change. XP utilizes user stories and frequent small planned releases.
XP has twelve core practices grouped in four categories.
- Fine Scale Feedback
- Test Driven Development
- Planning Game (frequent release and iteration planning)
- Whole Team (the customer is a member of the team and available at all times)
- Pair Programming (code should be produced by two people)
- Continuous Process
- Continuous Integration
- Design Improvement (embrace refactoring)
- Small Releases (deliver frequent releases of working functionality)
- Shared Understanding
- Simple Design
- System Metaphor (class and method should be named for functionality)
- Collective Code Ownership
- Coding Standards (entire team agrees on standards and holds one another accountable)
- Programmer Welfare
- Sustainable Pace (people perform best when rested)
Most projects today combine elements from multiple frameworks. For example, a team may be scrum based in their ceremonies and artifacts, utilize a task board from Kanban for visualization and adopt engineering practices from XP (test driven development, pair programming, and continuous integration). The key is finding the right mix of frameworks that maximize delivery of value and lead to the highest quality product.