Ta strona wykorzystuje pliki cookie w celu prezentacji dopasowanych dla Ciebie treści. Możesz włączyć/wyłączyć obsługę plików cookies w swojej przeglądarce.

Dowiedz się więcej
Metoda gumowej kaczuszki, czyli jak poprawiać błędy w swoim kodzie

Metoda gumowej kaczuszki, czyli jak poprawiać błędy w swoim kodzie

Opublikowano  przez Marek Zoellner

Ta, z pozoru niedorzeczna metoda, znana jest już od dobrych 20 lat. Żółta kaczuszka stała się jednym z symboli programistów. Czy rzeczywiście rozmawianie z gumową zabawką może pomóc w nauce kodowania?

Termin “Rubber Duck Debugging” znany w Polsce jako “Metoda Gumowej Kaczuszki” pojawił się w 1999 roku w książce „The Pragmatic Programmer” Andrew Hunta i Davida Thomasa. Sama technika jest banalnie prosta. Chodzi o to, żeby debugować swój kod (oczyszczać z błędów, czyli “bugów”) analizując go linijka po linijce i na głos zdawać relację z tej analizy właśnie gumowej kaczce. Po co robić coś tak dziwacznego? Odpowiedź można znaleźć np. w publikacji Deloitte:

“Podczas tworzenia dowolnej aplikacji lub jej części, każdy popełnia jakieś błędy. Wykrycie i naprawienie niektórych z nich może zająć wiele godzin. Jeśli naprawa i zmiany są złożone, te godziny mogą być uzasadnione. Ale jeśli tak dużo czasu pochłania coś, co powinno zająć kilka minut, szukasz pomocy u innego programisty”.

Rzecz w tym, żeby nie szukać i nie zawracać innym głowy. Skoro problem nie jest złożony, każdy, kto myśli o pracy w branży IT, powinien sam znaleźć rozwiązanie. Albo przynajmniej spróbować :)

Błędy początkujących programistów (PDF)

Na czym polega metoda gumowej kaczki?

Przeglądając grupy dyskusyjne dla programistów nie da się ukryć faktu, że większość z nich kpi z “osławionej” metody gumowej kaczuszki. Wielu z nich traktuje to bardziej jako legendę czy nawet clickbait, niektórzy przyznają, że posiadają taką kaczkę, ale jest ona jedynie maskotką. Jeśli jednak naszą gumową kaczkę potraktujemy mniej dosłownie, jej rola zaczyna nabierać głębszego sensu. Świetnie tłumaczy to nauczyciel i programista, David B Hayes na blogu Thoughtful Code.

Gumowych kaczek używamy ze względu na ogromną różnicę między sposobem myślenia większości ludzi a sposobem działania komputerów - pisze autor bloga. Gdy kodując natykasz się na jakąś przeszkodę, najprawdopodobniej nie myślisz w taki sposób, w jaki robią to komputery. Precyzyjność maszyn bywa dokuczliwa, a ludzie są bardziej wyrozumiali.

Gumowatość i kaczkowatość nie mają tutaj żadnego znaczenia. Ważniejsze, że to nie jesteś Ty, że tłumaczysz swój tryb postępowania komuś lub czemuś. To może być pies, kot, a nawet konik polny czy krzesło biurowe. To może być też współpracownik, którego David B Hayes celowo wymienił na końcu, bo zanim zaczniemy zawracać głowę komuś, kto ma własne obowiązki, warto najpierw skorzystać z mniej absorbujących sposobów.

Oto prosty “przepis na kaczkę” według Davida:

  1. Opisz swój (uszkodzony) kod i wyjaśnij, jakie ma pełnić zadania
  2. Linijka po linijce przeanalizuj wszystkie funkcje i metody z uwzględnieniem elementów, które nie działają prawidłowo
  3. Nie pomijaj żadnych szczegółów, kaczki uwielbiają szczegóły
  4. Znajdź (głupie i oczywiste) rozwiązanie! Kiedy tłumaczysz kaczuszce, co każda linijka Twojego niedziałającego kodu powinna robić, zwykle doznajesz olśnienia. Masz literówkę w kodzie. Albo używasz nie tej zmiennej co trzeba. Albo Twoja instrukcja warunkowa działa odwrotnie, niż Ci się wydawało. Prędzej czy później problem wyjdzie na jaw.

Wolisz rozmawiać z żywymi ludźmi? Ucz się z Mentorem!

- To wcale nie musi być gumowa kaczuszka. To tylko zabawna metafora. Można z nią rozmawiać, a raczej mówić do niej, ale to może być równie dobrze pluszowy miś, albo zabawkowy Luke Skywalker. Chodzi o efekt, czyli samodzielne odnajdywanie rozwiązań - przyznaje Mateusz, początkujący front-end developer, który kilka miesięcy temu dołączył do naszej grupy “Wyzwanie - Zacznij kodować z Kodillą” na Facebooku.

Jeśli jednak ktoś oczekuje pomocy od prawdziwego mistrza Jedi, wtedy zwykle szuka oparcia w doświadczonym koledze.

Uczyć się chcesz programowania? Za głosem mistrza Yody podążaj

- Siada przy mnie, a ja tłumaczę mu na głos, co zrobiłem i co nie działa. On się nie odzywa, tylko się uśmiecha i słucha, a w efekcie bardzo często poprzez taki monolog sam znajduję przyczynę. Podobnie robię w domu, gdy koduję sam, tylko wtedy przeważnie prowadzę taki wewnętrzny monolog w myślach - dodaje Mateusz.

Darmowy test predyspozycji

A my dodajmy, że bardzo podobnie wygląda nauka na bootcampach Kodilli. Nasi eksperci są do Waszej dyspozycji. Każdy Kursant ma przypisanego dedykowanego Mentora 1-1, ale… to nie Mentor rozwiązuje zadania, bo jego rolą jest tylko wskazanie właściwego kierunku. Tylko i aż :) Samodzielne rozwiązywanie problemów to jedyny sposób, by zostać dobrym programistą i zrobić karierę w IT.

Poznaj Mentorów Kodilli >>>

Jako ciekawostkę dodajmy, że innym sposobem na osiąganie coraz wyższych poziomów w programowaniu jest “kod kata”. Termin ten pojawił się po raz pierwszy w przywoływanej na wstępie książce „The Pragmatic Programmer” i nawiązuje do kata, czyli układów występujących w tradycyjnych sztukach walki (w karate, aby perfekcyjnie opanować jeden układ, należy go wykonywać od 3 do 10 tysięcy razy). I tak jak np. w Kyokushin wykonywana jest określona sekwencja ruchów (uderzeń, kopnięć czy bloków), aby “weszła w krew”, tak i w programowaniu młodzi adepci powinni stale dążyć do doskonałości kodując i podnosząc się po każdym upadku, znajdując rozwiązania problemów. O tej metodzie w praktyce opowiadają Kobiety do kodu. Strach się bać! :)

A metoda gumowej kaczuszki? Sprawdźcie sami, czy się Wam do czegoś przydaje.

U nas działa :)

metoda gumowej kaczuszki
Umów się na rozmowę z doradcą Kodilli