Some of us have the luxury of designing processes for greenfield systems meaning there is no history/legacy to deal with.
Typically though, we are dealing with Brownfield/Legacy systems – This usually means there is some work in the system already, there are outstanding commitments, and some existing queues between steps in our processes.
I’m working with several clients that decided to start using a Kanban system to manage their work, and believe Limited Work in Process is key to improving their performance.
But a challenge most of them share is how to deal with is something along the lines of:
- We already have a commitment to deliver V10 with 20 features by end of October.
- Our testing department is backlogged – its still dealing with the previous release V9 while development are already working on those 20 features for V10.
- V10 is critical to the business.
We then discuss various ways to get from here to there.
The Freeze
Essentially prioritize all work. Anything that is in process but above the WIP limit, goes to the freezer – a new temporary lane/area where work is put on freeze until there is room for it.
The immediate effect would be acceleration of all work inside the WIP limit, and significant risk to the commitment made about the frozen work. Yes, you say that the original commitment took all the work into account so why is there a risk just due to changes in parallelism? Well, because we focus on the higher priority work, reality is that we might spend more effort on it, to deliver it with reasonable quality (not necessarily an attribute of previous releases…), we might spend more time investing in Versatility in order to sustain a lower more focused work in process limit. So, it would be prudent to negotiate the commitment level on a couple of lower priority features from the release… and give the business a heads up this might happen.
This is one of the fastest ways to achieve a new inventory/WIP level in the system. If we are looking to show quick results and are able to negotiate a temporary change in service levels with the business, this can be a great approach.
This strategy is elaborated in depth in the Theory of Constraints body of knowledge.
No New Work
This is a more evolutionary version – don’t freeze current work, but deny new work until we reach the desired work in process levels. This means anyone finishing work on something will look how he can help someone else, instead of starting something new. There will still be effects on the release commitment, but milder ones.
The price we pay here is that it will take more time to reach the new inventory/WIP level. It’s easier to negotiate with the business, but the results will show more slowly…
Here is a short clip of how it looks like:
Visualize now, Limit Later
This is even a more evolutionary version. You start with Kanban principle #1 – Visualize work. You don’t put any WIP limits for now. You see how work looks like, you try to manage WIP, but don’t limit it. Perhaps when negotiating commitments to the next release V11 you take into account a period of cleaning the system/queues and the implications of lowering the WIP, and at that point you go into a Freeze/No New Work period, with a bit more confidence in how this will look like, based on a few weeks/months of visualizing your work.
This clearly is the risk-averse approach. Just be careful of running out of improvement energies and forgetting that just Visualizing Work is not enough…
Differentiated Service
A tweak on all of the approaches above can be to treat different work types differently. This is what we call Classes of Service in Kanban.
For example, Normal work above the WIP limit will be frozen. Fixed date work will hopefully be inside the WIP limit and be allowed to finish. New Fixed date work can be allowed to start, with the condition that a Normal work will be frozen in exchange for introducing it. If all work currently in the system is Fixed Date, we can decide whether to allow the new Fixed date to start (should be a comfort zone for most organizations ;-) or to have a serious discussion with the business on the risks it introduces and how we want to address them.
We can also say we visualize all work, but limit specific types of work.
Feedback
What do you think about those approaches?
Which of the above did you find useful in real life?
Do you have other strategies for starting up in the real world?
I’ve used a combination of these approaches (or similar approaches). “Visualize Now, Limit Later” allowed WIP going through the roof (this is a longer story). What really helped us was “No New Work” and then “The Freeze”.
There is a connection to the Coplien pattern “Take No Small Slips” (http://orgpatterns.wikispaces.com/TakeNoSmallSlips) and – who would have thought? – the Backlog pattern in Scrum.
Thanks for the comment Jens!
I personally think of Scrum and Kanban as close relatives, each trying to make its claim to fame, which is to be expected… But there’s certainly lots of DNA in common, and I would expect a lot of the Scrum patterns, especially those based in Organizational design, to certainly be applicable in some contexts. I had a brief twitter exchange with Coplien about it several months ago and I certainly intend to keep looking for the connections and similarities. No need to reinvent the wheel…
I do believe Kanban provides some interesting ways to ease into “No New Work” compared to Scrum. I saw more than one team all confused about what to count towards velocity and how to commit when they’re in a “No New Work” or “Some New Work” phase trying to close gaps. Are we counting just full stories? How do we treat stories that close gaps for us? It requires some additional complexities around velocity tracking that are cumbersome, especially when its a team just starting up (usually that is exactly the situation).
Maybe real velocity can only be counted once the gaps have been closed? WDYT?
Regarding the “Take no Small Slips” you won’t find me arguing against it :-) I used it successfully a couple of times as a Dev Manager.
Hi Yuval,
Thanks for your comments!
Can’t we have Scrum without measuring velocity (or caring much about the numbers)?
What I like about Kanban most is the visualization of WIP and flow. I feel if there is flow and everybody is focused and cycle time is fast velocity is not that interesting any more.
We should be able to judge progress in terms of whether important stuff gets done. If there are “impediments” we should be able to identify and remove them without waiting for measurements.
What do you think?