Monday, August 31, 2009

Applying the Decoupling Principle to Scrum

While working on a post about Kanban, I realized that there is a general software engineering principle at work in Kanban that can be applied to Scrum without needing to mention Kanban at all. The principle is: decoupling. That is, separating two or more things which are currently coupled together but don't need to be.

In Scrum, there are many activities which are often tightly coupled to the iteration cadence: iteration planning, having a shippable increment of work, the size of the largest story, iteration reviews, retrospectives, and releases. If you have been practicing Scrum for a while, it is likely that you have already started to decouple some activities from the iterations.

Decoupling Iteration Meetings and Story Point Estimation
Many Scrum teams have a weekly meeting to estimate story points for stories that have made it near the top of the backlog and don't yet have story point estimates. This decouples story point estimation from both the iterations and the iteration planning meeting itself. How far down into the backlog you go depends on what goal you are trying to achieve. If you just want to simplify iteration planning, you only need enough stories to cover one iteration worth of stories and perhaps a bit more just in case some stories aren't chosen for that iteration.

Decoupling Retrospectives
Let's see how decoupling might be applied to more practices. When just starting with Agile, it is much harder to use 1 week iterations than 4 week iterations. If you are doing 4 week iterations, you would naturally do a retrospective once every four weeks. If you move to 2 week iterations, you would naturally do a retrospective every two weeks.

But why not do retrospectives every week or at least every two weeks, regardless of whether you are doing 4 week iterations or two week iterations? Shouldn't the cadence of retrospectives match the cadence of their usefulness? In my experience, there is always something worth talking about every week of any project. There is always something to reflect on and improve. In any case, instead of just scheduling a retrospective at the same cadence as your iterations, schedule the retrospectives at a cadence that makes sense for your needs.

Decoupling Iteration Reviews
Another practice to consider decoupling from your iteration cadence is iteration reviews. Let's say you have 1 week iteration reviews, but it is logistically difficult to schedule iteration reviews involving multiple customers more often than once per month. Perhaps you normally have both internal and external stakeholders at the reviews. One solution would be to continue to have weekly reviews with just the internal stakeholders that are interested in being there every week, and have monthly reviews for external stakeholders. That may actually require a bit more work on your part, but if the value is there, why not consider it?

Simplification and Delegation
Another benefit of decoupling is that by breaking things apart it makes it simpler to tackle or delegate process improvement efforts because you can concentrate on smaller parts which are running at their own cadence. In the example of the iteration reviews, by separating out the external stakeholder meeting, you can now focus on ways to simplify or delegate that part of the process. Perhaps the only problem is getting a web meeting solution in place. Now you can solve that problem without impacting the internal stakeholders.

Consider how the decoupling principle will work for you. I would be interested to hear what you've already decoupled and your thoughts on applying the decoupling principle to Scrum. If you want to read about how to take decoupling to the next level, click on the next post below.


Next: Transitioning from Scrum to Kanban

5 comments:

Urs Enzler said...

We use 2 week sprints. We "decoupled" the story point estimation by introducing a so called pre-planning meeting on every Tuesday of the second week of every Sprint. Therefore it is still coupled to the cadence of a Sprint.

And there are some regular meetings with stakeholders that are decoupled form the Sprint due to "meeting-time-finding-restrictions" :-)

Damon Poole said...

Thanks for your info Urs!

Derek Mahlitz said...

I think the decoupling will come naturally with an experienced team that has followed scrum closely. Thanks for the article, it brings it home.

Otto Paulsen said...

Hi. I like your idéas about decoupling. Think I am going to try this soon. My team is more than ready. However, I am wondering about your last statement, that the release cannot be decoupled from the sprint. I think that if the user stories (or backlog items) are decoupled from each other, they could be released any time they are done. What I see often is that user stories are coupled because there are several in a MMF set. In these cases we may need several sprints before we can release, but the release can still be decoupled from the sprint period. But then again, we don't do that :-) We release only every 3 months, so we have a whole 2-week sprint just for doing the release, so we are a lot mor coupled than what I think is necessary.

Damon Poole said...

Hi Otto,

Thanks for your comments. Actually, I meant that releasing bits that include something that isn't done wouldn't work. I have now edited the post to clarify.

Regarding the decoupling of stories, that is definitely the next step! I have a whole series on that starting with Transitioning from Scrum to Kanban Part 1 .

Cheers!

Damon