What are you defining as „Done“?

Agility is why most organizations adopt Scrum.

The actual agility an organization achieves is rooted in how sophisticated Scrum is being employed. Beyond the mere adoption of Scrum, enterprise agility is much accelerated if the organization re-emerges its structures around Scrum. With re-vers-ify I remind people that structures need to be re-imagined, rather than predicted or copied, often upon re-imagining Scrum.

Through Scrum, teams and organizations create, deliver, maintain and evolve great products and services. Through Scrum, teams and organizations create the opportunity of potentially releasing a version of product no later than by the end of each Sprint, where a Sprint takes no more than 4 weeks, and often less. This provides an organization with foundational agility, the potential to thrive on its market, while creating a motivating working environment.

The state of an Increment of product by the end of a Sprint is named “Done” in Scrum.

In order for everyone to understand what “Done” means, teams have a definition of Done in place. The definition of Done holds the shared understanding of what it means for work to be complete, and ensures transparency over the completeness of the work.

At several points in time this provides crucial clarity:

  • When forecasting work deemed feasible for a Sprint.
  • When assessing whether work on Product Backlog items and the product Increment is complete.
  • Progress of development throughout a Sprint.
  • When considering the opportunistic value of the product functionality offered in the Increment (not having to turn the inspection into a quality interrogation).

Without a definition of Done, Scrum cannot be applied effectively.

Ideally, a professional organization defines quality requirements to be incorporated into a product. Regardless, Scrum professionals adhere to an appropriate definition of Done. Always. No undone work is part of the Increment. No undone work is put into production. Ever. Meanwhile committed professional teams keep looking for ways to improve product quality as reflected in the definition of Done.

Many teams across the world seem to be unable to create actually releasable Increments of product. Code is entered, and potentially tested, within a team. But the actual Increment remains scattered and hidden in long-lived branches. Or the work delivered at the end of a Sprint still needs to be integrated with fellow product teams. Or -even worse- it is to be shipped to different departments for that purpose. In those cases Scrum reveals important information over critical organisational impediments that prevent the teams from creating actually releasable versions of product. There is a substantial amount of “Undone Time”, the time it takes to go from an undone piece of work to a Done Increment. This time impedes the agility that the organisation desperately needs. It kills the option of opportunistic releases.

The purpose of a Sprint in Scrum is not to just result in a piece of work that can be shipped to another team, functional group or department. An Increment is expected to be in a useable condition, ready for production. When released, nothing breaks. No unpredictable amounts of open work accumulate in the system, waiting to be handled at some unknown point in time, meanwhile corrupting everybody’s understanding of the progress and quality. The actual release decision depends on how useful the product is, a decision that lies with the Product Owner, the sole representative of users and stakeholders to the Development Team(s).

At least an Increment is integrated across teams and systems to have it in a production-deployable state. Most often teams define as “Done” all the development activities (of which in general a lot of testing) to be performed to consider an Increment as “Releasable”.

Imagine however any non-software industry. Can you imagine ‘quality’ being expressed in terms of the machines, tools and practices to be used? Is this not ‘how’ to create quality, but not a definition of quality?

Quality is defined through the characteristics of a product.

Quality is in the qualities that a product should exhibit. A “Done” product in Scrum is not just a product on which rigorously proper development standards were applied, and therefore can be released. A “Done” product is a product that exhibits your organization’s definition of product qualities.

Valuable Increments are at the heart of Scrum, as I already indicated in my book “Scrum – A Pocket Guide” (2013).

Shifting the balance toward creating Valuable Increments is truly enacting Scrum, and living by the highest Agile principle:

Our highest priority is to satisfy the customer through early and continuous delivery of valuable software (bold-indication by me).

A framework within which people can address complex adaptive problems, while productively and creatively delivering products of the highest possible value (bold-indication by me).

So, do you have a definition of Done? If so, what are you defining as “Done”? Is it ‘Releasable’, or ‘Valuable’? Is every Increment you create valuable? Why not? Does your Scrum Master know? Your management? And what are you doing about it?

 

Releasable in Scrum, actually

Scrum asks for a releasable Increment of product to be available ultimately by the end of every Sprint. A Sprint takes no more than 30 days, and is often shorter. A releasable Increment might be available sooner than by the end of a Sprint, not later.

The purpose of this rule of Scrum is to provide the Product Owner with the opportunity of bringing an updated, improved version of product to market every 1-4 weeks, or more frequent. It is how Scrum implements the first principle of Agile software development:

Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. (source: Principles of Agile Software Development)

Replacing the past wording of ‚shippable‘ by ‚releasable‘ reduced the room to avoid the rigor of releasing to the market frequently, but just shipping an Increment within the organization, the avoidance that abates the benefits and agility needed. The Scrum Guide adds the prefix ‚potentially’, to clarify that Scrum does not say that every Increment must be released. I prefer to leave this prefix out, because ‚releasable‘ in itself is clear enough. Otherwise “Released” would be required as the Increment’s state by the end of the Sprint.

Scrum lays the actual release decision with the Product Owner, as the representative of all (i.e. internal and external) stakeholders. The Product Owner’s decision is not to be limited by technical or engineering aspects. The product Increment is useable. If released, it does not break. That is the accountability of the Development Team. The Product Owner is accountable for assessing whether the Increment is functionally useful.

The Development Team consists of professionals who do the work of delivering a potentially releasable Increment of “Done” product at the end of each Sprint. Only members of the Development Team create the Increment. (…) This Increment is useable, so a Product Owner may choose to immediately release it. (Source: The Scrum Guide)

A Product Owner, being an entrepreneur, understands that no release means no feedback from the market place, no feedback from actual product usage. It means no validation of the assumptions built into the product, reduced learning, postponement of much anticipated improvements. In a way, it blindfolds development.

If a Product Owner decides to release an Increment, it is released. Preferably instantly. No additional work remains to do so. All work that mirrors ‘releasable’ is captured in a definition of Done. Defining “Done” creates transparency:

  • Transparency when forecasting work deemed feasible for a Sprint
  • Transparency when inspecting an Increment
  • Transparency over development progress
  • Transparency regarding the daily work required to have the software in a state of Done

Scrum, as a framework, can wrap various development strategies that increase the capability of creating a releasable (“Done”) version of product in a Sprint; pair programming, test-driven development, ATDD, BDD, Continuous Integration, DevOps, Continuous Delivery, Continuous Deployment. (note: Scrum promoting the Product Owner as the gatekeeper to release might influence how Continuous Deployment is organized.) Feature toggling is certainly an architectural choice that enables higher Product Owner dynamism.

Software being releasable, no later than by the end of a Sprint, is Scrum’s gateway to (business) agility. By the end of every Sprint, or sooner, an updated, improved product can be released to its users and consumers. Feedback can then be gathered to be incorporated into the Product Backlog, and ordered against all other product ambitions.

In Scrum, actually… releasable means all work done to release to the market. Instantly.