For a while now I've been seeing a paradox with Kanban. Specifically, Kanban compared to Scrum.
For a team new to Agile - although some regard this as heretical - I place Kanban under the Agile umbrella. Yes, I know its more about Lean than Agile but Agile is itself a Lean method, anyway...
For a team, specifically a software team, looking to adopt a new process there is a choice:
- Kanban has a very low barrier to entry. To get started, Kanban essentially says "visualize your work and manage the result." Starting Kanban can be as simple as putting up a board and tracking work items. In Kanban, visualization should drive improvement. Change can be incremental and gradual. Change is rooted in learning.
- Scrum has a far higher barrier to entry: essentially, Scrum says, "Adopt Sprints, designate a Product Owner, appoint a Scrum Master, and build out a backlog." Once these changes are done, you can run with Scrum and then the Scrum Master and retrospectives will kick-in and drive further improvement.
Interestingly, neither method says explicitly, "Improve your quality." Yet I always believe a lot of the success of Agile methods comes down to good old quality improvement: writing fewer bugs and having fewer bugs to fix means greater predictability and more time to deliver valuable software. But I digress.
It is easier to start with Kanban because it requires less upfront change. However, that does mean the improvements are slower coming.
Conversely, Scrum drops in, changes a lot, and most teams see an immediate improvement. Scrum relies less on subsequent change.
Because Kanban relies more on ongoing change it is more difficult. It is easy to get stuck at the "we built a Kanban board so we are doing Kanban stage." Change in Kanban requires one to see the need to change, understand what will fix a problem, and then follow the change through. That often requires experience. Thus, in teams adopting Kanban, there is a greater need for a coach, a consultant, someone who has done it before.
Scrum, on the other hand, makes far more changes upfront and the recipe for improvement is more straightforward. And of course, there are a lot more books on Scrum, blogs on Scrum, Certified Scrum Masters, and Scrum experience out there. So while it is harder to get started with Scrum (because more needs to change) there is less need for further change and this change does not require the same level of knowledge.
You see this specifically when you look at statistics. Watching the numbers should be important in both processes, but with Kanban, it is nearly essential. Anyone with a real understanding of Kanban knows that queuing theory, lead times, possibly weighted lead times, and a bunch of other numbers need to be examined.
Scrum, on the other hand, doesn't go much further than a burn-down chart. Yes, your ability to practice and improve with Scrum will also benefit from understanding lead times, queuing theory, and the rest, but you can quite happily use Scrum, and even improve Scrum, a fair bit without understanding these ideas.
So here is the paradox:
It is easier to start with Kanban than it is Scrum without expert knowledge, but it is harder to improve Kanban than Scrum without expert knowledge.
In many ways I prefer Kanban but I find this need for expert knowledge troubling. I suppose I shouldn't, I'm a consultant, I am that expert, people hire me to help improve their Kanban processes - so it does make more work for me.
In the longer run, the Kanban approach is more likely to lead to a genuine all-inclusive culture of improvement and is less likely to get stuck in a sub-optimal position - yes Scrum fixes things, but is it the best fix possible?
Looking at it like this gives me a new perspective on Xanpan.
I wanted Xanpan to be two things:
- An understandable description of actually following an Agile process, specifically a Kanban/XP hybrid process.
- An example of how, and why, teams should create their own processes.
The same paradox is here: Xanpan should be easy to start but allow you to improve; creating your own process requires a bit more knowledge that only really comes with experience.
To step back a minute and ask another question: What amount of change can a team handle to start with?
I find that I advocate more initial change than I used to. Because I'm fearful of creating a learned dependency I really want teams to learn to change and improve themselves. But, once a team has decided to change, I want to seize the opportunity and install a bunch of changes while enthusiasm is there.