W tym wpisie przedstawię Co 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łos i w 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ę 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.
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
- Rubber duck debugging
- Rubber Duck Debugging
- Rubber Duck Debugging – How to Solve a Problem
- What is Rubber Duck Debugging?
- Can I be Your Rubber Duck? Debugging Code With a Friend
- Extreme Programming: A gentle introduction
Też tak często robię, że sam sobie tłumaczę po kolei co robi dany kod i nagle pojawia się rozwiązanie. Nie wiedziałem tylko, że ten sposób ma nawet nazwę 😉