A Scrum and Kanban Comparison

In a recent thread on the kanbandev list, Tim Uttormark asked about how Kanban handles teams with different dysfunctions without the Sprint timebox and associated meetings.  He gave the following example:

In Scrum, all tasks for the iteration are estimated by the team in sprint planning. Tasks assignments are not known at the time of sprint planning. The task estimate results from a team consensus, so the one doing the work on a task is not (solely) responsible for creating the estimate.

In my example, Harry (due to his incompetence) and Bill (due to his laziness) would fall short of the standard set by the team’s task estimates. Jeff’s behavior will not point as clearly to him as the problem, but will still be manifested as a team issue. Since he is highly skilled, he is probably able to produce at a higher rate than the average team member, and he can finish his tasks on time despite overengineering them. The team however would be better off if he stopped at “good enough”, finished early and moved on to other tasks. Jeff’s dysfunction would likely be manifested as the team missing their sprint commitments — the team needs the above average performers to complete more than their share of tasks to compensate for the lesser performers. In this case the team’s estimate of how much work they can commit to completing in an iteration provides a standard for comparison of team performance. Of course this can be gamed too, but requires more of a team conspiracy than just individual efforts to undermine it.

I responded by trying to map the Scrum process onto a Kanban process in order to show how a kanban system might deal with the same situation.

Sprint Planning is where the team collectively and collaboratively plans and commits to a small increment of work. As you say, this meeting will highlight any mismatches in understanding of the problem or solution by generating the Sprint Backlog with tasks and estimates, such that the whole team has a common understanding of what needs doing and how long it should take. Harry’s incompetence can be mitigated because he should have a better understanding of the solution. Bill’s laziness can be mitigated because he has been part of the estimation process, and Jeff’s over-enthusiasm can be mitigated because scope has been clearly discussed.

The Sprint Review is where the team are accountable for their Sprint commitment. This accountability should again mitigate for Harry, Bill and Jeff, because they have to demonstrate their progress and explain variation from the plan.

The Sprint Retrospective is where the team can explore reasons behind variations from the plan (and strengths and weaknesses in general) and can inspect and adapt in order to learn and improve. Over time, this can also mitigate individual weaknesses.

So for Kanban…

Sprint Planning becomes Feature Planning. Rather than planning a timeboxes worth of product increment, the team plans a single valuable increment at a time – sometimes referred to as a Minimal Marketable Feature (MMF). The team limits the amount of work in progress in order to minimise the cycle time of these MMFs. Once they have completed and released an MMF, the pick up a new one and start by planning it. The Planning can happens as a team, and break down into tasks and estimates as per Scrum, thus bring the same benefits and mitigating weaknesses in the same way. A possible downside is the break in flow that may happen when you bring the team together. A solution to this could be to keep a prioritisation and planning cadence – e.g. a weekly meeting to decide what the team will be working on next, and to plan it out. The frequency of this meeting will probably depend on throughput. The more frequently the team is able to complete and release work, the more frequently this meeting can be scheduled. A difference between this planning cadence meeting and a sprint planning meeting, is that the planning is ‘de-coupled’ from the release. In other words, whatever is planned does not have to be completed and released before the next planning meeting. In an ideal world, however, the MMFs are able to be small enough such that they can be completed and released within a week. In this case, Scrum with weekly Sprints can look very similar to Kanban.

Because of this ‘de-coupling’ of planning and release, a commit and deadline is made per MMF. This is sometimes referred to as a Service Level Agreement (SLA) between the team and business. The SLA says that the team will deliver features X days from when they are prioritised in the planning cadence, and is usually derived from past measurement of cycle-time. Where there is variability in the size of MMFs, different SLAs can be set for different sizes. Standard Scrum story point estimating can be used to classify the MMFs into different SLAs. A Due Date Performance (DDP) metric can also be measured, which is the percentage of MMFs delivered within their SLA. This SLA and DDP is what creates the equivalent team accountability in Kanban. I blogged some more about this here.

Sprint Review can still happen as part of the Release cadence. However, as we have de-coupled planning from release, this can happen as frequently as necessary, depending on the cost associated with a release. In the ideal world, this cost is zero, and you could release small MMFs daily. In this case, a small review of each MMF as it is completed might be appropriate. If there is a small release process the team needs to go through, then a weekly release cadence might be better, with a weekly Review. Whatever the frequency, the release cadence brings the same accountability for what has been delivered, and how long it has taken.

Sprint Retrospectives, similarly, can still happen with their own cadence. Kanban does try and shift the emphasis on the improvement to be as continuous and ‘kaizen’ as possible, but a fortnightly or monthly retrospective would certainly be a good thing to start with. Again, the retrospective brings the same benefits as in Scrum. I blogged some more about this here.

So I’d say in summary that a kanban approach includes all the elements of Scrum (including stand ups as well), but decouples them from all being tied to the Sprint. This can create a more natural process. On the other hand, it can also be less clear what to do when as its not so defined.

Kanban Commitment

In a recent post on kanban-esque scheduling, Brian Marick asked whether using a kanban system to manage software development has enough discipline, and in particular whether there is enough commitment to deliver. I’ve been working on ways to answer this, and recently came to a conclusion, when David Anderson reminded me that Corey Ladas has already said the same thing, which he described as striking a different bargain with the business.

To put it in a nutshell, rather than making commitment on an iteration/sprint/time-boxed basis, you make the commitment on a feature by feature basis. In other words, when a Minimal Marketable Feature (MMF) gets scheduled, you agree an SLA for when it’ll be delivered. As Corey has already explained the concept so well, I’ll instead describe how I came to the same answer.

When we were using a more Scrum-like approach, we make a forecast of what we could deliver on a Sprint by Sprint basis, along with a longer term forecast using the Product Backlog. However, moving to a more kanban-like approach meant that there were no time-boxed forecasts, and the Product Backlog became just a list of things to do no prioritisation and forecasting.

But the business, however, still wanted some idea of what to expect in the coming months, so for the last two quarters, we’ve tried to put together a high level roadmap. The kanban approach meant that we didn’t want to invest much in analysing and estimating a Product Backlog up front. Instead we identified some key MMFs and did some simple T-Shirt size estimates, and based on our historical velocity we plotted out what we thought we might deliver in each of the following three months. This was very quick and high level, such that we planned for Q1 this year in under 2 hours. What we have actually delivered, however, has turned out to be very different due to the usual changes in circumstances and priorities.

That’s a fairly clear indication to me that even such basic estimation in advance is wasted inventory. So how do we set an appropriate level of expectation with the business so that they know when they might get a feature? Cycle time and throughput help, but when MMFs are of varying size, the calculation of when to prioritise can be complicated. On one the Agile mailing lists, Alistair Cockburn recently described the purpose of planning to be able to answer the question “With what we NOW know, what will the most useful system we can create look like on THAT date?” and that’s when it occurred to me that an estimate is just a way of setting an SLA with the business so that they have confidence that if we start something NOW, then it will be done by THAT date.

As a result, estimation can be done in a lightweight way at the “last responsible moment” in order to set an SLA with the business. The last responsible moment will depend on the criticality of the feature. For a more critical feature, the SLA may be required earlier in order to ensure it can be prioritised soon enough. For a less critical feature, the SLA may only be required when it as actually scheduled.

To get back to Brian’s concern then, the discipline and commitment is because the team is saying, as Corey puts it, “When we agree to take on a work request, we intend to deliver it within n days“.