Definition

The team aknowledges and displays somewhere in the team room, a list of criteria which must be met before a product increment is considered completed. If these criteria are not met at the end of a sprint, it usually means that the work should not be conted towards that sprint’s velocity.

Most Commonly Known As

Software developers are considered to be very sloppy when answering the question – “are you done with this feature?” – To be fair, this is an inconclusive question. It can mean “done programming” and this is generally what a developer will understand when answering. However, the meaning behind it is usually “are you done programming, creating test data, testing, ensuring it’s ready t obe deployed…”.

To get the actual answer, you should ask – “I know that you are done, but are you DONE-done?”.

What are the benefits?

Usefully guides pre-implementation activities such as: discussion, estimation, design
Once a feature has been aknowledged as “done”, the cost of rework becomes severely limited
Having a straight-forward contract limits the chance of misunderstanding and conflict between the development team and the customer/product

Common Mistakes

It can be counter-productive to obsess over the list of criteria; this list needs to define what is the minimum amount of work required to get a product increment closer to the “done” state
The definition of done should not be just a shared understanding, it should be spelled out and displayed on a wall, or it might lose much of its effectiveness;
Individual features or user stories may have a specific “done” criteria in addition to the ones that apply to work in general