How to understand Definition of Done?

Definition of Done is a document that is the basis of work in Scrum team and in many cases it is enough to perform the optimal software development process.

But why we actually need the DoD Checklist?

That’s simple.

Every team member should understand, what really “Done” means. Because the work in Agile teams is based largely on mutual trust between team members. Everyone have to have the same definition of this word and can be sure (without additional verification), that when specific area was marked as Done there is nothing, except the acceptation from the Product Owner side, what stopping us from deploy.

 Checklists for User Stories and Sprints help us to stay productive. Each member needs to have great tools to boost team productivity

Of course, even the best document is not a substitute for good communication within the team. However, we should use every possibility to make our process easier and more transparent, and the DoD Checklist is one of the best way to do that.

Benefits of User Story and Sprint Checklist

  • Process standarization and in long-term better estimation of task duration
  • Increase of software quality
  • Less small fixes/bugs, because of well tested features on each release
  • Better team communication – Everybody has the same definition of done and process to follow

An example of DoD from Brainhub

When we decided to create the DoD in our company, we prepared together short list of areas, that we should control, to deliver the highest possible quality software. We created two checklists, which help us in verification of our work on two stages of software development process.

Definition of Done Checklist for User Story

First and the most basic level is a single User Story, where we check compliance with the initial assumptions of single backlog item, which were described in it. On this stage we also control quality of written code and check if all necessary elements of our process were carried out (eg. QA session or tests in the test environment).

  1. Produced code for presumed functionalities
  2. Assumptions of US met
  3. Project builds without errors
  4. Unit tests written and passing
  5. Project deployed on the test environment identical to production platform
  6. Tests on devices/browsers listed in the project assumptions passed
  7. QA (Quality Assurance) session performed
  8. Issues from QA session resolved
  9. Refactoring completed
  10. Any configuration or build changes documented
  11. Documentation updated (if exists)
  12. PCR (Peer Code Review) performed
 Print your own FREE User Story Checklist

Definition of Done Checklist for Sprint

The second stage, which we decided to control 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.

  1. DoD of the USs met for each single US included in the Sprint
  2. All ‘to do’ in the code completed
  3. All unit tests passing
  4. Product backlog updated
  5. Project deployed on the test environment identical to production platform
  6. Tests on devices/browsers listed in documentation passed
  7. Tests of backward compatibility passed
  8. The performance tests passed
  9. All bugs fixed
  10. Sprint marked as ready for the production deployment by the Product Owner
 Print your own FREE Sprint Checklist

Conclusions

Well-prepared Definition of Done Checklist can make easier and speed up the daily work of a software development team. Precisely defined criteria of verifying the work was done, allow to avoid many conflicts arising from misunderstandings between team members and delays which may occur because of that.

However, be careful. Too detailed DoD Checklist could lead to wasting huge amounts of time on unnecessary formalities. We must also remember that this document is not a cure for all the problems. It can not replace neither good team communication, nor precise function requirements. But if it is a part of well-functioning process, it could resolve many of problems and help save some time for something pleasant than overtime;)

Sources:

http://bit.ly/1ZpB14Y

Mariusz Dybciak

Mariusz Dybciak is the Lead Developer of Brainhub (a software house building awesome node.js web and mobile apps).

Read also