In Scrum, there is a concept of the “Definition of ‘Done'” that is used to understand what teams produce every Sprint. Unfortunately, it is not well understood, nor is it consistently applied. Part of the problem is that the name of the concept is misleading. Every time we do coaching or training in organizations, we spend an inordinate amount of time getting this concept across clearly. Recently, one of our coaches, Travis Birch, had an insight about the name of the concept. The word “definition” makes us think of something static and permanent. Definitions don’t normally change. However, in Scrum, the definition of “done” is always changing. Doneness is not something that we get perfect at the start, rather, teams develop their capacity to deliver more and more each Sprint… and not just in terms of features. As I explained in another article called Four Methods of Perfecting Agile, the definition of “done” is something that can and should grow over time.
So what can we do? Can we rename the concept? The concept is really a snapshot description of the activities and attributes that a team puts into a Sprint’s worth of work. For example, at first a team might not be writing automated unit tests. Therefore, automated unit tests are not part of the definition of “done” – a snapshot of their work at the end of the Sprint does not include automated unit tests. Then in a retrospective the team decides that they need to create automated unit tests. They do so in the next Sprint. Now, automated unit tests are a part of the definition of “done”. Finally, a few Sprints later, one of the members of the team attends Agile Software Engineering Practices training [shameless plug] and decides that they should start doing test-driven development. The team learns how to do this and from now on the definition of “done” includes test-driving all production code.
A New Name
Let’s try another name for this concept: the “Expanding Benchmark”. I think this term much more accurately conveys the sense of the concept. It is expected that this concept is not static, rather, as the team overcomes obstacles, automates things, learns new skills, and gains new trust and authority, that their work will expand. And specifically, we are expanding the benchmark of what activities and attributes of software are delivered at the end of each Sprint.
So – let’s get rid of the Definition of “Done” and start talking about a team’s Expanding Benchmark. What sayest you?