Definition of Done


What is DoD:

DoD is a checklist of features and activities, for example, writing code, coding comments, unit testing, integration testing, release notes, design documents, etc. that adds or demonstrates value to the product. Focusing on value-added steps allows the team to focus on what must be completed in order to build working software while eliminating wasteful activities that only complicate software development efforts.

DoD is a good reporting mechanism for team members. It helps to say that “This feature is done.” Using DoD as a reference for this conversation a team member can effectively update other team members and the product owner.

Definition of done examples

DoD can be different, but what is important to note here, is that the initial Definition of Done must be agreed before the first Sprint.

There are three main types of DoD:

1.    Definition of Done for a feature ( user story or product backlog item)

2.    Definition of Done for a sprint (collection of features developed within a sprint)

3.    Definition of Done for a release (potentially shippable state)

For example, in software, a Definition of Done may be: “Done means coded to standards, reviewed, implemented with unit Test-Driven Development, tested with 100 percent test automation, integrated and documented.”

In a services context, it may be like this: “Done means every task under the User Story has been completed and any work created is attached to the User Story so the Product Owner can review it and make sure it meets his or her expectations.”

The idea of DoD is that it ensures everyone on the team knows exactly what is expected of everything the team delivers. It ensures transparency and quality fit for the purpose of the product and organization. 

Definition of done examples for each type of DoD

1.Definition of Done checklist for User Story

This is the first and the most basic level is a User Story, where we check compliance with the initial assumptions of a single backlog item, which were described in it. On this1 stage we also control the quality of written code and check if all necessary elements of our process were carried out, for example:

  • Produced code for presumed functionalities
  • Assumptions of User Story met
  • Project builds without errors
  • Unit tests written and passing
  • Project deployed on the test environment identical to the production platform
  • Tests on devices/browsers listed in the project assumptions passed
  • Feature ok-ed by UX designer1
  • QA performed & issues resolved
  • Feature is tested against acceptance criteria
  • Feature ok-ed by Product Owner
  • Refactoring completed
  • Any configuration or build changes documented
  • Documentation updated
  • Peer Code Review performed

2.Definition of Done checklist for Sprint

The second stage is Sprint, where we check the greater part of our work. Here we can see if all the implemented features fulfill their original assumptions and if all the required conditions for the production deployment were met.

DoD of each single User story, included in the Sprint are met

  • “to do’s” are completed
  • All unit tests passing
  • Product backlog updated
  • Project deployed on the test environment identical to the production platform
  • Tests on devices/browsers listed in documentation passed
  • Tests of backward compatibility passed
  • The performance tests passed
  • All bugs fixed
  • Sprint marked as ready for the production deployment by the Product Owner

3. Definition of Done checklist for Release ·         

  • Code Complete
  • Environments are prepared for release
  • All unit & functional tests are green
  • All the acceptance criteria are met
  • QA is done & all issues resolved
  • All “To Do” annotations must have been resolved
  • OK from the team: UX designer, developer, software architect, project manager, product owner, QA, etc.
  • Check that no unintegrated work in progress has been left in any development or staging environment.
  • Check that TDD and continuous integration is verified and working

Preparing a single definition of done that suits every situation is impossible. Each team should collaborate and come up with the definition that suits its unique environment. Teams that have just started with agile may find it difficult to reach a mature level immediately; therefore, they should take the steps, sprint-by-sprint, to improve their DoD.

Comments