Skip to main content

Getting started with a Definition of Done (DoD)

January 10, 2021

In my last post about Professional software teams creating working software  David Corbin  made a good point. How do you determining what “Free from fault or defect” means? Since that is different for each Product and may change over time you need to focus on Quality and reflecting that quality in a Definition of Done (DoD).

Updated to reflect the 2020 Scrum Guide! 

TL;DR;

Your Developers are ultimately responsible for creating done increments of working software. Done Increments. Done.

Getting started with a Definition of Done (DoD)

Developers needs to decide what Done means within the organisational context and the product domain. They need to sit down and create a list of things that must be true for every Increment of software that they deliver. Working Software is not specific to a PBI; it’s applied regardless of PBI to the entire delivery. Not just for each PBI.

“The Definition of Done creates transparency by providing everyone a shared understanding of what work was completed as part of the Increment. If a Product Backlog item does not meet the Definition of Done, it cannot be released or even presented at the Sprint Review. Instead, it returns to the Product Backlog for future consideration.”

- The 2020 Scrum Guide 

If you can’t ship working software at least every 30 days then by its very definition, you are not yet doing Scrum. Since Professional Scrum Teams build software that works , stop, create a working increment of software that meets your definition of done (DoD), and then start Sprinting, and review what you mean by “working” continuously, and at least on a regular cadence.

What is a Definition of Done (DoD)

You need to start somewhere, and most often we don’t have a greenfield product. Either we are handed an existing product, or we are the team that built it and are switching to Scrum. Wherever your product originated, the code, and thus the product, will not currently be working software. How can it be when you don’t have a definition of what working means? So what do you do?

Before you cut a single line of code, you need to decide what done means for your product and your company. It will be defined very differently if you are building firmware for pacemakers or if you are creating an e-commerce portal. Here are some characteristics of a Definition of Done:

  • A short, measurable checklist - try and have things on your DoD that can be measured, that you can test the outcome, preferably in an automated fashion.
  • Mirrors shippable - While you might not have shipped your product, although we recommended it  , you should have that choice. Your Product Owner  should be able to say, at the Sprint Review  : “That’s Awesome… lets ship it.”.
  • No further work - There should be no further work required from the Developers  to ship your product to production. Any additional work means that you were not Done, and it takes away from the Product Owner  capacity for the next iteration. Ideally, you have a fully automated process for delivering software, and never use staggered iterations for delivery  .

Your short, measurable checklist that mirrors usable and results in no further work required to ship your product needs to be defined. I find the best way to do this is to get the Scrum Team  (the Product Owner plus the Developers  and any relevant Stakeholders  ) into a facilitated DoD Workshop  . Without a Defenition of Done we don’t understand what working software means, and without working software we cant have predictable delivery  . Your Product Owner can’t reject a Backlog Item  , only whether the Increment is working or not.

My first Definition of Done (DoD)

Your Definition of Done  does not just magically appear, and your software does not magically comply. Making your Software comply with your definition of done is hard work, and while your definition of done should organically grow, you need to create the seed that you can build on.

I recommend that you run a workshop with the entire Scrum Team  , and likely some other domain experts. If there are Stage Gates that your software has to pass after Developers  are Done, then you need representatives from those Gates to participate in the workshop. Regardless of your product you likely need representatives with the following expertise; Code, Test, Security, UX, UI, Architecture, etc. You may have this expertise on your team, or you may need to bring in an expert from your organisation, or even external to your organisation.

Some examples of things to put on your definition of done:

  • Increment Passes SonarCube checks with no Critical errors - You will be increasing over time, so maybe you need to say “Code Passes SonarCube checks with no more than 50 Critical errors” then work on it over time.
  • Increment’s Code Coverage stays the same or gets higher - Looking at a specific measure, like 90%, of code coverage is a read hearing and tells you nothing of code quality. However, it might be advantageous to monitor and measure for adverse change in code coverage, and we always advocate for TDD practices  .
  • Increment meets agreed engineering standards - You should decide rules for naming of methods, tests, variables and everything in-between. Start small and add over time. Link to your agreed standards on a Wiki and continuously improve and expand your rules. Automate if possible.
  • Acceptance Criteria for Increment pass - Making sure you at least meet the prescribed criteria is a laudable goal and automating them with ATDD practices  is even better.
  • Acceptance Tests for Increment are Automated - Make sure that you automate all of your tests. If you think something will break, then you should have a test for it.
  • Security Checks Pass on Increment - Use an automated tool as part of your build and check for known security vulnerabilities. You will not find all of your security issues, but at least don’t do things we know to be reflective of poor Security.
  • Increment meets agreed UX standards - Again, have a Wiki page and make sure that you check it twice. If you are not using an automated DoD entry, then you need to agree as a Team that you have met the criteria.
  • Increment meets agreed Architectural Guidelines - Wiki’s are fantastic for this, but automate what you can.

Whatever Definition of Done  you come up with it is unlikely that your entire Product currently meets the criteria. You are not yet doing Scrum. Before you start Sprinting, you need to focus on making sure that your current Increment meets your new Definition of Done. Focus on Quality, which is what the Developers  are accountable for, and make sure that your Increment  meets that new quality bar before you start. The next Increment can only reach the quality bar of all those that came before do, but you can and should add to that quality bar  .

