The most famous list of software development. Part 2, Definition of Done

The article tells about the even more famous list in software development, the Definition of Done.

The most famous list of software development. Part 2, Definition of Done

In the previous part of the article, we discussed the list of criteria known as the Definition of Ready. This time, we will focus on the Definition of Done list. Both are the integral parts of the Scrum methodology, which is used for organizing work in software development.

The Definition of Done is mentioned much more frequently than its counterpart, the Definition of Ready. Its journey through the pages of literature is quite amusing [1]. Initially, the phrase appeared in programming books in a very straightforward form. In the assembly language of the PDP-11 computer [2], there is a symbol DONE with several meanings. It is necessary to determine the current definition, the so-called definition of DONE [3].

One of the first appearances of this term in the context we are interested in unexpectedly occurs in a book about overcoming post-traumatic stress disorder by a Vietnam War veteran [4]:

No one can tell you you're done. Tom isn't going to tell you. He could guess, but he won't because he doesn't know what's done for you. You have to make that decision. I spoke about functioning. From one perspective, you can be done when you function in society: hold a job, be self-dependent, and control yourself well enough to do all of the above. I think that's the minimum definition of done, and it's probably not such a bad place to stop. I had to take it a little further.

This passage discusses a veteran’s return to peaceful life, not in the sense of physically returning home, but in terms of finding peace in peaceful activities. The commonality between this passage and the Definition of Done is that teams using Scrum must independently determine for themselves what a done task is.

In the teams I have been part of, we used a checklist consisting of a constant part defining routine actions and a variable part describing the essence of the task. Yes, this time we are developing a button, and last time we developed an input field, but tests must be passed in both cases.

The late 1990s and early 2000s were a time of rapid emergence of various agile approaches to software development. Scrum grew out of this period, but there were many others: Extreme Programming, Lean, Crystal. While preparing this article, I learned about another one: QRPD (Quality Rapid Product Development). Like many similar approaches, it quickly faded into obscurity. However, it is in a book about QRPD that I found the first mention of the Definition of Done as a unified term in our field [5].

Interestingly, the author of the book and approach, Orion Moshe Kopelman, moved to the island of Maui [6] and ran for mayor of the island [7]. What a twist.

The first mention of the term in a book by one of the authors of Scrum occurred in 2004 [8]. The mention itself doesn’t look like a presentation of the concept; it happens in passing. On the other hand, the Scrum Guide, which can be considered the “manual for Scrum” has included a specific section on Done since its first version [9]. This is where the term is described.

Here is how the Definition of Done looks in the latest version of the Scrum Guide [10]:

The Definition of Done is a formal description of the state of the Increment when it meets the quality measures required for the product.

In the case of the Definition of Done, the authors of Scrum do not offer any ready-made solutions as they did with the Definition of Ready. They write that if any Definition of Done exists in the organization's standards, it should be used as a basis. If there is no such definition, the Scrum team should develop its own.

In software development, there is a love for inventing, and management issues also fall under this love. It can be noted that the Definition of Done closely resembles acceptance criteria. We can consider the specifics and call them “self-acceptance criteria.” After all, it is the team itself that decides whether the resulting product meets the existing requirements. And with what word does the word “criteria” love to neighbor? That's right, with the “list” word!

The Definition of Done is a list of criteria that the result must meet. It is often convenient when the list takes the form of a checklist. Before completing a task, the team goes through the checklist. If the result meets all the criteria, then hurray, the work is done. If not, it is sent back for additional work to apply.


List of references:
[1] Search results for “definition of done” in Internet Archive
[2] PDP-11 from Wikipedia
[3] Thomas S. Frank, Introduction to the PDP-11 and its assembly language, ISBN 0-13-491704-9
[4] Ron Zaczek, “Farewell, Darkness: A Veteran’s Triumph over Combat Trauma” ISBN 978-1557509895
[5] Orion Moshe Kopelman, Projects at Warp-Speed with QRPD, ISBN 978-1885261168
[6] Maui from Wikipedia
[7] Ori Kopelman Candidate for Mayor from Mauitopia website
[8] Ken Schwaber, Agile Project Management with Scrum, ISBN 978-0735619937
[9] OLD Scrum Guide Version 1 February 2010 from MITCH LACEY & ASSOCIATES INC. website
[10] Scrum Guide from Scrum Guides website