What Is a Definition of Done
The definition of done is an agreement on the set of conditions that need to be true in order to consider a backlog item done and at a point where it can deliver value to stakeholders.
An Example
Typical items in a definition of done include
- Acceptance criteria are met
- Cleared by QA
- Accepted by product owner
- Accepted by sponsor
- Training script done
- Help documentation completed
- Code reviewed
- Integrated
- Compiled
- Usability testing completed
- Automated testing in place
- User documentation created
- Ops documentation created
When to Use a Definition of Done
The definition of done is most useful in situations where a team is following an iterative approach, such as Scrum, and needs an agreement as to what constitutes done for backlog items developed during an iteration. A concept similar to a definition of done is probably also used in flow-type approaches such as Kanban as the policies that exist to move a backlog item into the final step in the development process.
Why Use a Definition of Done
It is helpful to have specific agreements in place regarding what needs to happen with a backlog item in order to deliver it to stakeholders. The definition of done provides this agreement and specifically provides clarity on how much and what type of testing and documentation are done for any given backlog item.
A side benefit of having and using a definition of done is that wasteful, subjective discussions about whether a backlog item is truly done are eliminated. The team is clear about what they need to do in order to complete a backlog item. This understanding also aids sizing, as the team knows what needs to happen in order to deliver any given backlog item. This is especially helpful in regard to activities outside of coding that typically go along with delivering a backlog item such as testing and documentation.
How to Use a Definition of Done
- Gather the team together at a whiteboard. Explain that the purpose of the discussion is to agree on what criteria must be met for a backlog item to be considered done.
- Have the team generate a list of all the things that would be nice to do when delivering a backlog item.
- Once the energy for adding new items seems to die down, go back and review the list. Ask the team to consider whether it’s reasonable to expect all of the items they suggested for every backlog item.
- Continue revising the list until the team feels comfortable with the resulting list, which will generally be shorter than the first one. This final list forms the team’s definition of done.
- On an ongoing basis, use the definition of done as a check to determine whether a backlog item can be delivered to stakeholders.
Caveats and Considerations
As with the definition of ready, the list of what should be in the definition of done is not intended to be exhaustive, nor is it intended to be a set of rigid rules where all the criteria absolutely have to be done for each item no matter what. The team discusses what must be true in order for them to consider a user story satisfied and establish that as their definition of done. The list is also not final, and the team may find occasion to review and revise it at a retrospective.
The definition of done should be used as a measuring stick to determine if the backlog item is ready to provide value to stakeholders, not whether the team has done enough to “get credit” for completing the backlog item.
The key points to discuss surrounding a definition of done are primarily what kind of testing the team is going to do story by story and, to a lesser extent, what documentation is needed story by story. The answers to those questions drive a lot of decisions about the team’s process, and the testing question can generate a lot of concern within a team. Establishing a definition of done can address those concerns by establishing an initial set of tests, trying them out, and then seeing how things turn out. The team can then adjust their level of testing and revise their definition of done accordingly.
Some teams include deployment to production in their definition of done. Other teams that are not in a position to deploy to production at the end of each iteration may include deployment to a preproduction environment instead and have a separate set of release criteria that indicate what needs to be true before releasing code to production. These release criteria are often applied to the results of multiple iterations.
Additional Resources
Definition of Done Agile Alliance
Definition of Done by Mitch Lacey
Definition of Done Scrum.org
Want to know more?
If you learn better with video rather than reading, you may want to check out Analysis Techniques for Product Owners Live Lessons, a set of video training sessions that show you how to apply analysis techniques to product ownership. Lesson 6.4 focuses on definition of done.
Analysis Techniques for Product Owners is available on Safari – O’Reilly’s online learning platform. Sign up for a 10-day free trial to view the video lessons.