torsdag 19 mars 2009

Rubber Duck Debugging

Känner ni igen situationen där man suttit och svurit och pysslat och googlat sig fördärvad över något fullkommligt oförståeligt fel, bara för att komma på lösningen i samma stund som man förklarar problemet för en kollega? Jag vet inte hur många lösningar jag bidragit till genom att bara ställa mig snett bakom någon och titta på deras skärm medan de skamset inser vart misstaget ligger. Och nog har jag själv varit där många gånger med, med problem som bara inte går att lösa ända tills någon, som man bara vet kommer vara dryg om det hela, kommer in i rummet och undrar vad det var man ville.

Själva processen att förklara problemet för någon annan verkar göra att neuroner som tidigare sprungit runt i cirklar helt plötsligt tvingas ställa sig i raka led och reda ut vad tusan det är de pysslar med egentligen. Metoden kallas Rubber Duck method of debugging och beskrivs fantastiskt av min vän JC samt av följande citat

1) Beg, borrow, steal, buy, fabricate or otherwise obtain a rubber duck
(bathtub variety)
2) Place rubber duck on desk and inform it you are just going to go over
some code with it, if that's all right.
3) Explain to the duck what you code is supposed to do, and then go into
detail and explain things line by line
4) At some point you will tell the duck what you are doing next and then
realise that that is not in fact what you are actually doing. The duck
will sit there serenely, happy in the knowledge that it has helped you
on your way.

Works every time. Actually, if you don't have a rubber duck you could at
a pinch ask a fellow programmer or engineer to sit in.


Så nu har ni äntligen ett svar på varför man kommer på vad man gjorde för fel precis lagom för att ge den man bett om hjälp största möjliga tillfredsställelse i att känna sig överlägsen. Och om ni undrar varför den här posten är lite förvirrad, så beror det på att jag varit ute och druckit vin med ett medelålders biologpar, en borgmästare och en biskop. Bland andra. Jag kommer säket inse mitt misstag i skrivandet imorgon, när jag förklarar det för en gummi-anka.

Inga kommentarer: