Done. Or done, DONE?
Many times when working on a product with a team we fail to identify what "done" means. There needs to be an agreement created by all parties that done is a list of requirements that have been completed to obtain a result. Sometimes we create our own expectations that "done" is understood without identifying what units of work needs to be completed because "we should just know". I did not realize this until I became a father.
As a child I grew up by learning the Definition of Done by my mother through trial and error. For example, my mother would tell my siblings and I to do our chores before video games, backyard hoops, watching tv, etc. Of course our version of done was just making our bed, or just washing the dishes, or just fixing up the TV guide, and Fingerhut catalogues on the coffee table. Yes I grew up in the era of TV guides and Fingerhut, but that is besides the point. The fact of the matter is that we would learn her Definition of Done through a number of different iterations, and her telling us exactly what needed to be done until we got it right. Sometimes we had only few chances to get it right before some strict disciplining came down on us. However, we never had an outlined agreement and understanding in the beginning of what exactly was her Definition of Done.
Now, as a parent myself, I have to step back and relay my own version of done to my young ones. I have learned that it takes quite a bit of patience and understanding to break down tasks into small achievable units to create the best rate of success with my children. For my eight year old daughter I have learned that giving her a list of what clarifies as done works best for her when cleaning her room. For my three year old son........let's just say it's still a work in progress. However, he does work well with small tasks one at a time. Like, put all your legos back in the box, pick up your clothes, etc. The same process should be used when working with your Agile teams. When creating a Definition of Done all team members must be in agreement as to what "done" is so that the best possible product delivered to our stakeholders.
What are some ways that we all can achieve the most optimal level of done when delivering our products? First we need to understand all the tasks that needs to be completed when creating a Definition of Done. For example, I love a great steak. Whenever time (or my bank account) permits I try to visit different steak restaurants when traveling or on special occasions. However, there was on particular instance where a restaurant did not meet my expectations or my definition of done. It was quite a laughable moment as a professional working with Agile teams often.
Think of this from a perspective of an Agile team.
Me = Stakeholder
Waiter = Business Analyst
Kitchen Cooks = Development team
Somewhere in here you would have liked to say that there could have been a Product Owner but you will understand my reasoning of omitting that role below.
Waiter - "How would you like your steak?"
Me - "I think I would like this steak Medium with a bit of a charbroiled top. You know where the chef use the blow torch type of thing?"
Waiter - "I know exactly what you are referring to. Pink center with a little char on the top and edges."
Me - "Yes, that works. Thanks!"
When my steak came back it was completely well done. I call my waiter (psuedo Business Analyst) back to our table to proclaim that the steak was not my Definition of Done per our agreement. After apologizing, she stated "There must have been a mixup with the order. That is clearly not what I noted as your requirement. Would you like for me to have them make you another?" Due to time, I did not accept the offer and took a loss for not having steak that night.
*insert the biggest sad face in the world*
Here is how I apply this lesson to Agile. I know there are a lot of disconnects that possibly happened with my restaurant experience that could have been avoided to provide me with a product that met my specifications of done. However, in my professional life, I noticed that with many teams we fail to identify what done means just like what was attempted here in the restaurant. Especially, with teams that are high performing and are great at what they do. Just like the restaurant they were a 4.5 star restaurant that had great services and great food. Agile teams can be the same way when delivering products but to continue high performance and delivery, here are some steps that agile teams must commit to.
1. Understanding what "Done" means from your Product Owner. Sometimes we are so high performing that we tend to skip steps in the process under the guise of "being iterative, failing fast, and creating a fast moving environment". The process is simply the process. The Definition Of Done is how we identify if we are on target with the quality of work and verify that the User Story or unit of work is completed. In reference back to my steak dinner. Was I still able to eat dinner that night at the restaurant? Yes, of course. I had a delicious salad, sides, and a pretty hefty discount to my meal that allowed me to still enjoy what was agreed to as done. However, not having the steak did not ruin my experience entirely. The steak was only one User Story in conjunction of the Minimum Viable Product of the dinner that I was looking to enjoy fully,
2. Properly communicating what "Done" means to your development team. It is not ideal but in some cases or environments the Product Owner may not be available to make sure that every minute detail is correct. For example, it would be rare that you would see the Maître d'hôtel in the back of the kitchen of a restaurant making sure that all the orders are reaching its ultimate deliciousness. The Business Analyst would be the intermediary on providing good requirements for the development team to do their best work. In my case, I would have hoped that someone could have been behind the scenes saying "Hey, that is not medium. That steak is well done." But alas when requirements are not clear, Product Owners not present, and a Definition of Done is not fully understood then issues may arise.
3. Executing the agreed Definition of Done. Back to when I was a kid doing chores my mother would ask
"Hey are you finished cleaning your room?"
My response: "Yea, all I have to do is finish making my bed, sweep the floor, and fold my clothes."
I laugh sometimes because my daughter is now the same way. I have been on teams where their responses have been the same. "We have completed all of the development......but, we still have to do integration testing." When that happens with any of the teams I am coaching I just simply say "Great, so that means we are not done, right?" Sometimes awkward silence is the response. There can be no shortcuts when executing the Definition of Done. On agile teams nor when it comes to doing chores when your parents are giving you allowance. The Definition of Done should meet all requirements as agreed upon. Whenever the requirements are not fulfilled then you begin to sound like a teenage version of myself.
"Yea my chores are done. I just need to ........ and have to finish........ and just put away......... Can I still have my allowance?