Friday, February 24, 2012

Burning Down Hours is Anti-Agile Because Working Software is the Primary Measure of Progress

A burn-down chart can use anything for the units, such as hours or points, but originally Scrum's burn-down chart tracked hours of work remaining in the iteration. Many people still use an hours-based burn-down chart as their primary measure of progress during an iteration. That’s a useful tool, but it is similar to tracking yardage in an (American) football game. It measures activity, but not accomplishment. After all, what percentage of a touchdown is 30 yards?
Working Software is the Primary Measure of Progress
One of the principles from the Agile Manifesto is "Working software is the primary measure of progress". But burning down hours is measuring and reinforcing progress against a plan without any requirement to have working software until the end of the iteration. That's pretty much the same as not having to have working software until the end of a waterfall release! This is one of the reasons that many people have moved away from burning down hours or supplemented it with other tools, such as burning up story points.
Burning Up Points to the Rescue
The Burn-up by points chart is one of the very best tools in Agile. It brings together many of the best aspects of Agile all in one place and gives you an instant heads up as to how you are really doing. The way a points-based burn-up chart works is simple.

For the iteration you are about to commence, total up the story points in all of the stories you have targeted for that iteration. Let’s say it made up of two 5 point stories, two 3 point stories, one 2 point story and two 1 point stories. That’s a total of 20 story points. Make a chart with an X axis that represents all of the days in the iteration from the first day to the last day from left to right. Let’s say it is 10 days. The Y axis represents the number of story points completed and in this case would go from 0 to 20 story points.

At the end of each day you tally up the story points associated with all of the stories that meet your definition of “done” and record the total on the chart. For instance, if you completed a 1 point story on the first day, nothing on the second day, and a 2 point story on the second day, your chart would have a 1 point bar for the first day, a 1 point bar for the second day, and a 3 point bar for the third day.

A points-based burn-up chart lets you see graphically day-by-day how much progress you are making towards your goal. It only records accomplishment, not activity, and allows you to see if you are on track or getting behind. To me, this is exactly what is meant by "Working software is the primary measure of progress."

Won't The Chart be Empty Until the End of the Iteration?
At first you may think that the chart will show that you are behind for most of the iteration and catch up only at the end when QA is able to start testing and marking stories as done, but whenever the chart shows something other than a steady march to the end of the iteration, here are some of the questions you should be asking:
  • Are our user stories too big? Is that preventing QA from getting involved earlier?
  • Are people working on too many stories at once?
  • Are we unable to produce a stable build for QA to test?
  • Are developers producing a bunch of problems and then going on to the next story instead of helping QA resolve the problem?
  • Should the developers drop what they are doing and lend a hand writing automated tests?
Using a points-based burn-up chart gives everybody, from team to manager to the organization as a whole, an instantly understandable picture of the health of the project and team. It simplifies the life of the manager because if it indicates a problem anybody can stand up and say “hey team, we’re messing up, what are we going to do about it team?”

A burn-up chart reinforces the following ideas:
  • Use story points for estimation, it enables whole-team thinking such as this whole-team metric.
  • Make stories as small as possible to get them done as fast as possible to keep the focus on accomplishment rather than activity
  • Have as co-located and as cross-functional a team as possible to enable the fastest possible turn-around time on stories
  • Enable the team to work as a team and to manage more things on their own
Unlike Burning Down Hours,  Burning up by Points is Fully Automatic!
You may not be ready to give up burning down hours yet, but there's no reason you can't use both. And most Agile Project Management tools, such as Rally , Version One, and Jira will generate a points-based burn-up chart for you automatically.

There's one more reason you may want to consider moving from burning down hours to burning up points, assuming your user stories are small enough in general and you are mostly getting stories done all the way through the iteration. In my experience, team members don't really like having to enter their hours remaining for their tasks every day, often forget to do it, and it keeps the focus on activity rather than accomplishment. Also, the only manual step required is to mark the story done, which helps to make the whole process much smoother.

