Definition of Done : Why it matters?

Acceptance Criteria -vs- Definition of Done.jpg

One of the first things we recommend new Agile teams establish is what’s called the “Definition of Done”.  The DoD is crucial to highly functioning Agile Teams in helping them develop practices and behavior that drive quality, consistency and transparency.

Why it matters

A useful product has two key aspects. Features in this product are not only useful to users but are also usable, in other words, features actually work. The product owner and stakeholders help the delivery team understand the “right thing” to be developed and the delivery team uses their development expertise to build it the “right way”. Both these dimensions are crucial for any product development.

Right-Thing, Right-Way:These are features that are desired by your end-users and they work the way they are supposed to. These features are conceptually coherent with the product, and also built the right way, such that they are stable and do not cause technical instability in the product.

Right-Thing, Wrong-Way: These are features that are desired by the users and they use these features. However, since these are not built the “right way” they do not function the way these are supposed to. When features are not tested they fail to perform their utility. When features are implemented without cognisance to end-user context and behavior, or when the team developing the features lacks *competence* and discipline, we create products that are buggy. These issues hamper the ability for end-users to get their job done and leads to waste and higher costs. As one executive, so aptly pondered out loud “Why is it that we never have time to do it right! but have time to do it again?”.

Wrong-Thing, Right-Way: These are the features that your end-users do not know exist. They may have been built the “right way” but then these features are not discovered and not used. These are ghost features that are silently increasing product engineering complexity. In Extreme Programming, the prioritization principle of YAGNI (You ain’t gonna need it) is intended to counter unfettered stakeholder desires and implement only features that are needed, now!. Deferring commitment for features is a good strategy since we all know, unlike tomatoes we don’t sell software by the pound.

Wrong-Thing, Wrong-Way: Wrong features built the wrong way are cancerous cells that eat up developmental capacity since these cause issues with well functioning parts of the product. This causes erosion of development capacity for the team as the team gets sucked into bug fixes only to discover that issue stems from an area of the product that no one uses. These features erode team morale. Lack of team discipline has lead to accumulation of technical debt and feature creep creating an untenable situation. Such legacy areas in a product are universally feared.

The Definition of Done (DoD) expresses the “right way”, a checklist that asserts quality of the product and the workmanship of the delivery team. Acceptance criteria accompanying a User Story, or a feature requirement represent the “right thing”. Getting both these aspects of product development right are important for sustainable and continual product growth. It requires collaboration, trust and feedback with and amongst the delivery team(s), product owner and stakeholders.