by Chris Brown
One of the terms that I first heard when I joined Acquia was the “Definition of Done”. This was a concept that originated from our engineering team and when I heard it I really liked it. The idea behind the Definition of Done is simply a checklist of what has to be accomplished before you can call a sprint/release complete. I was reminded of how important this concept is today when I had to make the call to delay a release because could not pass the next step in the Definition of Done.
My decision to not move forward with the release was easy because it took all the emotion out of the decision. I looked at how “done” is defined on the project and saw that I could not move to the next stage because the current stage was not complete. I find this liberating because it makes it easy to make difficult decisions. Think back to the last time you had to make a decision to move to production. Often times you are under pressure from your customer and even yourself to make the release happen. This builds a lot of lot emotion into the decision and that emotion clouds the decision making process. Having an objective metric takes the emotion out of the decision and a concrete measure to explain to the customer why the release will not go forward.
Defining “done” does not have to be a long and complicated list of items. It can be as simple as:
- unit test cases pass
- functional test cases pass
- deployed to production successful
- smoke tests pass
Of course unless you are building a very simple site you will want to take a little more into consideration, such as client sign off, performance metrics met, code reviews happened, and any number of other checkpoints have been passed. What is important is that there is a list of tasks that must be complete before the code can move on. This list should be published and agreed to by everyone on the development and the customer. Having this list will make everyone’s life easier the next time the decision to Go or No Go comes up because it will be clear to everyone the correct decision.