What scrum, kanban and XP have in common
Throughout the years I have worked with different methodologies focused on developing software in teams. I discovered that, besides some small differences in approach, all of these have a lot in common!
I’m a programmer and it started when I worked in an extreme programming team in Madrid 5 years ago. Later on I started my toolbox project, where I currently do extreme programming and pair programming with a team of 5 developers.
Besides extreme programming I’ve attended scrum courses the past year, for scrum master, product owner and recently for scaled scrum professional.
The bigger picture
Scrum, kanban and extreme programming (XP) are all family of the agile software development movement. As these methodologies are often implemented towards IT, they can also be used in other sectors like for example healthcare or factory production.
The agile movement originated strongly by 2001 when the agile manifesto was launched. Though, agile itself is a derivative of lean manufacturing, which was originated around the 1940's.
The agile timeline
1940’s: Lean manufacturing
1970’s: Toyota Production System (TPS)
1995: Scrum methodology by Jeff Sutherland and Ken Schwaber
1999: Extreme programming by Kent Beck
2001: Agile manifesto
2010: Kanban by David Anderson
2015: Scaled agile
For my understanding I have tried to map the differences between scrum, kanban and extreme programming in the following chart.
What they have in common
In general all of the methodologies support the following practices:
- Backlog refinement
- Visualize workflow
- Small increments
- Personal empowerment
- Continuous integration (CI)
- Short feedback loops
Where Scrum differs:
- Scrum has a fixed sprint length
- Self organizing teams
Where Kanban differs:
- Limit work in progress (WIP), 2 tasks in progress at maximum
- Measure flow
Where Extreme Programming (XP) differs:
- 15 minutes daily standup
- Pair programming (one is driver and the other is navigator)
A couple of interesting trends are visible in agile software development:
- #noestimates, because estimates are rarely reached and time can be saved by skipping estimates for each development detail
- Feature toggle, by releasing new feature in every rollout, but disable them by parameters
- Continuous delivery, releasing software in very short cycles
- DevOps, extreme automation of software building
- Scaled agile frameworks: a practice for large organizations, combining several development teams towards one development. Common scaled frameworks are: Scaled agile framework (SAFe), Nexus (scaled professional scrum), Large-scale scrum (LeSS).
“agile delivers business value in small steps”
In general we can say that software development is moving from a larger scale towards a smaller scale. Extreme programming, scrum and kanban are just methodologies to work towards that smaller scale.
But the core principles are bringing value all over these methodologies, like personal empowerment within teams, continuous integration and ensuring a short time to market.