O co chodzi z gumową kaczuszką – do czego wykorzystują ją programiści?

18.12.2019

Artykuł

Gumowa kaczka jaka jest każdy widzi. Samo jej przeznaczenie też pewnie nigdy nie budziło w Was wątpliwości, ale już zestawienie jej z pracą programisty dla większości może wydawać się dość dziwne. I słusznie, bo my programiści to dziwni ludzie. No dobra, żeby nikogo nie obrazić, jesteśmy specyficzni.

Jak pracują programiści?

Zanim zdradzę Wam do czego wykorzystujemy tę zabawkę, to dosłownie dwa zdania na temat tego jak wygląda praca programisty. W wielkim skrócie: większość dnia spędzamy na tworzeniu nowego kodu i nowych błędów lub na przeglądaniu starego kodu i naprawianiu starych błędów. Ewentualnie na próbie ulepszenia każdego kodu, który wpadnie nam w ręce i oczywiście nie jest nasz (bo, jak wiadomo, nasz już nie może być lepszy). Oczywiście, o ile pisanie nowych skomplikowanych linijek kodu przychodzi nam z wielką przyjemnością i łatwością, to już znajdowanie w nich błędów to zupełnie inna historia. I tu dochodzimy do clou sprawy.

Gdy programista przełknie już pierwszą gorycz porażki, że to jednak on się myli a nie komputer i kod niekoniecznie jest doskonały, przechodzi do żmudnego szukania winowajcy: błędnej linijki, złego warunku, literówki. Sposobów na to jest przynajmniej kilka. Użycie nieskończonej ilości funkcji print(), writeln(), console() w zależności od języka, przez break-pointy i debugger do sprawdzenia i kontrolowania przebiegu programu, aż po gumową kaczkę. Że co? Kaczkę? Ano właśnie. Nasz nieożywiony przyjaciel, który wybawi nas z opresji.

Kacza odsiecz

Jak to wygląda? Programista próbując znaleźć błąd w swoim programie, stawia obok monitora wspomnianą gumową kaczkę, oczywiście skierowaną tak, by widziała nasz piękny kod. Następnie – co ważne – na głos omawia zasadę działania programu przechodząc linijka po linijce, cały czas tłumacząc poszczególne segmenty kodu i nagle… Eureka! Mamy nasz błąd w postaci np. źle zapisanego warunku. Dziwne? A jednak prawdziwe i bardzo skuteczne.

Tak naprawdę metoda “gumowej kaczuszki” jest implementacją (a programiści lubią implementować) tzw: “myślenia na głos”, czyli udowodnionej metody rozwiązywania problemów i wszechstronnego oraz elastycznego myślenia. Mówienie do siebie – tudzież do naszej kaczki – sprawia, że bardziej skupiamy się na omawianym problemie oraz zmniejszamy ilość “szumów i zakłóceń”, które do nas docierają, rozpraszając naszą uwagę, w porównaniu do sytuacji, gdy robimy to w pamięci.

Myślisz o rozpoczęciu nauki?
Sprawdź, kurs Junior Front-End Developer.

Naukowcy z Uniwersytetu w Granadzie oraz Uniwersytetu Andyjskiego w Wenezueli przeanalizowali taki sposób rozwiązywania zadań matematycznych i wykazali, że osoby rozwiązujące zadania “po cichu” w porównaniu do tych, którzy robili to “na głos” wolniej dochodzili do rozwiązań. Dodatkowo psycholodzy z Uniwersytetu w Wisconsin opublikowali (w Quarterly Journal of Expermintal Psychology) badania, wskazujące, że głośne myślenie pobudza lewy dolny zakręt czołowy, związany właśnie z rozwiązywaniem problemów, planowaniem i skupieniem uwagi. To wszystko wystarczyło, by programiści, z natury ludzie opierający się na faktach i badaniach, zaimplementowali ten sposób działania w swój jak zwykle niekonwencjonalny i jedynie dla nich zrozumiały format.

Kaczka, nie kaczka – chodzi o zasadę

Zapytacie pewnie dlaczego akurat kaczka… nie mam pojęcia (jeśli ktoś z Was zna historię, proszę do nas napisać – do wygrania gumowa kaczka :)). Ogólnie, w całej idei nie chodzi tak naprawdę o jakiś przedmiot nieożywiony, w tym przypadku gumową kaczkę, ale może to być też nasz pies, kot lub, co chyba jednak najczęstsze, nasz kolega lub koleżanka siedzący obok. Muszę przyznać, że w czasie mojej wieloletniej pracy nie widziałem, żeby ktoś wybrał gumową zabawkę zamiast człowieka. Może to kwestia tego, że programiści są teraz bardziej otwarci na ludzi lub jest ich po prostu więcej niż w latach 70-tych, w których pojawiały się wzmianki o tej metodzie. Z drugiej też strony nie widziałem przestrzeni programistów, w której nie byłoby jakiejś “maskotki” przeznaczonej do tego typu debugowania. A jak to jest u Was?

Tak czy inaczej, jeśli macie w rodzinie programistę lub programistkę i nie wiecie co mu kupić na święta, to gumowa kaczuszka może być niezłym wyjściem.

Przeczytaj także:
UX to nie UI?

Autor:

Łukasz Falkowicz-infoshareacademy

Łukasz Falkowicz
Full-Stack Developer / CTO
Programista praktyk, zaczynał, gdy programy do komputera wgrywało się z taśmy magnetofonowej.
Aktualnie full-stack developer i CTO w startupie. Wychodzi z założenia, że nie ma rzeczy niemożliwych. Rolnik z papierami odpoczywający poza miastem.