- All code is checked in;
- All code has written tests;
- All tests are passing;
- Code review conducted and passed;
- Functional documentation updated, reviewed and approved;
- Design documentation updated, reviewed and approved;
- User documentation updated, reviewed and approved;
- QA check passed;
I have not seen this work very well. Teams claim they are done, but the story is “done” somewhere in a staged system. Some work is left to deploy it to production.
This type of list starts small and simple and grows over time. When the team misses something a new line is added.
When that line is not applicable for all user stories the team starts cheating. They need to make exceptions in order to ever finish a user story.
The efford needed to move user stories to production may vary and becomes part of the next iteration(s). Consequently, less time is available to build new features and the velocity becomes unpredictable.
Here is a simple and very effective Definition of Done that works much better. Are you ready for it?
The user story is deployed to production and can be used by the end-user.
Rockstar developers consider stuff like: all code is checked in; all tests are passing; etc. part of their de facto standard. Neither discussion nor a special list is needed for this. Specific attention points can be added to the acceptance criteria.
Use the above definition and you will be fine.