Web Development

The Definition of Done

March 9, 2017

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:

  1. “[Creating] a checklist which usefully guides pre-implementation activities: discussion, estimation, design.”
  2. “[Limiting] the cost of rework once a feature has been accepted as done.”
  3. “[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.

You might also like...



Unit/Automated Testing

Software testing is the process of discerning whether a product is acceptable to its end users, its target audience, its purchasers, and the stakeholders to whom it belongs. At its core, software testing examines code and its execution: does the code do what it is supposed to do, when it is supposed to do it, … Continued



Should I Use RxJS in My Project?

If you’re thinking about using RxJS, you might as well be asking, “Should I use a jump kick in a street fight?” Unless you are Bruce Lee, probably not. As a disclaimer, I am not an RxJS pro. I only started learning about it a couple of weeks ago. Consider this post a record of … Continued



The World of Website Accessibility

When building your website, it’s important to account for accessibility, designing your product so that users with disabilities can access it. Your business should care because the number of people affected by disabilities worldwide is large. The World Bank Group estimates that one billion people – 15% of the world’s population – have some level of … Continued