Felsökning med hjälp av en badanka?

Ärligt talat, jag hade aldrig hört talas om uttrycket “rubber duck debugging” innan jag läste det här inlägget på bloggen Coding Horror för några veckor sedan. Och jag måste säga att jag är ganska frälst i konceptet!

index

Bildkälla

Så vad är då “rubber duck debugging”?

Idén kommer från boken The pragmatic programmer, och grundtanken är att när du har problem med din kod, så räcker det inte med att sitta och stirra på skärmen och tänka på problemet; det måste formuleras högt. Processen med ankan brukar beskrivas ungefär såhär:

  1. Köp, sno eller låna en badanka och placera ankan bredvid din skärm.
  2. Berätta för ankan om grundproblemet du försöker lösa och vad du vill uppnå.
  3. Gå sedan igenom din kod och berätta för ankan hur du försökt lösa problemet, och förklara rad för rad vad koden gör.
  4. Inse något av följande:
    1. Du hittar felet i koden, eller
    2. Felet ligger inte alls där du trodde, eller
    3. Din kod försöker inte alls lösa det problem du tänkt att den ska göra
  5. Tacka ankan för hjälpen och ändra koden.

Jag tycker det här är en klockren idé, och efter jag hörde talas om metoden har jag tänkt tillbaks på tillfällen då jag skulle ha behövt en badanka till hjälp!

Bildkälla

Jag tyckte det här fenomenet är extremt tydligt under skoltiden: när vi hade handledning räckte det ibland med att förklara för handledaren vad jag behövde hjälp med, för att komma på lösningen själv. Andra gånger var situationen omvänd: jag var handledare och satt bredvid en uppgiven student som suckar: “Ingenting funkar! Jag blir tokig!”. Nej, då blir det inte lätt för mig att hjälpa dig. Förklara istället för mig vad du försöker göra och exakt vad som inte fungerar.

keep-calm-and-start-debugging-8

Det har även hänt mig nu när jag jobbar, och jag minns för några veckor sedan när jag behövde hjälp att förstå en grej, så jag ringde till en person som hade koll på detta, men under samtalet fick jag motfrågan: “vad är det exakt du vill veta?”. Och jag insåg att fasen, jag visste inte riktigt vad jag ville veta! I mitt huvud trodde jag att jag hade formulerat mig klart och tydligt, men egentligen var själva grunden för frågan otydlig för mig. Då hade jag behövt en anka att prata med först!

Tanken slog mig igen igår: jag skulle skicka ut en fil till en mapp genom en integration, och det hände absolut ingenting. En superenkel grej, men ändå funkade den inte. Jag stirrade på skärmen och försökte på flera olika sätt, tänkte att vafasen, det här ska inte vara svårt! Till slut ringde jag en kollega och bad om hjälp, och när jag försökte förklara problemet för honom så förstod inte han heller vad problemet var. Han gav lite tips att testa, men när jag lade på luren så slog det uppenbara mig: felet ligger inte i den här enkla grejen. Det är något som går fel innan, vilket gör att exekveringen aldrig når den här punkten och försöker skicka ut filen – det finns ingen fil att skicka ut.

Nu ska jag forska i en incident som precis kom in, därefter drar vi till Stockholm för sommarfest med hela bolaget. Önskar er alla en trevlig fredag!

Leave a Reply

Your email address will not be published. Required fields are marked *