Hva betyr ferdig? Definition of Done i praksis

Av Weapp · Oppdatert

Definition of Done er en felles, skriftlig liste over hva som kreves for at noe skal regnes som ferdig: ikke bare at koden finnes, men at den er testet, dokumentert og produksjonssatt. For deg som kunde er den et vern mot halvferdige leveranser fordi den knytter ordet ferdig til konkrete kriterier alle har blitt enige om på forhånd.

«Er det ferdig?» «Ja, det er ferdig.» To uker senere viser det seg at funksjonen aldri ble ordentlig testet, mangler dokumentasjon og ikke engang er satt i produksjon for brukerne. Ordet ferdig er prosjektverdenens mest misbrukte ord, for det betyr forskjellige ting for forskjellige personer. Løsningen er en felles Definition of Done: en skriftlig avtale om hva som faktisk kreves før noe kan kalles ferdig.

Hva en Definition of Done inneholder

En Definition of Done er en liste med kriterier som gjelder likt for alt som bygges. Den fanger opp den ubehagelige sannheten at kode ikke er ferdig bare fordi den finnes og ser ut til å fungere. Rundt selve byggingen ligger det en rekke oppgaver som ellers i det stille blir utsatt.

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

  • Funksjonen oppfyller akseptansekriteriene sine. Den gjør det den skulle gjøre.
  • Koden er gjennomgått. Minst én annen utvikler har lest og godkjent den.
  • Tester finnes og består. Funksjonen er testet, og testene kjøres automatisk.
  • Dokumentasjonen er oppdatert. Neste person forstår hvordan det henger sammen.
  • Produksjonssatt i riktig miljø. Koden ligger der den skal, ikke bare på maskinen til en utvikler.
  • Ingen kjente alvorlige feil gjenstår. Det som leveres, er faktisk brukbart.

Listen trenger ikke å være lang, men den skal være felles og skriftlig. Poenget er at alle (utviklere, testere og du som kunde) mener det samme når ordet ferdig brukes.

Hvorfor «koden fungerer» ikke er nok

Tenk deg at du bestiller et nytt kjøkken. Snekkeren sier at det er ferdig. Du kommer dit, og skapene henger på plass, men hvitevarene er ikke koblet til, håndtakene mangler, og ingen har ryddet etter seg. Fungerer kjøkkenet? Delvis. Er det ferdig? Nei.

Digital utvikling fungerer på samme måte. En funksjon som lever på utviklerens maskin, men mangler tester, dokumentasjon og produksjonssetting, er kjøkkenet uten tilkoblede hvitevarer. Den ser ferdig ut i en demo, men bærer på usynlig restarbeid som før eller siden havner i fanget ditt, ofte som en uventet kostnad eller en feil i produksjon. Definition of Done tvinger frem det arbeidet før noe regnes som ferdig, i stedet for etterpå.

Et konkret eksempel

Si at teamet skal levere innlogging med BankID. Uten Definition of Done blir den demonstrert i et møte, ser bra ut og krysses av som ferdig. Tre uker senere oppdager man at den bare ble testet manuelt én gang, at feilhåndteringen er mangelfull når BankID svarer tregt, og at ingen har dokumentert hvordan den skal settes i produksjon.

Med en Definition of Done på plass kan funksjonen ikke krysses av før den er gjennomgått, har automatiske tester som også dekker trege svar fra BankID, er dokumentert og faktisk produksjonssatt. Demoen ser helt lik ut, men det du får, er ferdig hele veien, ikke bare på overflaten. Forskjellen merkes ikke den dagen; den merkes den uken noe annet endres og den gamle funksjonen ikke ryker med.

Koblingen til avtaler og fakturaer

Definition of Done er mest effektiv når den knyttes til hva som regnes som en godkjent, og dermed fakturerbar, leveranse. Hvis betalingen skjer mot leverte deler, må begge parter vite nøyaktig hva som skal være oppfylt før en del kan godkjennes.

Uten den avtalen blir hver godkjenning en forhandling basert på synsing, ofte når irritasjonen allerede er på vei opp. Med den blir godkjenningen en sjekk mot en liste alle ble enige om mens stemningen var god. Det beskytter begge: Du slipper å betale for noe halvferdig, og leverandøren slipper endeløse diskusjoner om hva som egentlig var inkludert.

Ta derfor opp spørsmålet tidlig, mens forholdet er godt, og skriv det inn i avtalen eller i arbeidsformen. Å definere ferdig i etterkant, når en leveranse allerede er omstridt, er betydelig vanskeligere.

Vi i Weapp jobber med tydelige kriterier for hva som regnes som ferdig, nettopp for å unngå de diskusjonene. Vil du ha den tydeligheten i prosjektet ditt? Les om tjenestene våre eller ta kontakt med en kort beskrivelse av hva du vil bygge.

Ofte stilte spørsmål

Hva er Definition of Done?

Definition of Done er en omforent liste over kriteriene som må være oppfylt for at en oppgave skal regnes som ferdig. Den fanger opp at kode ikke er ferdig bare fordi den eksisterer. Den skal være testet, gjennomgått, dokumentert og produksjonssatt. Listen gjelder likt for alle oppgaver og utarbeides i fellesskap før arbeidet begynner.

Hvorfor holder det ikke at koden fungerer?

Fordi en funksjon som fungerer på utviklerens maskin, men mangler tester, dokumentasjon eller produksjonssetting, ikke er ferdig i praksis. Den kan gå i stykker ved neste endring, ingen vet hvordan den skal forvaltes, og den er kanskje ikke engang tilgjengelig for brukerne. Definition of Done fanger opp alt det arbeidet som ellers i det stille blir utsatt.

Hvordan forhandler jeg inn Definition of Done i en avtale?

Ta den opp før arbeidet begynner, og knytt den til hva som regnes som en godkjent leveranse. Den kan skrives inn i avtalen eller i arbeidsformen dere blir enige om. Poenget er at begge parter blir enige om hva ferdig betyr mens forholdet er godt, ikke å prøve å definere det i etterkant når en leveranse allerede er omstridt.

Henger Definition of Done sammen med faktureringen?

Ja. Hvis betalingen er knyttet til leverte og godkjente deler, blir Definition of Done målestokken for hva som kan godkjennes. Uten den blir godkjenningen en forhandling basert på synsing. Med den vet begge parter på forhånd nøyaktig hva som skal være på plass før en leveranse teller, og dermed før den kan faktureres.

Er Definition of Done noe annet enn akseptansekriterier?

Ja. Definition of Done er generell og gjelder alle oppgaver likt: testet, gjennomgått, produksjonssatt. Akseptansekriterier er spesifikke for én enkelt funksjon og beskriver nettopp hva den skal gjøre. De utfyller hverandre: Akseptansekriteriene sier hva som skal bygges, og Definition of Done sier hvilket kvalitetsnivå alt må nå.