The Definition of Done  is the commitment to quality for the Increment  !

Create a usable increment that meets your definition of done and then start sprinting. Keeping your software in a working state will require a modern source control system that provides you with the facility to implement good DevOps  practices.

Growing your Definition of Done (DoD)

It’s super important that quality is always increasing, and that means that you will need to at least reflect on your Definition of Done on a regular cadence. In Scrum , this cadence is defined by your Sprint length, and you have a Kaizen moment at the Sprint Retrospective . That does not mean that you don’t reflect on your DOD all the time, you do. You reflect continuously on whether your increment currently meets your DoD, and what you need to do to get it there. You should always be reflecting on whether your DoD fits your needs. If your Developers finds that something is missing from the DoD halfway through the Sprint, then they should go ahead and add it, making sure that they are not endangering the Sprint Goal .

You may discover that you have a performance problem with your product as David Corbin pointed out in my previous post. How do we make sure that we fix that issue? As I see it there are two pieces to this once you are in flight. You can Scrumble (stop Sprinting because of poor quality), and fix it, or you can integrate this new knowledge into your product cycle.

If it is a significant issue that results in you not having working software, then you need to stop and fix. In Scrum, this is called a Scrumble, as a reflection that the Developers stumbled because something is missing. You should stop adding new features and create a usable increment before you continue Sprinting and adding new features. Once you have repaired the issue, you can increase your Definition of Done to make sure that all future Increments meet the new requirements.

If it is less significant, you might want to keep working and add what you need to your Product Backlog . You can then deliver improvements over the next few Sprints that mitigate and then resolve the identified issue. Once you have resolved it, you can then pin the outcome by adding something to your DoD.

Always look for ways that you can increase your quality. What does your definition of done look like today?


What did you think about this post?

Comments (32)


Dũng Bùi
01:52 am June 1, 2018

Thank you for your detail definition DoD. Now I know what need to include in DoD. Before this, I think that DoD only are acceptance criteria for biz requirement then I dont understand that how can I create one and use it over sprints.


Francesco Racanati
09:42 am April 26, 2019

Hi Martin, thanks for the wonderful article, I just have a doubt about one thing: Could you please provide a more tangible example of what you mean by "mirrors shippable"? - do you refer to the creation of an integration environment where it is possible to simulate what will happen for real before releasing in production?


Key Realtor Tiffany Lirones
07:46 pm November 7, 2019

This explanation of DoD is very software-centric. I'm working in an environment where the organization is applying Scrum to hardware development. Can you elaborate or provide some examples of a good hardware DoD?


Iuliana Burgi
09:11 am December 10, 2019

Hello,
I read the article and I am very interested to know what would be the appropriate moments to modify the DoD. My understanding is that:
- Development team can modify the DoD any time, even during a Sprint, if the Sprint Goal is not endangered
- Collective thinking about the DoD during Sprint Retrospective and continuous re-flexion on it throughout the project
- Product Owner can improve the DoD and make sure that it is viable with the market needs.

Am I missing something ?


Brendan McKenna
11:53 am February 11, 2020

I think there is an interesting spell check error in the second bullet point in the "My first definition of done" paragraph:
"read hearing" should be "red herring" :)


Valeria Barsocchini
05:07 pm March 23, 2020

Hi Martin,
If the DoD has to be agreed by the team, is it realistic to define a DoD across multiple products that belong to the same area?
I work in "Data & Analytics" products and all of them have the same DoD, regardless if it is an Advanced Analytics product, BI product, etc.


Gustavo Soeiro Senise
05:49 pm April 3, 2020

Hi Martin, Thank you very much for you article. It is the first time that I´ve heard about the concept of Scrumble. I undestand this is a pause on the work been done to get stability restablished, right? I only found the definition of it here: https://www.scrum.org/scale.... Would you please say a little bit more about it? I mean, about the Sprint and the time-box, what are the implications of stopping the work on them? Thank you very much!


Martin Hinshelwood
08:55 pm November 24, 2020

If many team's are working on a single product then it's almost mandatory for them to have an agreed DOD. Often an organisation will also mandate a minimum DOD across all their products to maintain quality.


Martin Hinshelwood
08:57 pm November 24, 2020

It means that the product should be in a state that you would be happy to ship it to production and support it there.

Indeed would recommend continuous delivery and have code in production in hours if not minutes.


Martin Hinshelwood
08:59 pm November 24, 2020

Get everyone involved in getting your product into production on a call. Create a Mural where they can create postits and ask them all to create a list of everything that has to be true in order to get your product into production. (Not features)

That list is your DOD.


Martin Hinshelwood
09:00 pm November 24, 2020

Organisation may impose DOD standards.


Yazmin GE
04:00 pm November 26, 2020

What´s the difference between Acceptance Criteria and the Definition of Done? I noticed I had these 2 concepts completly mixed up. My understanding is that the Acceptance Criteria is a Test Description, when the developer fullfills all the acceptance criteria in the PBI it can now go to QA. And the Definition of done would be until the QA is completed? Until it is merged to a release branch? or when the item is ready to go on prod? Is this what the dev org should agree about?


