In development, we often split tasks up into smaller pieces and distribute them among multiple developers. We need to eventually bring this work back together, and this is easier when everyone agrees on what “done” means.
The definition of “done” is important in Scrum for calculating velocity – “a measure of the amount of work a team can tackle during a single sprint.” Agreeing on what “done” means helps ensure clear communication. Additional benefits of agreeing on a definition, as outlined in Agile Alliance’s Definition of Done, include:
- “[Creating] a checklist which usefully guides pre-implementation activities: discussion, estimation, design.”
- “[Limiting] the cost of rework once a feature has been accepted as done.”
- “[Having] an explicit contract limits the risk of misunderstanding and conflict between the development team and the customer or product owner.”
For example, it’s happened that someone has told me they were “done” with something, only for me to look at their work and find 5 more things they still needed to do.
Here’s what “done” means to me:
- Done means that you are not planning on doing any additional work on the task. Everything that you wanted to do or were planning to do has been completed, including formatting, cleanup, refactoring, etc. This also includes updating any associated documentation, user manuals, or change logs, checking code in and pushing to an origin repository, getting code reviews, and ensuring that builds are passing.
- Done means that all aspects of the initial request have been addressed and all acceptance criteria have been met.
- Done means that all changes have been carried through to their logical conclusion. Consider the consequences of your changes and whether those consequences necessitate any additional changes. If an image asset has been removed from a page, for example, and is not used on any other pages, it should also be removed from the source code repository. If the only call to a function is removed then the function itself should also be removed.
- Done means that everything you have created or changed has been tested. This may involve creating automated or unit tests, or having others test the change as well. If it hasn’t been tested you don’t know whether it works.
- Done means ready to share with the world. For code this means deployable. In all cases it means we would be proud to put our name on it and show it to others.
- Done includes communicating the completion of the work be that in person, via a task management system, or other means as determined by the project.
What does “done” mean to your team? We recommend agreeing upon a definition in the interest of creating accurate estimates of how long the project will take to complete.