In my early Agile days, we did not have a formal Definition of Done. We went by feel. If we were happy with the implementation from a design standpoint, if the story did what the Product Owner asked for, if it was fast enough for the user and if we did “enough” testing, then it was done. Since then, experience has suggested the need to be more precise about the criteria for “done”. It helps us to get agreement from all interested parties.
The convention that has evolved in the Agile world is the “Definition of Done”. The DOD is project specific and can change as the project proceeds and as the team and organization mature in Agile practices.
I recently worked with a team that was challenged in meeting their commitment in the early Sprints. This is not uncommon but this particular team was impacted in a couple of ways that could have been avoided:
- The DOD was defined by the Product Discovery team before the development team was even assembled. The Product Discovery team was a group of leads and the Project Manager. They meant well by setting the bar high for “doneness” but it was too high for the people who ended up on the team. The DOD required skills that were not present on the team (TDD and automated testing in particular).
- The team was not involved in defining the DOD, but they were expected to comply with it. This is a Big Red Flag. Commitments made for you by someone else are harder to keep.
And, of course, this high hurdle on Day One set off a positive feedback loop (aka. vicious cycle) of pressure on people who now needed to learn too much new stuff in too short a time. People under pressure do not think faster or better. So the pressure grew.
I did my best as a Coach with Limited Influence to relieve this pressure through negotiations with Those Who Watch Impatiently. I also did a fair amount of mentoring in TDD and automated testing. It was great fun for me but not so much for this new team. We made good progress towards confidence by creating some space for the learning and working toward the high bar in small steps.
Definition of Done is an important tool but, like all tools, it must be used smartly. And, like all things Agile, it is subject to inspection and adaptation.