Why do Agile teams need a Definition of Done?

Hello everyone. My name is Vibhu Srinivasan! Welcome to today’s question. So today’s parking lot question is one that comes up a lot during workshops and when I work with agile teams, and that is why do we need a definition of done? What’s the point? Why do we need it at all? Let’s look at that question today.

The concept of the definition of done can be related to things we do at home. Let’s pick a chore, called cleaning dishes. For those of you who may have cleaned dishes, can you relate to the discussion about cleaning with another member of the house. For one person this could be like, wash the plates and dry them and put them away. For the other person, it could be just like washing it and putting it away. I don’t think I need to dry it. Right?

The reason for “Definition of done” in Agile teams is because of a Lean Tenet called Built-In Quality. What that means is whoever is responsible to build something must be held accountable for the quality of the product. We don’t want someone else to be accountable. We don’t want the QA to be accountable. We don’t want the manager to be accountable. We want whoever builds it to be accountable. And because a product in scrum is built by the scrum team, we want the scrum team to be fully accountable for whatever that they are building.

In this case, let’s say the scrum team is building some kind of software, we want the whole team to have the same definition of done in their mind when they say that they worked or built a software, they all mean the same thing.

In the beginning of sprint 0, they write down, for example, for software they may say something like every line of code we write should have test coverage, the code has been either pair programmed or maybe it’s been peer-reviewed, maybe we want to make sure that the API documentation is completed. We want to make sure that the tests are running on the CI/CD pipeline and not just that they’re there, but they’re constantly running and they’re constantly green. Also we want to make sure that we have some kind of functional tests that cover the entire suite of products.

When we say we are done, we mean that these are all the tasks that we need to do in order to get something done. That is why we call this the DOD or definition of done. What the team does is they take an item from the backlog, and they use the definition of done on top of that in the Sprint and then they say, okay, we are now done with this feature. This feature is now available for you. Product owner. 

Because we have followed the definition of done and we believe this is the best Built-In Quality that we could ship and as far as we go, this is the best we could have done given the time we had.