It is not always clear what are the requirements for the task to be considered „done”. Each team member might have slightly different understanding of „done” which is build gradually with gaining experience in the team. This can sometimes cause miscommunication and misleading perception of functionality as being production ready. From the team member perspective (especially someone new in the team) it is hard to tell if all the work required for the task, has been completed.
There is a solution for this issue called „Definition of Done” which is well known Agile methodology tool.
There are some „subtasks” which are part of every implementation task team is working on. It is possible to create a checklist (called “Definition of Done”) out of these subtasks, which will be clear and known by each team member.
Each team should agree on Definition of Done which would contain minimal requirements for the task to be considered „done”. Definition of Done should be a simple checklist, which will be easy to verify for each task team members are working on. Ideally, it should be generic enough, so it will be applicable to any implementation task the team is working on. At the same time each point should be broad enough to be able to say „task is DONE” when all items on the Definition of Done list are checked.
Example of Definition of Done could be:
- Implementation finished
- Peer reviewed (or produced with pair programming) and code meets development standards
- Unit/Integration/Acceptance tests written and passing
- Source code pushed to develop branch
- Code built and all tests green on Continuous Integration system
- Deployed on test environment without issues
- Any build/deployment/configuration changes implemented/documented/communicated
Expected Benefits are:
- Easier for the new team members to pick up the team’s perception of „done” by simply reading the list, instead of gradually build her/his own understanding which might not be exactly the same as other team members’.
- Developer can easily verify if there is anything missing in the task she/he is working on, simply by going through the checklist.
- Better estimations as all team members have the same understanding of „done” and consider same „subtasks” for each task (e.g. implementation, unit tests, integrations tests, selenium tests).
- Less miscommunication, because everyone in the team will understand „done” the same way.
Some articles about Definition of Done: