Kolejny tydzień i kolejny post! Dzisiaj rozpoczynamy serię, której temat od dawna nosiłam gdzieś z tyłu głowy i bardzo chciałam na blogu poruszyć. Zajmiemy się grzechami programistów, czyli tym co przeszkadza nam osiągać sukcesy w naszej pracy. Czasami zdajemy sobie z nich sprawę, lecz częściej ich nie zauważamy. A w ten sposób nie jesteśmy w stanie ich unikać. To skutkuje gorszym kodem, gorszą pracą w zespole czy niedostarczaniem tego, czego oczekują od nas współpracownicy. W ten sposób stajemy się również obciążeniem dla innych - a tego nie chcemy!

Dlatego postanowiłam napisać o cechach/nawykach/zachowaniach, które ja uważam za główne problemy programistów. Mam nadzieję, że ta seria pomoże Wam zrobić swój rachunek sumienia i naprawić to co nie działa. (Podsunięcie tych artykułów kolegom, którzy mogą mieć z tym problem jest również wskazane!)

A zaczniemy dziś od PRZYWIĄZANIA.

Nie spodziewaliście się, co? Być może myśleliście, że porozmawiamy o uporze lub braku rozwoju technicznego czy przerośniętym ego? Tymi tematami również się zajmiemy, ale nie dziś. Chciałabym zacząć od pokazania Wam jakiego typu problemy w pracy programisty powodują różne rodzaje przywiązania.

Ja === mój kod

Czyli sytuacja, w której programista przywiązuje się emocjonalnie do kodu, który tworzy. Takiego “przywiązanego programistę” jesteśmy w stanie rozpoznać po kilku zachowaniach. Ja najczęściej zauważam tego typu problemy, przy okazji obserwacji danej osoby i jej reakcji na negatywną ocenę jej rozwiązania. Znam developerów, którzy na krytykę ich pomysłu lub zwrócenie uwagi na luki w rozumowaniu reagują wdzięcznością, próbą wymyślenia czegoś jeszcze lepszego i kompletnego. Istnieje jednak drugi typ developerów, o którym w tym poście mówimy, którzy w tej samej sytuacji potrafią zareagować atakiem na osobę zwracającą uwagę lub bronią swojego zdyskredytowanego rozwiązania do upadłego. Jaka jest między nimi różnica i o czym to świadczy?

Dla mnie jest to jedna z cech, która odróżnia profesjonalnych i dojrzałych developerów od reszty. Umiejętność oddzielenia w swojej świadomości siebie jako osoby, od swojej twórczości, to bardzo przydatna cecha. Jeśli krytykę kodu, który stworzyłeś przyjmujesz jako atak na twoją osobę i bierzesz ją do siebie to jest to pierwszy krok do porażki. Może skutkować to blokadą w Twoim rozwoju (inni coraz mniej chętniej będą zwracać Tobie uwagę na niedociągnięcia bo swoim zachowaniem skutecznie ich zniechęcasz). Dodatkowo, zazwyczaj jesteś kulą u nogi dla zespołu, ponieważ inni muszą jakoś radzić sobie z twoim ego i jego wpływem na pracę.

Dużo łatwiej będzie nam pracować jako programista gdy do naszej miłości do kodowania dodamy również poważną dawkę zdystansowania do tego co tworzymy.

Emocjonalny stosunek do kodu może się manifestować również w inny sposób. Spotkałam się kiedyś z sytuacją, w której z powodów biznesowych w projekcie postanowiono wycofać się z pewnego rozwiązania. Jednak developer, który je stworzył, był z niego tak dumny i tak dużo wysiłku w nie włożył, że nie chciał się z nim rozstać. Dużo łatwiej pracować jako developer jeśli do naszej miłości do kodowania dodamy również poważną dawkę zdystansowania do tego co tworzymy. W końcu to nasza praca, inni płacą nam za tworzenie tego kodu, a potem mają święte prawo zrobić z nim co chcą :)

Przywiązanie do statusu quo

Drugim typem zachowania, który obserwuje u developerów jest przywiązanie do pewnego schematu postępowania. Nie jest zaskakujące to, że programiści często powtarzają pewne wyrobione schematy. Ba! Zachowują się tak nie tylko developerzy, ale ludzie w ogóle (programista też człowiek, no co). Tak nas stworzyła natura, że posiadamy różne nawyki. Mądra była, bo bez “działania na autopilocie” pewnie byśmy szybko powariowali z nadmiaru opcji wyboru i informacji dookoła nas. Nie dziwne jest więc, że programiści (i ludzie), w pierwszej kolejności zwracają się w stronę znanego i przetestowanego schematu postępowania.

Problem pojawia się, gdy do naszego nawyku się PRZYWIĄZUJEMY :)

Wyobraźmy sobie, że do naszego zespołu dołącza dzisiaj Krysia. Krysia pracowała wcześniej w podobnym do naszego software house’ie. Na jednym z jej pierwszych spotkań projektowych zauważa ona, że w naszym zespole nie są pisane testy frontendowe ;) i sugeruje, że powinniśmy to robić. Po przedłużającej się chwili ciszy jeden z programistów duka: “A.. al.. ale do tej pory tego nigdy nie robiliśmy!”.
Kryśka (przygotowana oczywiście na taką odpowiedź) szybko wypala, że możemy spróbować to zmienić. Pyta managera o jego zdanie na ten temat, a ten daje okejkę. Wyjaśnia klientowi potrzebę posiadania testów i opisuje korzyści. Tworzy plan implementacji. Po 2 tygodniach wszystko jest gotowe.

Nic tylko pisać!

I co? Okazuje się, że największą przeszkodą w implementacji są developerzy. Nie klient, nie manager, tylko PRZYWIĄZANIE programistów do pewnego sposobu postępowania, w którym nie było miejsca na testy. Przywiązanie do pewnego statusu quo, którego lepiej nie ruszać.

Możemy się teraz zastanowić z czego ono wynika. Lenistwo? Strach przed porażką? Brak ambicji? Czy po prostu nawyk, który trudno zmienić?
Wydaje mi się, że każda sytuacja jest inna. A status quo burzy się trudno, nawet gdy wszyscy rozumieją twoje motywacje i argumenty za.
Sposobem, który ja wykorzystuje, by niwelować wpływ zachowań wyuczonych na moje decyzje jest analizowanie sytuacji, w których nowości powodują strach. Następnym razem, gdy ktoś zaproponuje Tobie coś nowego, a w twojej głowie pojawia się myśl - “Red alert! Niebezpieczeństwo!”, zastanów się czy twoja reakcja nie jest spowodowane obawą przed zmianą.

Ale ja zawsze używałem technologii X

No i przyszedł czas na koronną konkurencję w kwestii przywiązania programistów, czyli: technologię. Jeśli twój wybór technologii do kolejnego projektu polega na dokładnym i bezmyślnym skopiowaniu tego, co używałeś ostatnio, to robisz to źle. I tyle. Każdy projekt jest inny i powinniśmy traktować go indywidualnie, a nasze przywiązanie do konkretnej technologii nie powinno nam przysłaniać obiektywnych argumentów przy tej decyzji.

Grzech główny numer 1 w postaci przywiązania już za nami. Jestem bardzo ciekawa, czy padliście kiedyś jego ofiarą? A może zauważacie je u siebie? Ja muszę się przyznać, że zdarza mi się bać się zmian i pokonywania statusu quo.

A Wy? Koniecznie napiszcie, co o tym myślicie :)