Does Agile use Kanban?
A friend recently asked the question ‘Do you have to have similar sized stories in order to make Kanban work in Agile?’ This prompted my response to his question:
“Kanban, as implemented in Lean Manufacturing, is part of a ‘pull’ system. In an ideal pull system when a unit is sold a signal is sent within the pull system to indicate that the system needs to manufacture the unit that has been sold. Often this signal is in the form of a card on a wall or billboard. (’Kanban’ in Japanese actually means ‘billboard’.) More often though, a Kanban system is used to trigger replenishing inventory when inventory in the workflow gets to be too low for the step in the workflow that is consuming the inventory.
“The use of Kanban in Agile really isn’t a pull system though. In Agile, the Agile Wall is used to indicate work that is available but the work is pushed through the system and is waiting to be pulled by the next step in the workflow when they have cycles available to do the work. (The key word there is ‘waiting’ to be pulled.) So, although people pull work from the Agile Wall, the work was pushed onto the wall from the previous step in the workflow.
“A better approach to keeping the system optimized is to not worry about keeping the size of the stories the same in order to keep the flow even, but rather use Theory of Constraints to make sure that the constraint in the system is never starved. Doing anything more than that has little effect on throughput so considering story size becomes a moot point.”
It’s great that the Agile community is embracing the fundamentals of Lean. Eliminating waste and reducing unevenness and overburden are consistent with the tenets of Agile. We just need to be careful in embracing terms and not really knowing what they mean or how they relate to what we do in software development.
September 11, 2008 at 10:55 pm
Absolutely. The Kanban stuff is great, I just always thought to myself. “You’re just moving the inventory outside of the development team.” I wonder if you could actually pull requirements from the customer…
September 12, 2008 at 8:31 am
Agile can use a kanban pull system. I’ve blogged about experiences here – http://availagility.wordpress.com/2008/04/09/a-kanban-system-for-software-development/ – and you’ll be able to find links to other writing from there.
Karl
September 21, 2008 at 10:02 pm
I’ve been playing with this notion a lot lately, since I’ve been working on a new workflow for our issue tracker that a few of our colleagues and I developed.
Issue trackers often operate on a “push” model. In other words, you are assigned to work on piece of functionality because the person who is in front of has completed it and it now there. If you let it sit there, your manager or PM will get on your case because everyone knows it’s your turn. You are expected to expand your capacity to what is “pushed” to you.
Since I favor a pull system, I’d like to have statuses in the issue tracker that reflect the notion of “pull”. So if a BA completes a story, it is in a “Refined” state and remains in that state until a developer has completed it. It then goes into a “Developed” state and remains there until it is Done. What I like about this model is that it removes assignment from the picture and allows those managing the project to optimize by looking at the status of the stories. The idea is that this system will make the constraint stick out like a sore thumb.