AGILE IN ACTION

Thursday, 2 February 2006

Knowing when you're done

Posted by Simon Baker

Don’t move onto the next user story before you know that the user story you’ve been working on is done. How do you know when a user story is done? I use the following check list:

  1. The code compiles.
  2. All the automated unit tests are passing and test coverage is between 85% and 100%. (Be guided by the need to provide tests for everything that could possibly break)
  3. The code has a simple design that uses the fewest classes and methods.
  4. The code is well factored and without duplication.
  5. The code is clean and structured to coding standards.
  6. The code is self-documenting and clearly communicates my intentions a the developer.
  7. The code is checked-in, integrated (and builds successfully).
  8. All the acceptance tests (automated with FIT ) are passing.
  9. The customer has verified that the acceptance criteria have been satisfied. I don’t wait for the end-of-iteration review. I like to get this approval as soon as possible after I’ve checked-off the items above.
You can take out some technical debt on 3 and 4 if the situation absolutely requires it, but you should ensure that it’s repaid quickly. Don’t let your technical debt build up. The interest repayments can be a killer.

2 Comments

Just a point of emphasis for those who are new to iterative/incremental development -- all uses of the "the code" above apply to ALL the code (the entire project), not just the code that was developed for a particular story. Team that just apply these rules to the bits of code developed for a story will end up with "one module per story" instead of a really good design.

Comment by keith ray

Good point Keith. User stories should be developed within the context of the whole system and not as something that is bolted on. Keep an eye on the design of the whole system, particularly the parts that a user story touches, and don't be afraid to rearchitect and refactor existing code to come up with a better overall design.

Comment by sjb140470

Creative Commons Licence

Recent Posts

  1. System failure is inevitable so design for a fast recovery
  2. Delight comes as a surprise in unexpected places
  3. Help create business agility. Bake quality in
  4. Governance - Friend or Foe?
  5. 70% Forum
  6. Measuring purpose. Measuring customer delight
  7. Stop pushing features and start delighting users
  8. Lost without a goal
  9. Emotion creates the common language
  10. Five sneaky ways to kill an initiative

Archives

  1. 2012 (16)
  2. 2011 (24)
  3. 2010 (31)
  4. 2009 (41)
  5. 2008 (69)
  6. 2007 (152)
  7. 2006 (128)
    1. December (16)
    2. November (26)
    3. October (7)
    4. September (11)
    5. August (7)
    6. July (7)
    7. June (4)
    8. May (4)
    9. April (4)
    10. March (4)
    11. February (14)
      1. Don't be afraid to make mistakes
      2. APLN and collaborative leadership
      3. Scrum ba
      4. Ten-minute build, continuous integration and developer rhythm
      5. User stories part 3: Using spikes to help estimate user stories
      6. User stories part 2: Adaptive planning
      7. User stories part 1: What is a user story and who writes them?
      8. Ba
      9. Watch out for the mini-series
      10. Ideal time vs. story points
      11. Making the quality-factor visible
      12. User stories and tasks
      13. Knowing when you're done
      14. Switching pair-programming partners
    12. January (24)
  8. 2005 (63)
  9. 2004 (2)

Tags

agile (43) big visible chart (15) conference (40) culture (18) extreme programming (21) leadership (18) lean (47) people (26) planning (17) retrospective (18) scrum (41) story (19) team (30) testing (19) xpday (19)