Definition of Done for Development Team
Definition of Done (DoD) is a set of rules defined by the development team, which have to be met in order to mark a certain functionality as shippable. DoD is the most popular in agile metrologies, e.g. SCRUM. Development team decides what steps - from a technical point of view – must be taken. Those steps can vary depending on the task type and can be adjusted according to the needs. Development team confirms that reaching DoD means the functionality is shippable.
DoD ruleset may look like this:
- Developed functionality
- Passing unit tests in the source code
- Passing Acceptance Tests
- Functionality documentation
Following the rules must be met (from the development team's perspective) in order to give a production-ready functionality, which the customer has ordered.
DoD for the customer
SCRUM's definition says that customer should not have any influence on the internal development process and the team organization. This also includes DoD. The customer can only ensure that the delivered functionality fulfills the specification (e.g. User Story in SCRUM). In the ruleset above, the team itself includes Acceptance Tests as one of the items in DoD (which is a great example of the development team taking care of the software).
The theory does not always overlap with the practice. Sometimes, there are no unit tests. Other times, the code-reviews, even the ones stated in DoD, are not conducted because of the lack of experienced developers in the team. Sometimes the customer does not know how to formulate the acceptance tests. At the end of the day, DoD is stated but not fully followed. Only the end-users do the real testing.
In summary for the customer, DoD is met, when the delivered software works fine without any errors in the quality, performance, conception or security field.