Blog

Demystifying the Definition of Done: a must-have for Agile teams

Have you ever come across the term "Definition of Done" in your Agile journey? Many Agile teams encounter this concept, but not all of them adopt it. There could be several reasons for this: not fully grasping its purpose, confusing it with Acceptance Criteria, or simply not having enough time to implement it. In this blog post, I'll demystify the Definition of Done, explaining what it is and why your team needs it to thrive. Buckle up as we dive into the world of DoD and discover its potential benefits!

What is the Definition of Done?

In simple terms, the Definition of Done is a list of criteria that must be met for a work item to be considered "done done," eliminating any ambiguity of "almost done" or "I guess it's completed." The specifics of the Definition of Done will vary depending on the nature of the work, but it will typically be more or less standard for similar types of work items. For example, a software development team might decide that all work involving coding should follow this Definition of Done:
1) code in production
2) unit test coverage is above 95%
3) manual testing is completed
4) Product Owner approved
Or, if for example the team has a completely different approach to unit test coverage, their Definition of Done would focus on other aspects of work that matter for them more than unit tests. There is no one size fits all solution here.
Think of the Definition of Done as a checklist that, on one hand, helps you ensure nothing falls through the cracks, and on the other hand, prevents you from closing out a partially completed work item.

What happens when teams don't use the Definition of Done?

When a team doesn't use a Definition of Done, unsaid assumptions about what constitutes a completed work item often arise. One person might think that writing code is enough, another might only consider a task done after all tests are completed (but not necessarily pushed to production), and a third person might only call something done once it's in production. These discrepancies often go undiscussed, leading to troubles and conflicts within the team. The Definition of Done helps ensure that everyone agrees on what "done" means.

Let's debunk a few common myths about the Definition of Done:

  1. It should be written per work item and takes too much time.
  2. Wrong - the Definition of Done is a shared checklist created once and applied to most work items. You can have different Definitions of Done for various types of work, but it's best to keep it as simple as possible.
  3. It introduces a lot of bureaucracy.
  4. Wrong - don't treat the Definition of Done as a formal "gateway." Instead, view it as a useful self-check tool. It's not set in stone; it's a flexible guidance to help you. If something doesn't apply to your work item, skip it.
  5. It's the same as Acceptance Criteria.
  6. Wrong - Acceptance Criteria are unique to each work item and clarify what's expected from that specific item, such as prerequisites, triggers, and different scenarios. You might meet the Acceptance Criteria (create exactly what was expected) but fail to meet the Definition of Done (e.g., forget to get Product Owner approval).
  7. The Definition of Done is only for software teams.
  8. Wrong - any team can benefit from a Definition of Done. Even if there's more variability in the types of tasks, you should be able to come up with criteria that must be met to consider the work done. Think about documentation, communication, peer reviews, and various system updates, among other aspects.

Benefits of having a Definition of Done

#1 Helps you be on the same page about the scope of work

Here's how I think about it: I enjoy debating topics like politics, religion, philosophy, and Agile frameworks, especially when I find a stimulating conversation partner who can explore different points of view and uncover new insights. However, I can't stand arguing over things like, "Should we consider test automation as part of this user story's scope, yes or no?" - especially if it occurs daily.
The Definition of Done allows your team to make this decision once and for all, saving you time and energy by predefining what is included in the scope by default and what isn't. Needless to say, this helps improve the atmosphere within the team.

#2 Tells you when it's OK to consider work done

Some teams don't proactively discuss the scope of work beforehand, which can happen if you're not estimating the work or if there are issues with your product planning process. As a result, they may end up engaging in heated arguments about whether it's time to "close this Jira ticket already."
Once the majority of work is completed, it can be tempting to move on to the next new, shiny item, often leaving half-baked items behind. The Definition of Done won't allow you to do that, as it sets clear criteria for when a work item can be considered finished and closed.

#3 Allows you to plan more accurately

When estimating work, it's crucial to understand the full scope of the task, whether it's just fixing a small issue or also communicating updates to other teams, issuing a press release for customers, and updating documentation. Something that appears to require only 2 hours of work on the surface may turn out to be just the tip of the iceberg.
The Definition of Done encourages us to proactively consider all aspects of a work item and, as a result, provide better estimates of its size. In Agile, we don't advocate for building detailed project plans and work breakdown structures, but occasionally, you'll need to know how many weeks to budget for a specific project. Without a Definition of Done, your estimates are likely to be inconsistent and unreliable.

#4 Prevents unwanted surprises

While some work items are non-standard and may require a different approach, the Definition of Done can't possibly cover every unique circumstance. However, having a Definition of Done in place instills a valuable habit within the team: proactively considering what's involved in completing a task and declaring it "done" before work begins.
Even if there are aspects of a work item that aren't covered by the Definition of Done, your team is more likely to identify them ahead of time and better plan its time and workload. This foresight helps avoid unexpected delays or other "surprises" that could derail your progress.

#5 Ensures value delivery

Last but not least, the Definition of Done is crucial for ensuring value delivery. Each work item your team completes should bring customer value, business value, or both. If it doesn't, the time spent on it is wasted.
Consider the example of a software team. Code that is simply written and stored in a repository doesn't deliver value. Even code that has been verified and tested but remains in the repository doesn't deliver value. However, when that code is deployed to production and adds or changes functionality that customers can benefit from, that's when value is delivered.
The Definition of Done encourages teams to see each work item through to the very end, ensuring that they reach the point of value delivery. Ideally, teams should also know how to measure this value, although whether to include this aspect in the Definition of Done is up to the team.
In conclusion, the Definition of Done is an invaluable tool that brings numerous benefits to Agile teams. It helps to align team members on the scope of work, reduces misunderstandings, and prevents unwanted surprises. By implementing a clear Definition of Done, teams can improve their planning and estimation accuracy, ensuring that they deliver value to customers and the business.
The Definition of Done fosters a proactive mindset, encouraging teams to consider all aspects of a work item and to follow through on delivering value. Ultimately, adopting and adhering to a well-defined Definition of Done can enhance team collaboration, streamline processes, and contribute to the overall success of your Agile transformation.
Tools Agile techniques Agile coaching Productivity