Dociekliwość programisty. Pytaj dlaczego.
Dzisiejszym tematem jest dociekliwość programisty. Cecha, niezależna od technologii, nakierowująca między innymi programistów, na odpowiednie tory. Pomagająca poznać prawdziwe potrzeby klienta, zdobyć wiedzę, czy ograniczyć ilość pracy potrzebnej do osiągnięcia celu. Jest nie do przecenienia w codziennej pracy i poza nią. Dlaczego pytanie „Dlaczego?” jest aż tak istotne? Właśnie na to pytanie postaram się dziś odpowiedzieć. Zapraszam.
Bo klient nie wie czego chce
Ileż to razy, podczas pisania kodu, nachodziły mnie myśli o deficycie sensu. Brak logiki stawał się na tyle znaczący, że wchodziłem na wyższe poziomy absurdu. Na początku kariery wahałem się co powinienem zrobić w takiej sytuacji. Brnąć w to dalej, czy może wstać i powiedzieć 'Dość, to jest głupie!'. Teraz już nie mam wątpliwości. Żadne z powyższych rozwiązań nie jest dobre. Ponieważ denerwowanie się nad czymś takim jest bezproduktywne i prowadzi do frustracji. Lepiej zatem wstać od komputera, wziąć herbatę, spojrzeć przez okno. Zastanowić się spokojnie nad celem klienta i zadać sobie pytanie „dlaczego jest mu to potrzebne?”. Jeżeli nie uda mi się odpowiedzieć to przynajmniej jestem pewien, że nie ma na co czekać. Idę wtedy do klienta i pytam „dlaczego tak”. Dzięki takiej rozmowie klient zmieni zdanie, bo zostanie nakierowany na lepsze rozwiązanie, albo co równie prawdopodobne, wytłumaczy mi dlaczego tak jest i wszystko nabierze sensu. W końcu to on jest specjalistą w swojej branży.
Bo można się wyrwać z impasu
Podczas rozmowy na temat projektu, jakiegoś problemu, czy biblioteki. Istnieje prawdopodobieństwo, że dojdzie do impasu. Ponieważ wiadomo, że każdy z nas ma inną wiedzę, doświadczenie i umiejętności. A my jako ludzie, często, nie znamy intencji drugiej strony. W takiej sytuacji dobrze zadane „dlaczego” pozwala na popchnięcie dyskusji do przodu. Takie pytanie działa pobudzająco na obie strony oraz pozwala na znaczne podniesienie poziomu dyskusji i zrozumienie idei drugiej osoby.
Bo można robić mniej
Jak to mniej? Nie raz spotkałem się z hura-optymizmem i mega zapaleniem do pisania kodu. Zwłaszcza, na początku kariery. Każdy pomysł jaki wpada do głowy wydaje się być najlepszym i najgenialniejszym. A skoro taki jest to szkoda czasu i należy go zrealizować czym prędzej. Podczas takiego procesu powstaje masa kodu, czasem nawet dobrej jakości, ale może być z nim jeden problem. Mianowicie często okazuje się, że jest absolutnie niepotrzebny. Zatem co jest najlepszą rzeczą jaką można zrobić, aby tego uniknąć? Należy przed napisaniem pierwszej linijki zadać sobie pytanie „dlaczego i czy ten kod trzeba pisać?”.
Bo pozwala na lepsze zrozumienie bibliotek
Cały czas używam jakąś bibliotekę, czy framework. Nic w tym dziwnego, bo przecież nie ma sensu wymyślać koła na nowo, a użycie czegoś istniejącego pozwala oszczędzić masę czasu. Ale z drugiej strony, przy pewnym skomplikowaniu projektu, pojawiają się dziwne, niewidoczne na pierwszy rzut oka, błędy. Bardzo często są one spowodowane niepoprawnym użyciem narzędzi. W takiej sytuacji, należy się zatrzymać, zastanowić. I zadać sobie pytanie „Dlaczego ta biblioteka została tak zaimplementowana?” oraz „Czy używamy jej zgodnie z przeznaczeniem?”. Bardzo często właśnie takie podejście pozwala na dogłębne poznanie obcego kawałka kodu i poprawę błędu w „poprawny” sposób.
No koniec
Zatem zadawajmy pytanie „dlaczego”. Otwiera ono masę drzwi, rozwiązuje problemy, edukuje. Dodatkowo pozwala na zwiększenie jakości kodu podczas review. Czy zgadzasz się ze mną ze należy być dociekliwym? Jeżeli tak do dlaczego? Czy udało Ci się oszczędzić masę czasu i pracy dzięki prostemu pytaniu, jeżeli tak może się pochwalisz w komentarzu? Zapraszam do dyskusji.
6 Komentarzy
Radek Maziarka · 2018-01-08 o 21:24
Bardzo fajny post :) dodam go sobie do Evernota do listy materiałów o tym dlaczego zawsze warto dociekać głębszej prawdy niż zakładać z góry najprostsze rozwiązanie.
Jerzy Wickowski · 2018-01-11 o 07:24
@Radek. Toż to miód na me uszy.
Piotr · 2018-02-02 o 10:21
Ciekawy artykul , w zasadzie jego zastosowanie ma wiecej obszarow niz tylko programowanie … pozdrowienia.
Jerzy Wickowski · 2018-02-02 o 11:33
@Piotr: Dzięki
Seoit · 2020-03-13 o 13:27
Świetny wpis! Zadawanie sobie pytania dlaczego powinno być podstawą w pracy nie tylko programisty. Nawet jak stosuje się sprawdzone rozwiązania w postaci bibliotek (bo po co wymyślać koło na nowo) to warto wiedzieć jak działają (ogólnie i dlaczego). Dodatkowo stwierdzenie: Bo klient nie wie czego chce to czysta prawda, która jest do rozwiązania poprzez briefing i pytanie dlaczego klient chce by coś w dany sposób wyglądało lub działało.
Jerzy Wickowski · 2020-03-14 o 13:16
Hej!
Dzięki wielkie za odpowiedź :)