Monday, August 31, 2009

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.

It is my first day at work after Agile 2009, and I must say I am both exhausted and re-invigorated at the same time. For me, one of the most exciting parts of Agile 2009 was that there were so many people buzzing about Kanban, a concept that I believe should be getting much more exposure and use than it currently is. By the way, if you are a fan of Kanban, check out the "Limited Work in Progress Society" web site to find all sorts of Kanban resources. Another good resource on Kanban is Henrik Kniberg's comparison of "Kanban vs Scrum". I'll write more on my thoughts about Kanban soon.

Saturday, August 29, 2009

Do you love reading blog entries about software development? Social news sites are a great way to find posts that you are interested in. The more people know about these sites, the more people will use them and submit great posts to them. Please help to spread the word about these sites. If you know of some that aren't on the following list, let us know!!

Friday, August 28, 2009

Agile 2009 was a blast again this year. I learned a lot and met lots of incredibly interesting people. While talking to a friend about MVP for GUIs I realized that somebody that had just presented on the topic was sitting at a nearby table and we asked him about it and got a great answer.

I believe there are lots of folks out there that would get a lot out of some of the conferences that are out there, like Agile 2009, if only they went once and experienced it. I've decided to dedicate some portion of my time to getting the word out on that. As a first step I created an impromptu video which includes many great answers to the question "why go to a conference vs just surfing the web and reading books?" Next time I'll be better prepared and do an even better version.

The video was taken while the conference was in full swing, but it was the last day and some folks were tired of going to sessions and were just hanging out in the open area. Esther Derby was doing an "Open Jam" session, Alistair Cockburn was just hangin' out, Dave Anderson was having a spirited discussion on something interesting (I know not what), and others were networking, just catching up on e-mail or waiting for the next session that they wanted to attend.

Wednesday, August 12, 2009

If you are interested in Continuous Integration, and you are going to Agile 2009, please consider attending one of my CI sessions:

Removing Integration Delays with Collocated Whole Teams and Multi-stage CIAs individuals we work in transient isolation to reduce the impact of work in progress on each other. Organizations isolate WIP by using only official versions of 3pty sources and by producing official releases for customers.

Multi-stage continuous integration (MSCI) scales CI to large distributed environments by isolating work in progress at the team level. Changes move from individual to team to mainline as fast as CI allows, but stop on failure.

MSCI is particularly important in a distributed environment where fixes to problems exposed by CI can be delayed by a full day. [Full Details]

Agile Source Code Management using Stories, Agile Workflow, and CIYou create iterations from a backlog of user stories managed via a taskboard with a simple “workflow” from “todo” to “done.” You use Continuous Integration. But in your source control system you’ve just got files and branches. You could create a branch for every story, but that’s a lot of branches to manage! How can you ask the source control system which versions/files correspond to the stories that are done in order to build the “done” version and do exploratory testing? This session will show how to manage changes using stories and how to use branches to represent your workflow. [Full Details]