Duck debugging - okładka

O metodzie Duck Debugging

W tym wpisie chciałbym przedstawić popularną metodę debugowania – Duck Debugging, czyli metodę debugowania gumowej kaczki. Metoda ta wielokrotnie pomogła mi rozwiązać skomplikowane problemy oraz znajdować błędy w istniejącym już kodzie.

Metoda gumowej kaczki – Duck Debugging

Nazwa metody gumowej kaczki, jak nietrudno się domyślić, pochodzi od gumowej kaczki. Tej samej gumowej kaczki, która jest kojarzona z kąpielami.

Metoda debugowania z użyciem gumowej kaczki, polega na tym, że tłumaczymy gumowej kaczce jak działa nasz kod i co się w nim dzieje. Istotne jest to, aby robić to linia po linii, robić to na głosw sposób jak najbardziej zrozumiały dla kaczki. Niejednokrotnie podczas tłumaczenia naszego kodu kaczce zdarzy się tak, że pomyślisz: “A może by tak…”, “Chwila, to nie ma żadnego sensu…” lub “Dobra, widzę błąd!”. Na tym polega magia tej metody!

Mimo, że na pierwszy rzut oka ta metoda wydaje się być wręcz niedorzeczna, to i tak zachęcam do wypróbowania. Sam z niej korzystam bardzo często i wielokrotnie już pomogła mi w debugowaniu pozornie trudnego i wymagającego kodu.

Może Ci się nasuwać pytanie, czy gumowa kaczka jest konieczna w tej metodzie? Na szczęście nie jest. Równie dobrze możesz wykorzystać dowolny inny przedmiot, lub nawet możesz mówić sam/a do siebie. Gumowa kaczka jest dość łatwa do ożywienia/personifikacji, dlatego też została ona użyta w tej metodzie.

Gumowe kaczki na drewnianym tle

Modyfikacje metody gumowej kaczki

Ulepszeniem metody gumowej kaczki jest skorzystanie z pomocy innego członka zespołu i wykorzystanie go jako “kaczki”. Wykorzystanie “żywej kaczki” jest o tyle skuteczniejsze, że “kaczka” może wchodzić z nami w interakcję. Na przykład, na etapie walidacji pomysłu “kaczka” może nas dopytać: “A co w przypadku gdy…?”, “W jaki sposób został obsłużony przypadek, w którym…?”, lub też może powiedzieć “Według mnie ten pomysł nie ma sensu, ponieważ…”. W tym wypadku możemy wręcz mówić już o pewnej formie pair programmingu – metody pracy wywodzącej się z programowania ekstremalnego (eXtreme Programming – XP). Pair programming zakłada, że co dwie głowy to nie jedna, a opisana przeze mnie modyfikacja metody gumowej kaczki wykorzystuje tę właściwość.

A co w przypadku, gdy pracujemy zdalnie? W dalszym ciągu możemy wykorzystać członka zespołu jako gumową kaczkę, czasami nawet bez jego wiedzy! Pierwotna metoda gumowej kaczki zakłada mówienie na głos, lecz czasami do rozwiązania problemu wystarczy słowo pisane. Jeżeli szczegółowo rozpiszesz swój problem tak, aby słowem pisanym wyjaśnić go drugiej osobie, niejednokrotnie po przeczytaniu tego co napisałeś/aś, sam/a dojdziesz do pewnych wniosków. Ostatecznie, może się okazać, że nawet nie musisz klikać “wyślij”, bo twój problem właśnie się rozwiązał! Ostatecznie można odbyć wideorozmowę, co również zdaje egzamin.

Podsumowanie

Mam nadzieję, że metoda gumowej kaczki okaże się dla Ciebie równie przydatna jak okazała się dla mnie. Jestem ciekaw czy korzystałeś/aś już z metody gumowej kaczki, a jeśli tak to jakie dała efekty. Podziel się ze mną i innymi czytelnikami swoimi odczuciami w komentarzu. Jak zawsze zachęcam do zapoznania się ze źródłami i materiałami dodatkowymi.

Źródła i materiały dodatkowe