Hvad betyder færdig? Definition of Done i praksis

Af Weapp · Opdateret

Definition of Done er en fælles, skriftlig liste over hvad der kræves for at noget kan regnes som færdigt: ikke bare at koden findes, men at den er testet, dokumenteret og idriftsat. For en kunde er den en beskyttelse mod halvfærdige leverancer fordi den knytter ordet færdig til konkrete kriterier som alle er blevet enige om på forhånd.

“Er det færdigt?” “Ja, det er færdigt.” To uger senere viser det sig at funktionen aldrig blev testet ordentligt, mangler dokumentation og ikke engang er idriftsat hos brugerne. Ordet færdig er projektverdenens mest misbrugte, for det betyder forskellige ting for forskellige mennesker. Løsningen er en fælles Definition of Done: en skriftlig aftale om hvad der faktisk kræves før noget må kaldes færdigt.

Hvad en Definition of Done indeholder

En Definition of Done er en liste med kriterier der gælder ens for alt der bygges. Den indfanger den ubekvemme sandhed at kode ikke er færdig bare fordi den findes og ser ud til at virke. Omkring selve udviklingen ligger en hale af arbejde der ellers usynligt bliver udskudt.

Et rimeligt eksempel på en Definition of Done kan omfatte:

  • Funktionen opfylder sine acceptkriterier. Den gør det den skulle.
  • Koden er reviewet. Mindst én anden udvikler har læst og godkendt den.
  • Der er test, og de består. Funktionen er testet, og testene køres automatisk.
  • Dokumentationen er opdateret. Den næste person forstår hvordan det hænger sammen.
  • Idriftsat i det rigtige miljø. Koden ligger hvor den skal, ikke kun på en udviklers computer.
  • Der er ingen kendte alvorlige fejl tilbage. Det der afleveres, er faktisk brugbart.

Listen behøver ikke være lang, men den skal være fælles og skriftlig. Pointen er at alle (udviklere, testere og du som kunde) mener det samme når ordet færdig bruges.

Hvorfor “koden virker” ikke er nok

Forestil dig at du bestiller et nyt køkken. Snedkeren siger at det er færdigt. Du kommer derud, og skabene hænger på plads, men hvidevarerne er ikke tilsluttet, der mangler håndtag, og ingen har ryddet op efter sig. Virker køkkenet? Delvist. Er det færdigt? Nej.

Digital udvikling fungerer på samme måde. En funktion der lever på udviklerens computer, men mangler test, dokumentation og idriftsættelse, er køkkenet uden tilsluttede hvidevarer. Den ser færdig ud i en demo, men bærer på usynligt restarbejde der før eller siden lander på dit bord, ofte som en uventet udgift eller en fejl i produktion. Definition of Done tvinger det arbejde frem før noget regnes som færdigt, i stedet for bagefter.

Et konkret eksempel

Lad os sige at teamet skal levere et login med MitID. Uden Definition of Done bliver det demonstreret på et møde, ser godt ud og bliver krydset af som færdigt. Tre uger senere opdager man at det kun blev testet manuelt én gang, at fejlhåndteringen er mangelfuld når MitID svarer langsomt og at ingen har dokumenteret hvordan det skal idriftsættes i produktionsmiljøet.

Med en Definition of Done på plads kan funktionen ikke krydses af før den er reviewet, har automatiske test der også dækker langsomme svar fra MitID, er dokumenteret og faktisk idriftsat. Demoen er præcis den samme, men det du får, er færdigt hele vejen og ikke kun på overfladen. Forskellen mærkes ikke den dag; den mærkes den uge hvor noget andet ændres og den gamle funktion ikke bryder sammen med det.

Koblingen til aftaler og fakturaer

Definition of Done er stærkest når den knyttes til hvad der regnes som en godkendt, og dermed fakturerbar, leverance. Hvis der betales for leverede dele, skal begge parter vide præcis hvad der skal være opfyldt før en del kan godkendes.

Uden den aftale bliver hver godkendelse en forhandling om synsninger, ofte når irritationen allerede er på vej op. Med den bliver godkendelsen et tjek op mod en liste som alle blev enige om mens stemningen var god. Det beskytter begge: Du slipper for at betale for noget halvfærdigt, og leverandøren slipper for endeløse diskussioner om hvad der egentlig indgik.

Tag derfor spørgsmålet op tidligt mens alle er på god fod, og skriv det ind i aftalen eller i arbejdsformen. At definere færdig bagefter, når en leverance allerede er omstridt, er betydeligt sværere.

Vi hos Weapp arbejder med klare kriterier for hvad der regnes som færdigt, netop for at undgå de diskussioner. Vil du have den klarhed i dit projekt? Læs om vores ydelser, eller kontakt os med en kort beskrivelse af hvad du vil bygge.

Ofte stillede spørgsmål

Hvad er Definition of Done?

Definition of Done er en aftalt liste over de kriterier der skal være opfyldt før en opgave kan regnes som færdig. Den indfanger at kode ikke er færdig bare fordi den eksisterer: Den skal være testet, reviewet, dokumenteret og idriftsat. Listen gælder ens for alle opgaver og udarbejdes i fællesskab før arbejdet begynder.

Hvorfor er det ikke nok at koden virker?

Fordi en funktion der virker på udviklerens computer, men mangler test, dokumentation eller idriftsættelse, ikke er færdig i praksis. Den kan gå i stykker ved næste ændring, ingen ved hvordan den skal vedligeholdes, og den er måske ikke engang tilgængelig for brugerne. Definition of Done indfanger alt det arbejde der ellers usynligt bliver udskudt.

Hvordan forhandler jeg Definition of Done ind i en aftale?

Tag den op før arbejdet begynder, og knyt den til hvad der regnes som en godkendt leverance. Den kan skrives ind i aftalen eller i den fælles arbejdsform. Pointen er at begge parter bliver enige om hvad færdig betyder mens alle er på god fod, ikke at forsøge at definere det bagefter når en leverance allerede er omstridt.

Hænger Definition of Done sammen med faktureringen?

Ja. Hvis betalingen er knyttet til leverede og godkendte dele, bliver Definition of Done målestokken for hvad der kan godkendes. Uden den bliver godkendelsen en forhandling om synsninger. Med den ved begge parter på forhånd præcis hvad der skal være på plads før en leverance tæller, og dermed før den kan faktureres.

Er Definition of Done forskellig fra acceptkriterier?

Ja. Definition of Done er generel og gælder ens for alle opgaver: testet, reviewet, idriftsat. Acceptkriterier er specifikke for en enkelt funktion og beskriver netop hvad den skal gøre. De supplerer hinanden: Acceptkriterierne siger hvad der skal bygges, Definition of Done siger hvilket kvalitetsniveau alt skal nå.