Jeżeli po przeczytaniu tytułu tego wpisu masz mieszane uczucia, bo niby co wspólnego może mieć psychologia z programowaniem, to zanim postanowisz zrezygnować z dalszej lektury, przypomnij sobie o wzorcach projektowych, a dokładnie skąd się one wzięły. Tak, początkowo to nie był pomysł programisty, ale architekta. Okazał się on jednak nie przystawać do tej dziedziny, za to zgrabnie dał się zaadaptować do naszego podwórka.

W przypadku psychologii analogia nie jest może aż tak bezpośrednia, niemniej da się zauważyć, że znajomość niektórych aspektów psychologii, pozwala przenieść umiejętności programisty na nowy poziom.

Wyobraźmy sobie, że mamy zaimplementować jakiś proces. Doświadczeni programiści zdają sobie sprawę, że zazwyczaj opis takiego procesu nie jest w stu procentach dokładny. Niemniej – jak się za chwilę okaże – nawet ta dokładność, z którą powstał może zostać pogorszona przez programistę podczas pisania kodu. Nie będę jednak tego dowodził na przykładzie procesu pisania kodu wg specyfikacji, lecz odeślę Was do istniejącego na Wikipedii opisu efektu zgodności (kongruencji), który jest jednym ze znanych psychologii błędów poznawczych. Zapoznajcie się z nim przed dalszą lekturą tego wpisu.

Co to wnosi do naszego postrzegania procesu pisania kodu. Otóż często analizując proces, który mamy zaprogramować ulegamy właśnie takiemu efektowi zgodności i postępujemy podobnie do opisanego na Wikipedii badanego. Zafiksowani na swojej pierwotnej wizji (tj. początkowym zrozumieniu specyfikacji), tworzymy tylko takie przypadki testowe, które do niego pasują, a przypadki, które mają do niego nie pasować, stoją w dokładnej opozycji do tych pasujących (są ich negacją). Nie staramy się szukać „dziury w całym”, mamy już tak spolaryzowane postrzeganie zagadnienia, że bardzo trudno jest nam się wyrwać z tego błędnego kręgu. Dopiero kiedy aplikacja trafia na żywego użytkownika jesteśmy zaszokowani, że ktoś mógł użyć programu w taki sposób (i nazywamy go użyszkodnikiem ;)).

Zdając sobie sprawę z czegoś takiego jak błędy poznawcze z pewnością będziemy mogli uwzględnić je jako czynniki wpływające na naszą pracę. Albowiem już sama świadomość możliwości wystąpienia utrudnienia sprawi, że staniemy się bardziej otwarci i uważni.

Oczywiście nie twierdzę, że teraz wszyscy programiści powinni czym prędzej rozpocząć studia psychologii. Sugeruję jedynie, że warto czasem wyjść poza nasz programistyczny światek i popatrzeć co też robią na innych podwórkach. Może się okazać, że otworzy to nasze umysły oraz wzbogaci postrzeganie rzeczywistości. Ja błędy poznawcze odkryłem przypadkowo, bardzo się z tego przypadku cieszę i spieszę podzielić się tą wiedzą z innymi, aby oni nie musieli już liczyć na przypadek.

Na koniec jeszcze jeden ciekawy punkt widzenia uzyskany dzięki psychologii. To sentencja „nie traktuje błędu jako porażki, ciesz się z niego, bo właśnie nauczyłeś się czegoś nowego„. Czyż to nie wspaniały egzorcyzm na te diaboliczne błędy w oprogramowaniu ;).