While Scrum is easy in theory and hard in practice, I wanted to hear your definition of Done; i.e. what are the gates (unit test, code coverage > 80%, code reviews, load tests, perf.test, functional tests, etc.) your product has to go through before you can label the product "Done"
Listen to this podcast: What is Done? - A Conversation with Scrum Co-Creator Ken Schwaber.
There are three nice articles by Mitch Lacey, Dhaval Panchal and Mayank Gupta on this on the ScrumAlliance website.
EDIT: Basically the whole point is that done is defined on a project-by-project basis by the team. The basic need is to agree on the definition, not what the definition is.
I'd say it is up to your team to decide. Talk with the product owner. Ideally done would be when a story is in Production and being used. However, there is a time gap between when a story is development complete and in Live. Makes it hard to track how long a story took to develop.
In my team, our definition of done is, when the developer completes a story,and does a "show and tell" to the rest of the team(testers, product owner), and if everyone is happy it goes into the subversion trunk.
Further testing is done off a automated build from trunk.
In a perfect world, the product shall be in a shippable state at the end of every iteration.
Now this actually depends on your product, your market, your customers and might not be possible.
If you cannot achieve this, then the next planning horizon apply: the release. The Team as a whole should decide what is required to ship the product and plan accordingly.
What helps here is to define "done" at the task level. Defining done here is much more simple: one task is done when you can start another one: everything is tested, integrated. The Team can alo define this state: documented, reviewed, included in automatic build, no known problem, accpeted by On-Site Customer ...
Having all your tasks really "done", Having all tour backlog items (or User stories, whateveryou call them) realy "done" allow to be "done" at every iteration, which helps preserving the product in a shippable or deployable state.
Great question! There was a similar question that was asked a while back that might be useful.
We at TargetProcess use the following definition of Done for user story:
- Short Spec created
- Implemented/Unit Tests created
- Acceptance Tests created
- 100% Acceptance tests passed
- Product Owner demo passed
- Known bugs fixed
Everything that will make your "stabilization period" (ie work required between the code freeze and the release to the client) shorter.