Agile – Kanban or Scrum or bothNovember 11, 2016 at 3:51 pm | Posted in Agile - Beyond the obvious | Leave a comment
I find it a lot easier to share my thoughts through a real life example.
All of us have travelled by train sometime or the other. Let us visualize two rail stations A & B 100 kms away from each other. A train leaves station A exactly every two hours travelling at a speed of 50 Kms / Hr, reaching station B after exactly 2 hours. (Sounds like Tokyo subway?).
This is Scrum with 2 week sprints, start and end on predefined days, making sure that those who got in at station A reach station B on time. Very disciplined predictable and dependable for those who can book in advance, reach station A on or before time, and wait till the next scheduled train to arrive.
Life is not so simple.
How about those travelers living much before station A, or between station A and B? They have to make their own arrangements to reach station A.
How about those who want to get off after station B? They have to make their own arrangement to travel from station B to their destination.
How about those who want to get off between station A and B? They have to first wait till station B, feeling bad that they can’t get off as they pass their destination, and then make their own arrangement to travel back with resultant delay.
How about those who could only decide at the last moment and have a critical urgency to reach their destination on time? They obviously had no time to make an advance reservation.
Is there a solution?
How about a train that keeps going round and round, and people can dock-on and dock-off from their respective places? That’s Kanban.
Sounds chaotic? Yes it is. Anybody could just board at their own sweet will and inconvenience others who are already in. So we need some discipline; and some planning; and some visibility into the past present and the future. And an automated system for planning and sharing information to all concerned helps.
Such a system is Agile, or more specifically Holistic Agile, which to start with must clearly know for each person, or a group of persons, where they want to get off and when. That helps to start backward planning. The train’s capacity to carry the passengers is known. What is required is the available capacity for additional persons to get on board without inconvenience to anybody. For this we need a rule that no standing is allowed. A person can get in if and only if there is a vacant seat. Heard of WIP limit from Kanban? This will of course mean some empty seats from time to time. But a slack is always better than people stacking on top of each other. Those inside could move about interacting and helping others onboard.
For capacity planning we could consider stops every hour (or every 50 Kms away), and plan capacity for this duration. Something like virtual mini-sprints of a week each. Within these every 10 Kms or so away, the system needs to know number of vacant seats. Even better if information of seat availability in each compartment is being continuously monitored by the system. Such information would be greatly useful to those who are responsible to decide how many and which people should be allowed to get in.
For a start this is good enough. In subsequent posts we will try to apply this specifically software development supported by good agile tools.