tags:

views:

1102

answers:

9

We have been using Scrum for around 9 months and it has largely been successful. However our burndown charts rarely look like the 'model' charts, instead resembling more of a terrifying rollercoaster ride with some vomit inducing climbs and drops.

To try and combat this we are spending more time before the sprint prototyping and designing but we still seem to discover much more work during the sprint than initially thought. Note: By this I mean the work required to meet the backlog is more involved than first thought rather than we have identified new items for the backlog.

Is this a common problem with Scrum and does anyone have any tips to help smooth the ride?

I should point out that most of our development work is not greenfield, so we are maintaining functionality in an existing large and complex application. Is scrum less suited to this type of development simply because you don't know what problems the existing code is going to throw up?

Just how much time should we be spending before the sprint starts working out the detail of the development?

UPDATE: We are having more success and a smoother ride now. This is largely because we have taken a more pessimistic view when estimating which is giving us more breathing space to deal with things when they dont go to plan. You could say its allowing us to be more 'agile'. We are also trying to change the perception that the burn down chart is some kind of schedule rather than an indication of scope v resources.

A: 

You can integrate the new work at the sprint's start date, to have a great looking Burndown chart.

You can tag with a specific marker the additional work and evaluate at the sprint's end why you haven't be able to identify those tasks before.

Pierre-Jean Coudert
A: 

This is as it should be. If your burndown chart looks like the model chart, you're in trouble. The chart will help to see if you will be able to make you commitment and finish all the stories.

Discovering stories during the sprint will always happen. Ideally you would be able to design and find out the tasks up front but if they worked why would a big upfront design not work? To answer you last question, the sprint planning should take at most four hours.

JeroenWyseur
+1  A: 

As others have said, I would expect a burndown to be up and down. Stuff happens! You should use the "up and down" bits as fodder for your retrospectives.

Make sure everyone is clear on what "being done" means, and use that joint understanding to help drive your planning sessions. Often having a list of what constitutes done available will (a) help you remember things you might forget and (b) will likely trigger more ideas for tasks that would otherwise surface later on.

One other point to think about - if you are working month on month with an unpredictable codebase, I would still expect your velocity to normalise out to a reasonably steady rate. Just track your success against your planned work and only use completed items as a maximum when planning. Then focus on your unplanned tasks and see if there are any patterns that suggest there are things you can do differently to include those things in the planned work.

Paul Hammond
+2  A: 

In my experience, Scrum is definitely geared more towards new development than it is towards maintenance. New development is much more predictable than maintaining an old, large code base.

With that said, one possible problem is that you're not breaking up the tasks into small enough chunks. A common problem people have with software planning in general is that they think "oh, this task should take me 2 days" without really thinking about what goes into doing that task. Often, you'll find that if you sit down and think about it that task consists of doing A, B, C, and D and winds up being more than 2 days of work.

17 of 26
Great point about maintenance. I'd like to add to that and even building on existing (but older) functionality suffers - especially stuff that predates an architecture change or a technology switch (C++ to C#, etc.)Scheduling maintenance tasks as part of stories is really important. Kruchten has a great pitch on breaking tasks up into 4 types: Features, Defects/Bugs, Infrastructure, Technical Debt. You should have a balance of the four. PDF: http://philippe.kruchten.com/kruchten_backlog_colours.pdf
dariusz
+1  A: 

I have had similar issues. My previous team (on it for over a year) was large and we maintained a very large, rapidly changing codebase for series of initial product launches. Our burndowns were shameful looking, but it was the best we could ever do.

One thing that may help (make your graph look better) is stick to the number of hours/points committed to constant. If you have underestimated a task, and have to double hours, pull something out of the sprint. If you pull in a new task, it's obviously of higher priority than something your team committed to so pull that other thing out.

We tried the breaking up the task into many tasks in and before planning, and that never seemed to help. In fact, it just gave us more damn tickets to keep track of during the sprint. Requirements started migrating to the tickets and (not surprisingly) got lost in all the shuffle.

