Definition of Done (DOD) and Acceptance Criterias (AC) – let’s talk about these concepts and figure out what the fundamental difference is. There is a difference, and, moreover, this difference is significant. In this article, as well as in video material, I give an example that has nothing to do with IT. This example, in my opinion, will be as accessible as possible to a wide audience, so I recommend reading both the article itself and watching the video material or familiarizing yourself with at least one of the proposed options.
Let us go…
Imagine that you are the owner of a small cake shop, and at the same time, you are a chef. You only have one assistant, let’s call him Eugene. He helps you with a number of questions, which we will come back to later.
One fine day a client came to your pastry shop, his name is Dmitry, and he ordered two cakes from you, one is a large chocolate cake and the second one is a small banana cake. After some time, Julia looked into your shop. She plans to visit a friend and orders a medium-sized strawberry cake. In addition, towards the end of the day, Michael, walking home from work, decided to order a large fruitcake with nuts for his family, since tomorrow is Friday and soon the weekend.
- Dmitry: 1x large chocolate cake, 1 x small banana cake
- Julia: 1x medium strawberry cake
- Michael: 1x large fruit cake with nuts
You have started fulfilling orders. Consider, for example, an order made by Dmitry.
As a chef, after kneading the dough, you took up the first order for two cakes. Having rolled out two cakes – one large for a chocolate cake and one small for a banana cake – you smoothly moved on to the filling and made the chocolate and banana filling, respectively. After carefully laying out the appropriate fillings on the cakes and giving them the desired shape, you handed the cakes to your assistant Eugene. Eugene once again made sure that the cakes exactly matched what was ordered (large chocolate cake and small banana cake) and put both confectionery products in the refrigerator for 2 hours so that the cakes acquired the desired consistency. Then Eugene pulled out the cakes and packed each one in a gift box, after which he signed greeting cards for each cake. Moreover, finally, the next day Dmitry went to the pastry shop, and Eugene gave him two cakes (big chocolate cake and small banana cake).
Acceptance Criteria (AC) – Explained by Example
Let’s stop here as that is enough for now. We will start with the Acceptance Criterias, but before we directly begin to understand what the acceptance criteria can be, let us agree on their semantic purpose. The main task of the acceptance criteria is to make sure that we receive exactly what has been agreed or ordered as in our case.
Now let us impose this conceptual understanding on our situation when we have ordered different cakes. Back to Dmitry, the customer who ordered a large chocolate cake and a small banana cake. We have already determined that the main purpose of the acceptance criteria is to make sure that exactly what was ordered will be delivered, which means that the acceptance criteria for cakes ordered by Dmitry may look like this:
Large chocolate cake must meet the following acceptance criteria:
- The diameter of the cake is not less than * 40cm
- Dark chocolate-like filling
- Chocolate to taste
- Smells like chocolate
- Decorated with chocolate chips
Small banana cake must meet the following acceptance criteria:
- The diameter of the cake is not less than * 20cm
- The filling should be yellowish
- Banana to taste
- Smells like bananas
- Garnished with fresh banana slices
* inner size grid 20, 30 and 40, allowing to distinguish the diameter of cakes from small to large
Summary of the Acceptance Criterias:
Now, by checking each of the produced cakes for compliance with the acceptance criteria, we can make sure that we received exactly what we ordered. In addition, this example shows that the acceptance criteria are unique for each individual cake (derivative is a result). For example, cakes ordered by Julia and Michael will have different acceptance criteria, since the cakes they ordered differ in both filling and size.
If you are interested in this question and you are taking your first steps in realizing and understanding the acceptance criteria, I suggest you, dear reader, independently compile criteria for orders made by two other clients … 😀 For example, you can do this in the comments to the article.
Acceptance Criterias (AC) – example from IT.
Now let us jump into IT. Therefore, we have a simple task: on the product page, create an “order” button, which, when clicked, will display an order form with a list of certain fields.
What are our acceptance criteria here? Yes, yes, this question is for you 😀 Ok, let us think together. Let me remind you that the task we solve with the acceptance criteria is to make sure that we get exactly what we ordered.
Therefore, as the acceptance criteria for this task from IT, I would suggest the following:
- The “order” button is available on the product page (in all browsers, including the mobile version)
- When you click on the “order” button in a pop-up window, the order form is shown (in all browsers, including the mobile version)
- The order form contains the following fields (list fields …)
- The form is equipped with data validation (for example, you cannot enter text in the “phone” field …)
- When filling in all the required fields of the order and clicking the “submit order” button, the client receives a message “about order successfully sent”
- When filling in all the required fields of the order and clicking the “submit order” button, the site administrator receives a notification and all information about the order, filled out by the client, by email.
For example, like this! It is quite a working option, which will allow at the entrance to make sure that this is the necessary derivative, which was set to meet the key acceptance criteria. It is worth saying here that you do not need to be lazy and describe your acceptance criteria. And yes, if it seemed to you that there is a lot of repetition and tautology in the acceptance criteria proposed above, then this is not so. Most likely, you have not yet understood the point, because it is the detailed description of what is expected based on the acceptance criteria that will make sure that we get exactly what we need at the entrance! In addition, we ourselves are better aware of what we really need .. and what we don’t need.
Definition of Done (DOD) – Explanation by Example
Now let us move on to the Definition of Done. If acceptance criteria are needed to make sure we are delivering exactly what was ordered, then why do we need the Definition of Done!?
The question is open and lets us agree on it right away. The main semantic task that is assigned to the readiness criteria is the creation of a unified or standardized approach that would be common to all derivatives (tasks) and give an answer to the main question: was everything done in order to consider the task ready in full according to all prescribed manufacturing practices?
Let us go back to our example – an order from Dmitry for two cakes. Therefore, what practices can we talk about here? Let us take a closer look at the role of Eugene in the process of making cakes and highlight these practices.
As you can see from the example, having received the cakes from you (the chef), Eugene first made sure that the cake received corresponds to what was in the order, both in size and in essence. Then Eugene put the cake in the refrigerator for 2+ hours to give it the desired consistency, after which, took out the cake, packed it, and signed a greeting card/message. Moreover, in the end, he handed the cake to the buyer. Therefore, extracting the key points from these steps, you can come to the following Definition of Done.
Definition of Done – example:
- The cake provided correspond to the ordered
- The cake was frozen and acquired a firm consistency
- The cake has a presentable look
- The cake was gift-wrapped
- Postcard/Wish message was signed for the customer
- The cake is handed over to the customer
Let us take another look at the aforementioned Definition of Done. The steps that Eugene takes are not unique but are unified for all cakes. It does not matter whether this cake is for Dmitry, Julia, Michael, or some other customer, Eugene will exactly follow all the assigned steps. These steps are no less important than the Acceptance Criterias since they allow you to minimize errors and achieve a consistent delivery result for all derivatives (all cakes are checked according to the subject of the order, brought to the desired state by freezing, carefully packed, a message or congratulation is signed, and, finally, the cake is delivered to the customer). After successfully passing all the Definition of Done, we no longer doubt the quality of the delivery and no longer ask ourselves a question like:
Definition of Done (DOD) – an example from IT
Now let’s think about production practices or Definition of Done that we can implement for the development team in order to get the most consistent, complete result for all deliverables. Let me remind you that the Definition of Done is common to all tasks/deliverables.
Therefore Definition of Done for the order form could be as follow:
- Unit testing done
- Code inspected by another developer
- Functional testing completed
- Documentation updated
- Code delivered to staging development server
- Integration testing completed
Such or similar practices will help to deliver the code in an acceptable state at a consistent level and not to torment oneself with questions like “Has everything been done to consider the task completed?”.
In a flexible Agile environment, both Acceptance Criteria and Definition of Done are important. The first – Acceptance Criterias – allow us to make sure that the resulting derivative meets expectations as a result of completing a task, while the second – Definition of Done – give us unified production practices that, if successful, answer affirmatively to the question that everything necessary has been completed in order to consider the task completed.