Problem: Agile teams often struggle with definition of done. Either because it does not exist, or is not used.
Traditional thinking in project management is "Plan the Work, Work the plan", and that really does not comply with the agile World. This means that agile teams needs to have a definition of done, as they do not have a plan to work. For some time we struggled with our DoD, causing all kinds of grief for the test effort, as everyone had their own ideas about what it meant to be done.
Solution: "Done" must be defined, communicated, and agreed by the team.
The experiences we got from working a little with this problem in the sprint retrospectives was as follows.
Defining DoD should be simple, measurable and written somewhere for easy reference. Simplicity is advisable, as a very large DoD definition is unwieldy and often ends up being ignored, as it would require a project to maintain it. It needs to be measurable, else it will be impossible to determine if fulfilled. Keep it in writing, and stick it on your board, that will remind the team about the ‘contract’ defined in the DoD.
Communication about the DoD is easy - Read it out loud at each sprint planning meeting, and ask this question: “Will this do for our sprint?” If the answer to that is no then discuss why and make necessary changes. Agreement is established through this exercise, as the team signs off on the DoD as part of the discussion in the sprint planning.
Some advise that might be useful when defining Definition of Done:
- Set quality bars that ensures that business value grows with each release
- Use common sense
- KISS your DoD
- Use the retrospective to evolve DoD
- Sprint Backlog Items (SBI) included in the delivery are "Done" when:
- SBI is documented, prioritized & Broken into tasks
- All development tasks have associated change sets
- Code has been reviewed using StyleCop & unit tests covers 85%
- All test tasks have associated test charters or test cases
- Functional and non-functional requirements outlined in acceptance criterias are covered by test.
- Severity 1 bugs are fixed, severity 2+ have been reviewed.
- Regression test has been executed
- Acceptance test has been executed (if delivery to client takes place)