What should an iterative-Agile team do if it appears that not all the stories they signed up for will get done? Possibilities include:
- Just get done what you can, velocity is velocity;
- Crunch really hard because you’ve made a commitment;
- Renegotiate with the Customer / Product Owner;
- Stop doing iterations: use a Kanban approach instead.
It’s this last one we are here to talk about.
There is as yet no solid definition of Kanban for Software that satisfies me, and what people are talking about here is in essence a continous flow kind of approach, usually with limits on the amount of work you have “in process” in various stages of the project. See Kenji Hiranabe’s article for example.
I take the idea, tweeted by John Goodsen of RADSoft, among others, to mean that if we didn’t have a defined edge to the iteration, then no one could complain that we had failed if we got only nine out of ten things done that we “promised”. As John tweeted:
It’s about falling short because of iteration planning – remove iteration planning and you remove the entire wasteful exercise.
I’ve certainly seen teams whose management or product owner would berate them for falling short of the iteration “promise”, and this can lead to some very bad results. The initial response will be to “under-promise”. Not “under-promise and over-deliver” — they’ll say that, perhaps, but they won’t do it. No one does.
When the team tries to under-promise, this same manager or product owner will push them to commit to more: it’s part of that management pattern. Most teams will cave and try to do more. They want to be cooperative, they want to be appreciated, and so on.
This will not work. They’ll fall short again. Management will continue the pressure. Finally, the team will turn their secret screws and start producing code that is shiny on the outside and rotten on the inside. Velocity will continue to decline, pressure will continue to rise, and things will get bad.
On the surface, we can see that a Kanban approach might fix this, because there is no defined point at which to apply this undue pressure. It’s not a bad idea: it might even be a good one, at least in the interim, for reducing the pressure.
Iterations provide rhythm
There can be a pleasant rhythm to the iteration, and there are things that fit naturally into it. It can be very pleasant to lift our heads up, look around, plan the week, then at the close of the week, lift up again, look around, and see how we did.
There’s work that needs to be done, such as reviewing the backlog, reviewing the product, perhaps some kinds of testing or other wrapup work that are not yet fully continuous. Some of those probably should not be continuous, though many of them should be.
Now Kanban advocates will say that Kanban is better (what else would they say?) because it lets you have whatever rhythms you want rather than “imposing” one. Uh huh, yeah, and that’s why people who don’t cut the grass every week have yards that look like forests.
Whack-a-mole
In my experience, a continous flow model becomes very relentless. There are always 7 things on your list. As soon as you get one off, another one pops up. Every day begins to look like every other.
I don’t know if this is inevitable or not. My experience suggests that it is at least very likely.
Bottom line?
The small batch flow of Kanban has advantages, there’s no doubt about it. Certainly the Kanban board alone shows us that.
I am not convinced at all that it’s always the best way: I don’t expect that there is an “always the best” way.
If a team is getting too much pressure to sign up for more work, and too much hassle about not “keeping its promises”, Kanban might take off the pressure and let something good happen. My guess, however, is that just moving to Kanban in such a situation might be ignoring the real problem.
But we don’t know. It’s another trick in the bag. I hope teams at various levels will try it and tell us just what they did, and what happened.
I use delivery of Customer recognizable features as the mini-break point and MMF (http://www.softwarebynumbers.org/) as the major break/celebration point. I think this breaks the monotony of always having X things to do.
I haven’t tried these ideas on a team of a size > 2 yet, so I am not confident.
Your thoughts?
-Mike
Well, I sure don’t know. Certainly makes sense to have times for breaks and celebrations. Is having them on a regular basis important? It might be, but I really don’t know.
R
Well, there are many potential breaks. Birthdays’ parties, large MMF delivery, spontaneous events like “let’s have some beer after the job together today”. I don’t think regular basis is a key. After all, there should be fun in the office, otherwise the company is doomed.
I hear ya. I think lack of rhythm is likely different from having rhythm. Important? Don’t know. We’ll see, perhaps.
I also believe that you hide the real problem when you switch to Kanban just because failing delivery. I have just had an argument with our PL/PO about not skipping sprints, just because we saw we did not have time to do all stuff she wanted us to do.
On my past commission we (…well ok, it was me) started scrum the guerilla way. Not much was agile at this place. But after some time we all stood by the whiteboard. One of the problem we had was that we have this SLA-agreement with the customer. The contract we worked under made sprints not working very naturaly.
So, it was the stiff context that forced us to switch to Kanban.
A good thing with Kanban was that we could answer to the SLA more natural way. But like you write [Ron], I got the bad feeling of a never-ending flow. I missed the sprint-goals!
Now we have gone back to Scrum. We still limit the work-in-process and all that, but we need the scrum-framework to measure results, evaluate tools and improve our processes. We handle the SLA by removing time from developers availability when planning the sprint.
If we would not manage the delivery, and this is seen halfway through sprint, then I would not switch to Kanban. I would see that as something we need to learn from in future. (I guess that how we take action depends on the situation.)
This is the first time I’ve heard that kanban is a response to not having all stories done within a time-boxed approach. Whoever is making that argument misses the point entirely.
I’m afraid that people will use Kanban to justify their bad practices. The same way that we heard people say that they don’t estimate, document or plan because they are agile.
I still think that Scrum/XP deliver a good set of product management tools and they shouldn’t be thrown away that fast.
I see Kanban as a good way to organize the work, but I still think that estimating the work and having a backlog as necessary in my current environment.
I agree that people tend to use Kanban as an excuse to avoid prejudicial pressure from managers who berate them for falling short of the iteration “promise”. But as people who say that “don´t plan because they’re agile” I think that teams who aren´t able to give managers/PO reasonable expectations or don´t fell like the work has a “rhythm” are doing Kanban wrong.
I think that you´re missing the “order point” in this Kanban implementation that you describe. In manufacturing, an order point is an inventory level that triggers a process to order new materials. Here, as we pull items from the backlog to be processed, the backlog will diminish until the number of items remaining drops below the order point (2 user stories). When this happens, a notice goes out to the responsible parties to organize the next planning meeting. This “resupply” process should include a retrospective and everything that provides a rhythm.
In the kanban implementation that I´m helping to implement here in the company, whenever we put new itens in the initial queue (ie. “the backlog”, limited to 8 user stories) if there isn´t already a “retrospective” story in this queue we add one at the first empty space. This way, we always do a restrospective after some time. We just don´t do it after a fixed time (ie. one week), “interrupting” the development. Also it´s not always at the same day and with the same people of the planning meeting (ie. the meeting that puts more itens in the first queue), depending on what problems we faced and how we want to tackle them.
It may be important to note that, keeping this rules, when everyting flows smoothily, we have a planning and retrospective meeting exactly on the same day and with every member of the team in both meetings after a “2 week sprint”. The diference is that when we have technical problems or the business priorities change, the meetings are “automatically” rescheduled or the work reprioritized without anyone having to scream “Abort the Sprint!”. Our flow, velocity and impediments are also much more visible to everybody, as delays are visible daily, detailed by backlog item, not only at iteration boundaries.
Ron, is it just serendipity that we (nearly simultaneously) blogged about a similar situation? Thank you for adding a few potential options to my very short list. I agree, we have to be sure we’re not applying a technique that will hide a deeper problem.
My post (and feel free to weigh in on the debate):
http://tinyurl.com/lcr3xl
Love your blog name, BTW. Named for the ship, or the original Kzinti device?
I’ve seen teams change (or express the desire to change) the iteration length or to dispense with iterations when they are having difficulty meeting their commitments. In every case I’ve seen so far, the change has been a “band-aid” or “pain-killer” for some other problem. The team is not managing their work flow well, or there are external impediments that aren’t being managed well. Lengthening the iteration or dropping the iterative model will not address the root cause(s). They’re just making the impact of the problem less visible or delaying the recurring train-wreck by an extra week or two.
Hi Ron
Here’s a quick story of my experience. I originally blogged this experience at http://availagility.wordpress.com/2008/04/09/a-kanban-system-for-software-development/
My team were suffering from repeated failed iterations for the reasons you describe. PO wanted higher productivity. I (as ScrumMaster) wanted to stabilise velocity. Pressure. Tension. Low satisfaction all round.
Moving to Kanban resolved the issue. Or did it just hide the issue? I believe it resolved it for the following reasons. Satisfaction increased all round, including the Product Owner. The team started delivering what the PO wanted in a time-scale he was happy with. I believe that a significant cause of this was that removing the time-box removed the cause of the tension, and enabled the PO to become part of the team.
Does this make time-boxes bad? No. But we found an alternative means to improve.
Karl
Hello Ron – When I coach on the kanban technique, I advise the team to pick their cadence/rhythm points. I make some recommendations based on my experience, but really let the team as a whole decide on what works for them. It really varies based on the teams maturity with other agile practices and how well they function as a team. Here are my current recommendations, subject to change
Retrospectives: I recommend they schedule reoccurring retrospectives since courage and communication is the most important thing we do. It also lets us focus on the positive and the things we need to adapt/improve on. I recommend having a retro kanban board that should be reviewed during the retro’s. This doesn’t mean you can’t also trigger (signal) a retro in addition to your regularly scheduled one. Lets say we have a retro every 2 weeks. During those two weeks, if 3 new retro cards hit the new queue on the retro kanban board, then it’s time to have a meeting – don’t wait until the cadence meeting.
Backlog Management: I do recommend that backlog management become triggered. It’s a pull situation, if we have constraints downstream; there is no point in honing the backlog. That doesn’t replace regularly schedule meetings with your customer – that should also be on a cadence. Again this vary’s on the size of shop and customer proximity.
Show & Tells: I recommend these are triggered. What is the right amount of software to demo, some iterations may have 20 things to show and the next 5. My experience has led me to believe that once people see 5 things demo (or no more things than I can see in 1 hour), they lose interest, as most meetings over an hour do. So, I would rather trigger this and have the meeting when necessary to keep the goal of the meeting at the right quality level. Another approach is to have one when a feature set is complete.
So, if you tried my recommendations, the iteration begin & end happens on the day we do a scheduled retro, say every 2 weeks. I guess my real view is that “an iteration” as just another trigger, time is the trigger.
> Uh huh, yeah, and that’s why people who don’t cut the grass every week
> have yards that look like forests.
They just want to make sure they don’t waste any water.
We’ve been doing Scrum and 2 week iterations for almost a year now. We win some/we lose some…it’s really been no big deal. Overall our PO’s pretty satisfied.
We are going to try Kanban though still because we feel like things are getting a little stale. Sometimes it just depends on the nature of work that we’re doing and how it splits up.
In general, I think the idea of imposing any of these imaginary constraints is a powerful exercise. Whether it be WIP limits, time boxes, forcing yourself to write a failing test before you write production code, forcing yourself to pair up with another programmer or tester. Just keep an eye on the bigger picture and cycle through these ideas often enough to figure out where and when they fit. And while you’re at it, try to invent some of your own and share them with the world.
I feel that going into something new thinking it will be a cure for what isn’t working will only be a temporary feeling. The “Real Cure” will come from building trust and skill on the team as you continue to frequently deliver value and tune your team’s methodology. It may be that those are just side effects of switching from one cloud to the next, and maybe even back again.