Hans de Feber
10:31 am February 14, 2021

In the 2020 Scrum Guide it says “The Definition of Done creates transparency by providing everyone a shared understanding of what work was completed as part of the Increment. If a Product Backlog item does not meet the Definition of Done, it cannot be released or even presented at the Sprint Review. Instead, it returns to the Product Backlog for future consideration.” Is there a specific reason not to make reference to the Sprint Backlog, and say "If a Sprint Backlog item does not meet the Definition of Done......". Especially given the fact that the Scrum Guide says: "Instead, it returns to the Product Backlog for future consideration." I am assuming it is returned from the Sprint Backlog to the Product Backlog.


Hans de Feber
01:40 pm February 14, 2021

Yazmin, Acceptance Criteria relate to the requirements a specific PBI needs to meet. The Definition of Done however is a shared set of requirements that need to be met by every item in the Product Backlog before it can be considered releasable. Acceptance Criteria are not part of the scrum framework, but all Acceptance Criteria of a PBI being met could in fact be part of Definition of Done description.


João Batista Oliveira
11:28 am March 8, 2021

Very good!!!


Meena Sivan
12:26 pm August 17, 2021

Yes, I was thinking read hearing makes sense too - it's like you read and hear the issues written and spelt out - if you still don't act the release will be a read herring :)


Meena Sivan
12:29 pm August 17, 2021

+1 - would like to know more on Scrumble - is there a time limit to stop - before restart - instead couldn't we just cancel the sprint as the sprint goals are obsolete or cannot be met ?


Meena Sivan
12:30 pm August 17, 2021

1. Would like to know more on Scrumble - is there a time limit to stop - before restart - instead couldn't we just cancel the sprint as the sprint goals are obsolete or cannot be met ?

2. Would you please expand a bit more on shippable vs releasable?


Rohandeep Konge
09:24 pm December 7, 2021

@hansdefeber:disqus - I have the same query, did you manage to get a response ?


Jim Stewart
01:26 pm December 10, 2021

Good article but I think that whenever an acronym is used for the first time it should be preceded with the term, as you did for Definition of Done but didn't do for PBI. Everybody here likely knows what it means. But I always assume not.


Karthik
05:21 am March 30, 2022

As per scrum guide "The Developers are required to conform to the Definition of Done. If there are multiple Scrum Teams working together on a product, they must mutually define and comply with the same Definition of Done.". Is scrum team responsible for creating DoD or Development team. because in the same guide it says Developers only accountable for DoD " the Developers are always accountable Instilling quality by adhering to a Definition of Done"


Katrina Latyshava
04:40 pm April 4, 2022

I believe you are absolutely right! Spot on! Bureaucracy was meant.


Katrina Latyshava
04:45 pm April 4, 2022

Thank you for the new word: Scrumble.


Seba
04:31 pm May 11, 2022

Hi! It´s been 2 years now so I hope you get this message! Can you share the DoD you are using at the "Data & Analytics" product domain? Thank you so much!!


Gordan Renic
09:15 pm May 30, 2022

a bit late reply :)
however, as I understand it, product backlog items are items the Product Owner wants to be delivered (eg. user stories).
Sprint backlog contains both selected product backlog items and a plan to deliver them (eg. user stories + tasks created by developers). So to be clear DoD is related to features being implemented, if we talk about software, and not the plan to deliver those features, it is referred to as a product backlog item.


Yann
10:53 am November 2, 2022

Hello and thank you for this excellent article.
Please I would like some clarification,
who creates the DOD? is it the development team or the scrum team?
Thanks in advance


sachin gavade
10:46 am November 16, 2022

Does the Definition of Done guarantee success?


Stefania Zanzottera
04:39 pm April 1, 2023

Good mornig. I do not understand, who is responsable for creation of definition of done? Scrum team or dev team? I am confused. Thanks


Hugo Ernst Ferdinand Andrioli
12:48 pm August 11, 2023

quoted from 2020 Scrum guide: If it is not an organizational standard, the Scrum Team must create a
Definition of Done appropriate for the product.


Hugo Ernst Ferdinand Andrioli
01:00 pm August 11, 2023

If if is possible to come across a problem that prevents the team making an increment as was described in the term 'scrumble' it is a a sign that the team should include in their DoD what steps need to be so taken that they product is open for extension.
In practice, a successful run, i.e. 100% passed unit tests of the latest release in test environment could be part of such a DoD.

So this decreases the possibility of the impediment described in the scrumble from happening in the first place.


Martin Hinshelwood
10:01 am May 9, 2024

The "Scrumble" is due to not having a releasable increment due to overwhelming undone work. In this case the canceling the Sprint will have no impact.


Sarah
03:31 pm August 27, 2024

"If the Definition of Done for an increment is part of the standards of the organization, all Scrum Teams
must follow it as a minimum. If it is not an organizational standard, the Scrum Team must create a
Definition of Done appropriate for the product." - The Scrum Guide 2020