Posted on September 10th, 2009

Ah, the Sprint Backlog. While not quite as visible as the Daily Scrum, the Sprint Backlog makes up the core trifecta of Scrum. And what developer wouldn’t love it? Every two weeks (or four weeks, or whatever iteration length you have) we’ll get together with the product owner. They’ll tell us what is most important, we’ll tell them what we can get done, and we’ll add that to a list. During the iteration that list is all we know as a development team, so no more of this, “I have to have you work on this other thing now!” business.

To a team working in utter chaos, it sounds like the perfect club to wield against a management unit that can’t make up their mind. “Sorry, we’re doing Scrum, and it says you have to leave us alone over the next two weeks.” What they don’t realize is that something that is a weapon can be used by both sides – and when the team doesn’t finish all of the stories they signed up for, management will use that same club against them. But if we look closer at why we have the Sprint Backlog, and why we have to have the Planning Meetings, we can understand better when we can tweak them to fit our needs.

In traditional software project management, the question is, “Can you all get this stuff done in this amount of time?” Because developers are a) optimistic and b) really bad at guessing, the standard answer will be “Absolutely!”. And because management and/or the customers don’t know what they want there will inevitably be a point when everyone realizes they aren’t going to make it, leading to what is known as a Death March.

But the goal with Scrum is instead to say, “Here is how much work we can get done in a timeboxed period. Let’s deliver the most value we can in that time.” So the sprint planning games become the place where the stories are reestimated, reprioritized, and signed up for to create the Sprint Backlog. And because we know the approximate velocity of the team, the release planning becomes a matter of looking at the story estimates, looking at the velocity, and then adding up stories until the time we want to release.

(In theory, of course. One of the better practices I saw with this was to have all of the stories estimated for the release, then add two cards that were each 10% of the total value – one for changes, and one for refactoring or other technical debt. That team generally hit within a week of their estimated date on 6-month projects)

Consistency is the secret sauce

Inherent in developing the Sprint Backlog is that the team can consistently deliver the same velocity iteration after iteration. Using a technique known as Yesterday’s Weather, teams can do a pretty good job of signing up and delivering the stories during the planning meeting.

The interesting thing is that the onus of this process is the consistency of the development teams. While that may make good fodder for mathematical calculations and modeling of release planning, it isn’t always the best for the developers. If we’ve signed up for two stories – one a “4″ and one a “2″, then all of a sudden we find ourselves having to do some planning to make sure that we break these down enough to get them finished. In other words, the stories don’t naturally flow through the team.

But what if they did? What if the consistency wasn’t in the teams, but in the stories themselves?

“Look honey, a real, live Business Analyst!”

Uneven flow when story sizes are variableIf we begin to look at the flow of items through the system known as our development process, we see something interesting. In this chart, we see that even though the story sizes don’t appear to have too much variability, the number of actual hours to complete each one varies wildly. What we really want to do is setup the backlog in a way that smoothes these bumps to reduce the variability in the tasks.

To do that, you begin by throwing away estimates. Instead, your card is your estimate. So if it is written on an index card, it should be the same approximate size as the other index cards. Let’s say a story on an index card only goes on there if the team knows they can finish it in two days. If the product backlog has items that are bigger, then you have a whole group known as business analysts who can evaluate, research and find out just how to break that into smaller items.

When this variability is reduced, then the question is no longer, “Here’s how much we can do in two weeks. Fill us up”. It simply becomes a matter of, “Ok, we’re done! What’s the next prioritized story?” As that begins to happen, the need for a “sprint backlog” begins to go away – the sprint backlog is simply, “What’s next?”

Sounds great, Bob! What else do our contestants get?

There’s an important point here. To get to this, you have to be at a maturity level to allow for several things:

  1. Recognition of flow through the system – You’ve taken the time to do value stream maps to figure out where the bottlenecks are.
  2. Invested customers – You have customers and business folk who are willing to work with you to get that level of detail
  3. Strong definition of done, done – because the consistency comes out of small stories, there is no room for “mini-waterfall” iterations. The team has to be very good at delivering running, tested features

