Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Definition of Done

David Dikman
November 12, 2019

Definition of Done

What it is, why we need it, how trunk-based development changes how we approach it and an example of what it could contain.

David Dikman

November 12, 2019
Tweet

More Decks by David Dikman

Other Decks in Programming

Transcript

  1. Summary • Why do we need a definition of done?

    • How should we use it? • How committing to trunk may help • An example to start from
  2. What is done? Almost done Code has been written? Done

    It is pull requested and refactored? Done done It is tested and released to production?
  3. Time is precious Expectation: We need a privacy policy asap

    to avoid being sued. We expect to see the new text on a incredibly simple page. Actual: We spend 4 days working on revamping the layout.
  4. Incomplete tasks Expectation: When we say the bug is done,

    the expectation is users will never see it. Actual: Next sprint it takes 2 days to refactor last comments and test before we can deploy it. We miss a planned user story that sprint due to lack of time.
  5. Missing test cases Expectation: We’ve tested all acceptance criteria (that

    weren’t written down). Actual: We trusted unit tests and never did more than a login in staging to check it works, turns out the mail system is different from localhost and mails aren’t being sent.
  6. A framework Use where applicable 1https://medium.com/@dannysmith/the-definition-of-done-what-does-done-actuall y-mean-ef1e5520e153 It’s more like

    guidelines anyway CharlieHR1 has a long list of items in their DoD but only some are mandatory.
  7. Merging to trunk matters Merging to master encourages finishing fast.

    Smaller changes can be finished quicker. Once something is in master, it assumes many items in definition of done is ready.
  8. It is a do or don’t Because it affects our

    Definition of Done If we don’t merge to master it means we may have pull requests or stories going into feature branches and still being “done”. Meaning, there is still test work, review work or other things remaining before it is truly done.
  9. Developed • Scope defined • Design agreed • Implemented •

    Localised • Unit/integration tested • Test cases documented • Acceptance criteria met • Documentation updated • Pull request opened • Cloud build green • Pull request reviewed • Comments answered/resolved
  10. Released • Release procedure documented & tested • Release timing

    approved by manager • Pull request merged ◦ Squash and comment with release notes • Production environment status is green • No immediate issues • Jira ticket is closed