[Excerpted from my free eBook "Do It Yourself Agile Kickstart". ]


Clayton said...

I think tracking remaining hours in a sprint can be very helpful for teams, the same way that tracking remaining stories can be very helpful for a team.

It's not fair so say that burndown charts are "not agile" since you can craft a burndown chart that tracks stories and answers your "how much working software has been delivered" question.

Peter said...

I agree with Clayton's second paragraph. I suppose your headline draws readers, but it's like tabloid journalism.

A burn-down chart can measure the remaining units of any measure, including story points. Conversely, a burn-up chart could measure hours.

You say potayto, I say potahto.

Jade Meskill said...

I'm not sure I understand how a burn down chart could not accomplish the same thing you describe.

The root of the issue is measuring points vs hours. The format of the chart is irrelevant.

Damon Poole said...

Regarding the first 3 comments, you are all correct! I was referring to the by-the-book definition of burn-down chart which burns down hours remaining. I will update the post to make my point clearer.

Many thanks for keeping me honest. Also, "The Agile Enquirer" has a certain ring to it. Hmmmm. :)

George Dinwiddie said...

I've never liked tracking hours, or re-estimating the hours left. Tracking functionality works so much better. Today, I'd rather track the number of stories rather than story points.

I talk a bit about what to track in my Better Software article ( from a few years back.

As to whether the chart should go up or down, that depends on whether the goal is fixed or not. It's OK to burn down a sprint backlog, but releases are too variable and unknown for that. Burndowns can't distinguish between work accomplished and changes in the amount of work to be done. My article also discusses that point.

Marcin Niebudek said...

I would also add that I never liked the original Scrum burn-down based on time left estimated each and every day (and time tracking in general).

But despite that there is also one more advantage of using burn-up chart. You may actually add a 3rd line on the chart which will represent the current scope or goal. It starts at the total estimated effort of all stories in the iteration/release/sprint and can go up or down if you add or remove stories after starting the sprint.

You may then clearly see how far you are from reaching that goal. If you start burning down stories you may loose the ability to see that unless you try some more sophisticated burn-down's described once by Mike Cohn.

Vin D'Amico said...

Implementing this technique successfully requires small stories and tasks that are verifiable. If I'm going to count 1 story point for unit testing the code prior to QA hand-off, I must be able to show that the unit tests were 'done'.

While the burn-up technique you outline may be controversial, it would surely introduce additional discipline into the development effort. For struggling teams, it might help them in controlling their workflow.

Alan Gladman said...

I agree that burning down hours is slightly anti agile. Its not the burndown that's anti-agile, it's the emphasis on hours. Typically I track burning down (or up) points of accepted stories and this encourages small stories and low levels of WIP, otherwise you get a very flat line until near the end of the sprint.

It's slightly unfortunate that some agile tools still default to displaying burndown charts driven by hours remaining. The burn up charts are in there, but you have to look for them and teams new to agile rarely have the time to look for these things.

Jeremy said...

We have been using both a traditional burn down (task hrs remaining) as well as a story point burn down. I have found both useful when it comes to the sprint retrospective and it really helps to highlight stories that were not really understood that well when they were added to the sprint backlog. I guess its inspect and adapt to see which chart gives you the most benefit.

Jonas said...

What effort has gone into a "not done" story is irrelevant. How much remains is everything!

Damon Poole said...

I just want to re-emphasize that part of the point of the article is that while "hours remaining" is somewhat better than "hours spent", it is still focuses on activity rather than accomplishment. Focusing on activity means you don't necessarily know until late in the iteration if you are making real progress. As it says in the manifesto, "Working software is the primary measure of progress." Hours remaining shows progress, but it does not mean that the story will ever actually be done.

Cryptocurrency Software said...

these ways are very simple and very much useful information for me as a beginner level these article help me a lot thanks fore sharing these kinds of useful and knowledgeable information.