Without these things, then the Sprint Planning Meetings and Sprint Backlog serve a very important goal – to stabilize and checkpoint the development process. So as you begin modifying the planning game and the backlog ask yourself – are we modifying this because we’ve analyzed the flow of our system and found that we need a different optimization stream? Or is it simply because your team can’t even meet two or four week commitments?

, , , ,

1 Comment


Posted on September 7th, 2009

Perhaps the very first and most widely “adapted” practice in the Scrum world is that of the timeboxed iteration. Henrik’s Scrum Checklist identifies four subareas of concern:

  • Iteration Length 4 weeks or less
  • Always end on time
  • Team not disrupted or controlled by outsiders
  • Team usually delivers what they committed to

The original guidance in Scrum was 30 day sprints, but current versions of the Scrum Guide now recommend teams start out at two week sprints. However, even this isn’t enough for some teams – while some struggle to achieve working software in 6 or 8 weeks, others release working software every day. So how does a team know when to modify timeboxed iterations?

Here lie dragons

It is perhaps easier to start with the antipattern of modifying timeboxes. Unfortunately, these are pretty easy to spot – the team fails to meet their commitment during the scheduled timebox. This causes spillover into the planning game and to the next iteration with the team signing up for even more than they did the first iteration.

This usually continues for several iterations until either the iterations are “extended” (“This iteration is now 6 weeks long”), made longer (“We can’t do 4 week iterations, so let’s make them 8 weeks long”), or dropped all together. At this point the team is now without any guidance at all as to when things are going to be done. Long term release planning now becomes a complete guess as the team’s velocity is wholly unknown, and typically the entire premise on which agile was introduced becomes unravelled.

Perhaps surprisingly, timeboxed iterations are not to blame here. Indeed, it is the lack of self-reflection from the team – often based on immaturity as a working unit – which led them to spiral into a pit of disrepair. Let’s look at the team making two different decisions to alter timeboxed iterations which result in a much happier outcome.

If it doesn’t fit, it’s too big

Let’s say the team encounters the end of their first four-week sprint and finds that they did not make their commitment. And they over commit the second sprint signing up for more than they had in their first sprint plus the additional overwork to be done. By the third sprint, they seem hopelessly destine to be another agile failure. However, the team members, recognizing a bad thing happening, quickly gather the team. They decided on the tactic that if you can’t finish stories during a sprint – your sprint is too long. They decide to see what happens when they drop to 2-week sprints.

They discover that they need to break their stories down more, become more targeted in how they test, how they develop, how they release. Suddenly, what they couldn’t do in 6 weeks, they are regularly making happen in 2 weeks.

Or perhaps it doesn’t belong at all

Let’s look back at our team again. They are hopelessly stuck on their third sprint. However, instead of shortening the iterations, they decide to find out what is causing them not to meet their commitments. They discover that while the work flows through development just fine, it gets hung up during testing.

To solve this, the team decides to establish a Kanban board to visualize the workflow state of the work in progress. Additionally, because of the amount of items caught in testing, they decide to put a Work-in-Progress limit of 4 on the test column. That means that if there are 4 items in testing, no others can be moved to testing until the items are cleared. So the developers can’t move things along, encouraging them to jump in and help clear the backlog.

After several iterations of this, with the team applying the theory of constraints to find impediments, they discover that the “timebox” concept for flowing work doesn’t fit with their model. They have become so adept at it that each story is now approximately the same size, so estimation becomes a simple act of card counting.

Which team are you?

You’ll notice that the key outcome here is dependent on two factors. First – the maturity of the team and their ability to self-reflect to look for solutions (and try new ones). Second – the context of the work coming in. For our last team, if the business couldn’t feed stories into the pipeline that were about the same size, then other tactics might have to be put into place to allow for estimation and sizing.

So when you are considering dropping timeboxed iterations, ask yourself – are we dropping them because they aren’t of value? Or because we are afraid to face the real issues causing us from delivering value to our customers?

, , ,

6 Comments