Mark Needham

Thoughts on Software Development

Agile: When is a story done?

with 12 comments

I’ve worked on a few different agile projects and one of the things that hasn’t been completely consistent is when we consider a story to be ‘done’.

There seem to a few different approaches, each of which has its benefits and drawbacks.

Why do we care?

We care about ‘done’ for tracking the points we have achieved in an iteration and for knowing when we have added the value the story provides. For this post I’m interested in ‘done’ in terms of when we count the story towards our points total.

Business proxy signoff

With this approach we count a story as done when it has been signed of by a business proxy, typically a client business analyst or maybe a combination of a BA/QA.

The benefit of this approach is that we have normally have better access to a BA meaning that we don’t end up having stories piled up waiting to be signed off as being done.

I have seen 2 mini approaches, both of which require a story walk through with the BA/QA:

  • Acceptance tests pass => Done
  • Acceptance tests pass + exploratory testing satisfactory => Done

With the first approach any bugs beyond the acceptance criteria will be tracked as bugs whereas with the latter the story will be moved back and just considered incomplete.

The disadvantage of either of these approaches is that we are counting something as done before it’s actually been signed off by the business, which means that we might have a false sense of the value we’re delivering. If the business proxies are communicating regularly with the business though I don’t think it’s necessarily a problem.

Business signoff

With this approach we only count a story as done when it has been signed off by our business stakeholder.

The benefit is that when a story is classified as done we have actually delivered something that is acceptable to the business.

On the other hand, when using this approach it’s fairly important to have access to the business stakeholder on a regular basis if the velocity of the team is to be measured accurately. When we don’t have this access we can end up with a backlog of stories waiting for sign off, all the while lengthening the time from when it was last worked on to when it is eventually considered complete.

In production

This is an approach which I haven’t seen used on a project but which I read across in a post written by David Laribee.

I can see how this makes sense as we haven’t actually delivered any value to our customer until the software is actually being used.

I think the difficulty of using this approach would be if we aren’t releasing code into production regularly – we wouldn’t get feedback on how we’re progressing and therefore would have more difficulty noticing when things in our process aren’t working as well as we’d hope.

In Summary

I think the further down the process we consider a story as done the more accurately our points total represents the value added to the customer.

Although we can get quicker ‘points feedback’ by classifying done earlier in our process, the accuracy of what that points total actually means is perhaps lowered.

I’m not sure which approach is the best one because each has its benefits and drawbacks. It will be interesting to see whether there are any further variations on what is considered ‘done’ on future projects I work on.

I am aware that I may be asking completely the wrong question and what we should be asking is ‘Does it matter when it’s done other than for reasons of tracking velocity?’

Written by Mark Needham

January 4th, 2009 at 10:17 pm

Posted in Agile

Tagged with ,

  • http://olofb.wordpress.com Olof Bjarnason

    Interesting read Mark!

    I’m sadly not yet into Agile development in practice – just in theory reading a book on the subject.

    I guess one argument for the “acceptance test passes” approach is that “exploratory testing satisfactory” is vague.

  • http://www.markhneedham.com Mark Needham

    Ah, I guess what I meant by that was that in the first approach anything found by exploratory testing is considered ‘extra’ beyond the story whereas in the second approach the exploratory testing is part of the story.

    Not sure how to describe it more clearly…we haven’t tended to record all exploratory testing scenarios carried out – only the ones where bugs were found and we wanted to be able to repeat the scenario once it had been fixed.

  • Nate

    I’ve seen many of the same stages. I don’t know if any of them is “better”, but I’m always pushing to get things in to production. The key is that if you’re using the term “done” you define what it means for your current team. I came in to a project where they had outlawed the word because they never came to agreement on its meaning.

  • http://www.dennisstevens.com Dennis Stevens

    Done has different meanings. Code done, successfully tested, business acceptance, and into production all matter. By tracking points per period at each step you can determine the velocity of your project and find constraints in your process.

    From a value standpoint, the user story isn’t done until the targeted user (or system) is leveraging the code in production to create the intended benefit for the organization.

  • http://www.ModernAnalyst.com Business Analyst

    Given the goal of Agile to work in an iterative manner and to deliver value to the business as soon as possible, I would say that “In Production” is what counts.

    What is the value of agile development if the business/customer only gets a couple of releases a year?

    Having said that, there is still value in getting sign-off on the stories earlier in the process to ensure you’re working on the right requirements. To accomplish this you should consider having a process where you could use either the business stakeholder (especially high risk features) as well as the business analyst.

    - Adrian

  • http://typhon.autonomous.org/ scot

    Dennis Stevens has it right: “done” is actually through multiple stages – analysis done; story card written; passed automated acceptance tests (development done); subject matter expert signoff; business approval; in production. However production is indeed when it is truly “done”. So you should measure a team’s output by “story points in production”.

  • Pingback: Dew Drop - January 5, 2009 | Alvin Ashcraft's Morning Dew

  • Pingback: Dew Drop - January 5, 2009 | Alvin Ashcraft's Morning Dew

  • http://plog.jasonlittle.ca Jason

    “Done” means different things to different people. We have created our done criteria on a few levels. Task, Story, Sprint and Release.

    There are different ‘done’ criteria for each of those. For example, a task is done when the code is written and a unit test(s) is written. A story is done when a code review has happened and all tasks within that story are done.

    There are a handful of done criteria items for each bucket but it makes it easier for developers to understand what is required of them and also helps the business side to know what they are getting when something is ‘done’

  • http://olofb.wordpress.com Olof Bjarnason

    Nice discussion … Like Jasons sum-up: since “Done” means different things, the story really goes through a state-transition or a process:

    The story is written
    The story is in production (but not all ACs pass)
    All ACs (acceptance criteria) pass
    Packaged (lies in some Setup.exe or equivalent)
    In production (installed at customer)

  • http://nolanevans.blogspot.com/ Nolan Evans

    Hey Mark,

    Good post, I agree with the idea that something is really only “done” when it is deployed to production.

    However I have only been on one team that actually did this. If it wasn’t deployed to production the story could not be counted as finished in the iteration. The team did not always operate this way and it is definitely no small task to get to a point where you can do this.

    I think being able to do it matters for many reasons other then simply tracking velocity. You’ve got me thinking about how much fun it was to work like that again and I am going to have to make a blog post on why it is my favorite way to work.

    -Nolan

  • Pingback: Frank Carver’s Punch Barrel / Agile: When is a story done?