Archive for October, 2023

DoD – Definition of Done

2023-10-29 21:04

The Scrum Guide says the Definition of Done is a formal description of the state of the Increment when it meets the quality measures required for the product. This abstract definition refers to the next abstract definition… quality measures. What is the thing about quality in the Scrum context? Everything. Time, budget and scope are variable, but the quality remains high. With explicit quality-criteria the steerability of the product development is assured. After every increment the decision can be taken to develop in a new valuable direction. Instead of detailed planning over a wide horizon, every increment concludes a new experiment of valuable feedback-gathering and enables the decision to explore new areas to maximize the customer value and minimize the time to market.

Is this the holy grail of development? Not really. If it is clear what to develop, the agile approach adds unnecessary overhead with the risk that increments (or even the whole project) is getting really big before assuring everything is done according to the quality criteria. A compromising way out could be the incremental closure of features along the progress of the development and with this the grey area of meeting a more or less well defined Definition of Done arises. The complete documentation and user feedback for the feature is only possible, if the deployment is completed, the integration tests depend on the implementation of related features to minimize the testing efforts and sooner as desired the increments are getting longer with the drawbacks of loosing training (c.f “If it hurts, do it more often”) and landing in the worst spot between having too little scaling effects and having to learn the things every iteration from scratch.

The standard way out? Automate away as much as possible, i.e. all the things, that are repeatedly executed, need to be automated and things that are not necessary need to be left away. The more difficult question is about the scope. What is in scope for the DoD and what is out of scope.

A short comparison which is explaining the basic dilemmas: Breakfast-cereals. What is needed for a successful deployment of breakfast cereals. The steps viewed from the perspective of an 8-year-old: get the milk, get the cereals, get a spoon and mix it in a bowl and after eating it needs to be tidied up: bowl and spoon are put in the dish-washer, the cereals are put back to their place and the milk in the fridge. Is it executed always in this way? Not really, sometimes the steps after eating are left out partly or completely, because they are not immediately necessary and an 8-year old is not bothering too much about the supplies of breakfast-cereals or milk. The same is true for the bowl and the spoon. He has no special requirements and takes one of the standard-dishes (stockpile of 12+). Would it be useful to extend the Definition of Done to all thinkable edge-cases, the supply phase and the clearing of the dishwasher afterwards? Not really, the meaning behind is difficult to grasp for an 8-year old and the time-consumption is suboptimal in the morning before leaving for school.

Software deployment is similar. Not every step is executed together with the completion of a feature, but nevertheless essential steps need to be performed on a regular basis in order to be able to sustainably deploy the features.