Metoda gumowej kaczki…

Gdyby zadać proste pytanie programiście: „Kto jest Twoim najlepszym przyjacielem?” to pewnie w 99% przypadkach usłyszelibyśmy odpowiedź: „kaczka”. Ktoś mało wtajemniczony pewnie sobie pomyśli, że to jakiś żart albo zacznie się zastanawiać o co właściwie chodzi z tą „kaczką”? Ale jaką kaczką?

– Hej, gdzie jest moja kaczka?
– Co proszę?
– No, gdzie zgineła moja gumowa kaczka, ta do której czasami mówię?
– …

Młodzi adepci programowania czują się pewnie teraz nieco zdezorientowani, jak można rozmawiać z jakąś gumową kaczką? Ale wbrew pozorom ma to spory sens. Wszystko oczywiście wiąże się z błędami w kodzie, które jak wiemy potrafią zepsuć humor nie jednej osobie.  Czym by jednak było programowanie, gdyby wszystko szło gładko jak po maśle? Zero zabawy. Wracając jednak do tematu – jak wiemy błędy są nie uniknione i jednym z elementów pracy programisty jest ich usuwanie. Pewnie każdy z was zetknął się w swoim życiu z terminem „debugowanie”, każdemu z was pewnie to słowo kojarzy się z czymś innym, na przykład z debugerem w IDE. Należy jednak pamiętać, że istnieje wiele naprawdę skutecznych (i dla niektórych dziwnych) metod debugowania. Jedną z nich jest właśnie metoda gumowej kaczki. O co tutaj chodzi?

Mianowicie załóżmy, że pracujemy nad jakimś projektem programistycznym, na potrzeby naszych dywagacji nie ma znaczenia nad jakim i w jakiej technologii ważne, żeby w naszych założeniach uwzględnić iż znaleźliśmy się w punkcie bez wyjścia – tzn. natrafiliśmy na błąd, którego nie możemy rozwiązać. Nasza aplikacja zwraca niepoprawne wyniki bądź w ogóle źle działa. Wstawiliśmy już milion break-pointów i dalej nic, jak nie było widać błędu tak dalej go nie widać. Pora więc przejść do bardziej wyrafinowanych metod debugowania kodu.

Pisząc bardziej wyrafinowane metody debuowania kodu mam tutaj na myśli metodę gumowej kaczki. Zaczynamy oczywiście od wizyty w sklepie bądź podkradnięcia komuś z domowników najzwyklejszej gumowej kaczki na przykład takiej jak ta na poniższym zdjęciu:

Fot: HolgersFotografie, CC0 Public Domain.

Fot: HolgersFotografie, CC0 Public Domain.

Kolejnym krokiem jest ustawienie jej gdzieś obok komputera – w dowolnym miejscu, ale tak żeby była w zasięgu wzroku, możemy to zrobić na przykład tak:

Fot: Tom Morris, CC BY-SA 3.0.

Fot: Tom Morris, CC BY-SA 3.0.

Dalej rozpoczyna się cała „magia”. Wracamy do początku kodu i krok po kroku tłumaczymy kaczce każdą linijkę, każdy znak, omawiając jak działa dany program. W pewnym momencie natrafimy na błąd, którego nie mogliśmy znaleźć wcześniej.

Możecie się teraz śmiać, ale doświadczeni programiści bardzo często korzystają z tej metody debugowania kodu i co najważniejsze z dobrymi rezultatami. Co więcej problem tym zajęli się całkiem poważni naukowcy, którzy od lat stosują metodę „myślenia na głos” w rozwiązywaniu matematycznych problemów. To właśnie cała idea związana z gumową kaczką wzięła się od metody „myślenia na głos” zaczerpniętej od matematyków. Kto nigdy w ten sposób nie debugował kodu ma teraz szanse coś z tym zrobić. Powodzenia!

PS: Żeby nie było, że ściemniam, metoda gumowej kaczki doczekała się wpisu w Wikipedii.

, , , , , ,

  • FuruArt

    Aż mi się zrobiło ciepło na duszy, że nie tylko ja mam kaczuszkę jako gumowego przyjaciela :) Nawet podobny wpis na swoim blogu nie dawno napisałem, a kaczuszka potrafi poprawiać błędy? DuckLinter i tym podobne? :) Pozdrawiam, bardzo fajny artykuł. Zapraszam do mnie na artykuł o innych ciekawych Antystresach: http://furuart.pl, oczywiście jeśli mogę. Jeśli nie, proszę usunąć komentarz :)