On my new team we took a pretty radical approach and started creating big tickets (some over a week long) that say things like "implement v1.2 features in ProjectX." The requirements/feature lists for ProjectX (version 1.2 included) are kept on a wiki so the ticket is very clean and only tracks the work performed. This has helped us a lot - we have way fewer tickets to keep track of, and have been able to finish all our sprints even though we keep getting pulled off our sprint tasks to help other teams or put out fires.

We continue to push items out of the sprint if (and only if) we are forced (by the man) to bring in new items.

Another simple tip that helped us: add "total hours in sprint" to your burndown. This should be the sum of all estimates. Working on keeping this line flat may help, and increases visibility of the problems your team may be facing (assuming that won't get you demoted...)

-ab

brooks hollar
+1  A: 

I had similar problems in my burndown as well. I "fixed" it by refining what was included in the burndown.

SiKeep commented:

Its progress against the backlog selected for that sprint, which may or may not end up as a release.

Since you selected certain things for the sprint and that's what is on the burndown, I don't know that all the "new work" should appear in the burndown. I would see it going onto the backlog (not affecting the burndown), unless it's important enough to move into your current sprint (which would then show up as an upward trend in the burndown).

That said, minor up's and down's are normal, if the trendline basically follows your expected velocity. I would be concerned about the roller-coaster trend you're mentioning. However, the idea of isolating the burndown by only adding high priority items to the current sprint may help dampen these up and downs on your burndown.

As others have said, the planning before the sprint starts should be short...(no more than 4 hours).

Steve Duitsman
+17  A: 

Some tips on smoothing things out.

1) As others have said - try and break down the tasks into smaller chunks. The more obvious way of doing this is to try and break down the technical tasks in greater detail. Where possible I'd encourage you to talk to the product owner and see if you can reduce scope or "thin" the story instead. I find the latter more effective. Juggling priorities and estimates is easier if both team and product owner understand what's being discussed.

My general rule of thumb is any estimate bigger than half an ideal day is probably wrong :-)

2) Try doing shorter sprints. If you're doing one month sprints - try two weeks. If you're doing two weeks - try one.

  • It acts a limiter on story size - encouraging the product owner and the team to work on smaller stories that are easier to estimate accurately
  • You get feedback more often about your estimates - and it's easier to see the connections between the decisions you made at the start of the sprint and what actually happened
  • Everything gets better with practice :-)

3) Use the stand ups and retrospectives to look a bit more at the reasons for the ups and downs. Is it when you spend time with particular areas of the code base? Is it caused by folk misunderstanding the product owner? Random emergencies that take development time away from the team? Once you have more of an understanding where ups and downs are coming from you can often address those problems specifically. Again - shorter sprints can help make this more obvious.

4) Believe your history. You probably know this one... but I'll say it anyway :-) If fiddling with that ghastly legacy Foo package took 3 x longer than you thought it would last sprint - then it will also take 3 x as long as you think the next sprint. No matter how much more effective you think you'll be this time ;-) Trust the history and use things like Yesterday's Weather to guide your estimates in the next spring.

Hope this helps!

adrianh
+2  A: 

I am happy to hear that scrum has been largely successful for you - that is more important than having the sprint burndown chart look ideal. The sprint burndown is just a tool for the team to help it know if it is on track for the sprint goals. if the team has been meeting the sprint goals, I would not worry too much that the chart looks like a rollar coaster. A few suggestions

  • During the sprint retrospective ask the team where the additional work is coming from
  • Extra work can come from not having good acceptance tests early in the sprint
  • Extra work can come from not having a well groomed backlog. A good rule of thumb is to spend at least 5% of the team's time thinking about the next sprints stories a head of time.
  • Monitor work in progress - is the team doing too much in parallel?
  • During sprint planning - how does the team feel about the break down of tasks that make up the stories?

If you have not been meeting sprint goals - use the establised team velocity to take on less during the next sprint. You have to get good at walking before you can run.

Ralph Miner
Thanks Ralph, some useful comments there. Si.
Si Keep
+1  A: 

We are using a 'time-boxed' task for unplanned tasks. Whenever high-priority work is coming, or sudden bugs pop up, we can use time of the time-box (but, we can never go under zero). This method has the additional advantage that we can easily track which tasks were unforeseen, and keep those things into account during our next sprint planning.

KornP