Wednesday, December 17, 2008

Definition of Done

The Boulder Agile Meetup group met last night and discussed the definition of "done", or DoD, on an agile project. Here is a summary of our discussion.

  • The DoD should be agreed to by the team, written down and rigorously adhered to
  • Legacy systems - any code base without automated tests - present many challenges to meeting a useful DoD within short iterations. The group didn't reach any conclusion on how to solve that problem. I'd say your choices are either to (1) put new development on hold long enough to write the tests, (2) gradually introduce tests over several iterations, or (3) live with the pain for a long time.
  • The DoD is different for tasks, backlog items, iterations, and releases
  • Operational needs for the software should be considered early on and addressed within normal iterations
DoD for tasks:
  • unit tests pass
  • code was pair programmed or code reviewed
  • coding standards are met
  • test coverage standard is met
  • code and tests are included in continuous integration system
  • task was completed with the simplest possible implementation
  • code base was refactored to support the new task
  • sufficient negative unit tests were written (more negative than positive)
DoD for backlog items / user stories:
  • acceptance criteria are met (presumes that Product Owner sufficiently defined acceptance criteria)
  • functional tests pass
  • non-functional tests pass (scalability, reliability, security, etc.)
  • story documentation is completed
  • item follows architectural & design guidelines
  • automated installation & deployment completed (recommended that it includes the full stack - even the operating system - where practical)
DoD for releases:
  • Customer acceptance (functional & non-functional requirements)
  • Release documentation completed
  • Operational needs met
  • Regulatory & compliance requirements are met if applicable
  • automated installation & deployment completed

For some reason we didn't discuss DoD for iterations, but I would say that it is:
  • Met DoD for all stories / backlog items in the iteration
  • Met the goal or theme for the iteration, if one was defined
  • Acceptance by the product owner and/or customer at the iteration demo/review

1 comment:

Anonymous said...

Agreed with your point 1, that is definition of done should be estabilished by a team (and not by a leader alone). In other case, it won't work.

My team's definiton of done was coined together, and it works well for us. See http://kaczanowscy.pl/tomek/2010-05/what-is-done

--
Cheers,
Tomek Kaczanowski