Menu Zamknij

Pułapki psychologiczne u programistów

6 stycznia 2022

Pułapki psychologiczne u programistów

Spis treści

Podziel się wpisem ze znajomymi!

Pułapki psychologiczne u programistów

Programista to obecnie jeden z najbardziej pożądanych zawodów świata współczesnego. Wysokie pensje, praca zdalna, liczne benefity i dofinansowania... Brzmi pięknie, prawda? Niestety drugą stroną medalu jest fakt związany z tym, iż programiści muszą się nieustannie rozwijać, poszerzać swoje horyzonty i kompetencje oraz być niemal cały czas skoncentrowani w pracy, realizując co rusz nowe założenia i wymagania projektowe.

Oczywiście, jak przy wielu innych zawodach, narażeni są oni na wiele dolegliwości fizycznych, jak m.in łokieć tenisisty, schorzenia kręgosłupa, problemy ze wzrokiem. Jednak według mnie równie dużym problemem są zaburzenia psychiczne u wspomnianej części społeczeństwa. Ciągły stres, dążenie do perfekcjonizmu, robienie nadgodzin to zaledwie kilka czynników wpływających na pojawienie się u osoby, tzw. syndromów programisty.

Jako jednostka szkoleniowa staramy się dbać o dobre samopoczucie i zdrowie psychiczne naszych kursantów, dlatego poniżej skupię się nad omówieniem bardziej jak i mniej znanych dolegliwości - syndromów - u programistów.

Pełne zrozumienie, z czego one wynikają i jak im przeciwdziałać, pomoże Ci jeszcze szybciej wznieść się na wyżyny programistyczne, pozwoli Ci skuteczniej pozyskiwać nowe umiejętności programistyczne, przy równoczesnym niezaniedbywaniu innych aspektów życia niezawodowego.

Syndrom "prawdziwego programisty"

Syndrom ten pojawia się najczęściej wtedy, gdy wydaje nam się, że nasze umiejętności koderskie są o wiele mniejsze od tych, które posiadają inni programiści, czy członkowie naszego zespołu. Myślimy wówczas, że musimy poświęcić stanowczo więcej czasu na rozwój i drastycznie zwiększyć ilość czasu poświęcaną na pisanie kodu. W rezultacie - robimy nadgodziny, spędzamy dużo czasu po pracy na doszukiwaniu różnych informacji. Oczywiście nie w tym nic złego i tylko w ten sposób możemy szlifować swój fach, jednak takie postępowanie może łatwo przeoblec się w obsesję.
Wówczas spędzamy o wiele więcej czasu nad dopięciem najprostszych zadań i tasków, przez co nasza efektywność pracy spada (przez nieustanne doszukiwanie informacji, z którymi możemy być potencjalnie niezaznajomieni). Dodatkowo, programista borykający się z opisywanym syndromem, może nagle zacząć uważać, że niedopuszczalne jest, aby popełniał jakiekolwiek błędy w kodzie. Wówczas zaczyna on stosować najbardziej prymitywne edytory kodu (tłumacząc, że wtedy "ma pełną kontrolę nad kodem" i musi się uczyć na własnych błędach), przestaje używać narzędzi do debugowania, czy statycznej analizy kodu. Jest również ugruntowany w przekonaniu, że dokumentacja projektu jest zbędna, a "prawdziwy programista" powinien poznawać funkcjonalność programu przez czytanie kodu innych developerów. Chyba nie muszę Ci tłumaczyć, jak bardzo mylne są to założenia i jak takie podejście programisty może niszczyć jego rozwój.

Syndrom nadgodzinowego programisty

Powiedzmy sobie wprost - nadgodziny mają negatywny wpływ na jakość naszej pracy. Praca w nadgodzinach i towarzyszącym im stresie prowadzi do szeregu dolegliwości obniżających komfort pracy i życia. Efektywność pracy spada, pojawiają się trudności z koncentracją oraz podenerwowanie czy nieuwaga. Mimo tak wielu negatywnych skutków, u programistów wciąż pojawia się syndrom pracoholizmu, czyli po prostu nieustannego pracowania. Wszelkie crunch projekty, terminy "na wczoraj", konieczność jak najszybszego naprawienia bugu na produkcji tylko zmuszają nas, developerów, do podejmowania tak mało higienicznej pracy.

Omawiany syndrom pojawia się wtedy, gdy tak uciążliwy system pracy nam odpowiada i nie widzimy w nim żadnych problemów. Wychodzimy wówczas z założenia, że szybciej skończymy pracę, czy "dowieziemy rozwiązanie i będziemy mieli spokój". Pytanie jednak, jakie powinniśmy sobie wówczas postawić wraz z teamem developerów, to czy stawiamy na jakość, czy na ilość. Oczywiste jest, że chcąc tworzyć skuteczne i efektywnie działające oprogramowanie, powinniśmy skupić się przede wszystkim na quality of work. To, jak podejdziemy do napisania kodu może mieć znaczące konsekwencje w przyszłości. Co z tego, że dostarczymy mało zoptymalizowane i niedopracowane rozwiązanie, jeżeli za jakiś czas wszystko to obróci się przeciw nam, a bugi będą pojawiały się jak kule wystrzeliwane przez karabin maszynowy.

Aby nie być gołosłownym, Stanford University przeprowadziło swojego czasu badania, jak bardzo różni się kod napisany przez programistów pracujących 40 h tygodniowo do tego, który powstał podczas 60-godzinnego tygodnia pracy pojedynczej osoby. Zapewne domyślasz się, jak wyglądają wnioski, a link do wspomnianego badania przesyłam tutaj.

Syndrom oszusta

Jest to jeden z najbardziej popularnych syndromów wśród programistów, bo wg badań, około 70% społeczeństwa przynajmniej raz w życiu doświadczyła tego uczucia. Syndrom ten wiąże się z brakiem umiejętności obiektywnego postrzegania swoich umiejętności. Wiele osób, którym zostaje powierzone nowe stanowisko, kompetencje, czy awans (na które bardzo ciężko pracowali), negatywnie ocenia swoje zdolności do przyjęcia nowej roli, widząc siebie jako osobę, która zupełnym przypadkiem zyskała uznanie w oczach współpracowników.

Taka postawa powoduje blokadę przed dalszym rozwojem i często nie pozwala wykorzystać w pełni swojego potencjału. Dlatego niezwykle ważne jest walczenie z syndromem oszusta i podejmowanie działań, które pozwolą nam zwiększyć swoją samoocenę i docenić swoje umiejętności. Bardzo pomocne może się tutaj okazać współdzielenie swojej wiedzy z innymi - czyli pomoc współpracownikom w ich codziennych zadaniach, która może nas ugruntowywać w nas poczucie własnej wartości. Dodatkowo powinniśmy porozmawiać z bliską nam osobą, która zna nasze możliwości i predyspozycje i poprosić ją o wskazanie, jakie umiejętności ceni w nas najbardziej. Pomoże to nam utwierdzić nas w przekonaniu, że w pełni zasłużyliśmy na wszelkie sukcesy i awanse, a nasza opinia to jedynie wynikowa nietrafnej samooceny.

Efekt Krugera-Dunninga

Zastanawiałeś się może kiedyś, dlaczego spotykasz tak wiele młodych programistów, którzy nieznacznie przeceniają swoje możliwości i wręcz zachowują się tak, jakby pozjadali wszystkie rozumy? Tymczasem prawdziwi eksperci w danej dziedzinie uważają, że wcale nie dokonują niczego spektakularnego! O wiele łatwiej jest im dostrzegać swoją niewiedzę i często niesłusznie zaniżają swoje umiejętności.
To jedna z pułapek myślenia nazywana Syndromem Krugera-Dunninga. Mówi ona, że ludzie o niższych kompetencjach są o wiele bardziej skłoni do przeceniania swoich umiejętności niż doświadczone w branży osoby. Jest to niejako związane z wcześniej przedstawionym syndromem oszusta. Z powyższego przesłania płynie bardzo ważny wniosek. Ludzie mają tendencję do ciągłego odwlekania wyzwań w czasie. Boją się aplikować na pierwsze stanowiska programistyczne, nauczyć się nowej technologii, bo "jeszcze nie są gotowi i mają za małą wiedzę". Będąc natomiast początkującymi developerem, powinniśmy przybrać trochę pokory i być świadomym swojego braku wiedzy w niektórych obszarach. Pomoże to nam skuteczniej i szybciej rozwinąć skrzydła i wskoczyć na wyższy level programistyczny.

Syndrom prokrastynacji

Prokrastynacja to sytuacja, w której chronicznie opóźniasz rozpoczęcie pracy nad danym zadaniem. Może to wynikać z kilku aspektów - brak pewności swoich umiejętności, strach przed podjęciem ryzyka, niedyspozycja w ciągu dnia. Oczywiście, jestem świadomy tego, że każdy może mieć gorszy dzień i nie pałać w danym momencie do pracy (sam często przeciągam rozpoczęcie danych tasków). Problem się jednak pojawia, gdy taka osoba zaczyna regularnie "odkładać" wykonanie danej pracy na później i w ten sposób może powodować nawarstwianie się obowiązków i w rezultacie pracowania w nadgodzinach (co znowu powoduje pojawienie się wcześniej opisanego syndromu nadgodzinowego programisty).

Widzę kilka powodów, dlaczego programiści prokrastynują:
- Skupiają się na nadmiarowym oglądaniu tutoriali, bez przekładania wiedzy na praktykę (co też ma swoją nazwę - syndrom wiecznego studenta)
- Próbują pisać kod idealny, cały czas go poprawiając.
Sposobów na to, aby nie prokrastynować jest kilka. Powinniśmy przede wszystkim skutecznie zarządzać swoim czasem oraz poznać swoją "naturę programisty". Mam na myśli to, aby dowiedzieć się, w jakich godzinach pracuje Ci się najlepiej i kiedy jesteś najwydajniejszy. Na podstawie tej informacji, będziesz mógł zaplanować swój harmonogram dnia i ustalić ramy czasowe na zrealizowanie danych zadań. Co ciekawe, coraz więcej firm zdaje sobie sprawę z tego, iż przymus pracowania w sztywno określonych godzinach może negatywnie wpływać na wydajność programistów. Dlatego też wraz z rozpowszechnianiem się pracy zdalnej, firmy decydują się na ustalenie jedynie, tzw. core hours, w trakcie których wymaga się od pracownika dyspozycyjności w pracy. Jest to zazwyczaj niewielka część całego czasu pracy w ciągu dnia, przez co developerzy mogą samodzielnie decydować, kiedy zabiorą się za realizację danego taska.

Chroń się!

Na koniec tego artykułu, przedstawiam kilka uniwersalnych porad, jak pracować oraz się rozwijać, aby uchronić się przed wyżej opisanymi syndromami. Oczywiście jest to lekkie spłycenie i wskazówki te nie są pełnym remedium dla każdego, jednak na pewno pozwolą Ci podnieść swoją świadomość i chociaż minimalnie zredukować ryzyko pojawienia się wcześniej opisanych problemów:

  1. Dziel się wiedzą ze współpracownikami/mniej kompetentnymi osobami.
  2. Zapisuj swoje cele, osiągnięcia i wracaj do nich po czasie. Porównuj progress osiągnięty na przestrzeni czasu.
  3. Stawiaj na jakość pracy, unikaj crunch projektów, ustal z przełożonym core hours w firmie.
  4. Nie dąż do perfekcjonizmu. Działaj zgodnie z zasadą Pareto, która mówi, że 20% całego wysiłku przynosi 80% zysku.

A może doświadczyłeś któregoś z wymienionych syndromów na własnej skórze? Podziel się z nami, jak udało Ci się go rozwiązać!

Sprawdź również nasz system mentorowania i outsourcowania specjalistów
  • Wyznaczona ścieżka od A do Z w kierunku przebranżowienia
  • Indywidualnie dostosowany materiał pod ucznia
  • Code Review ze strony mentora
  • Budowa portfolio
  • Intensywna praca z materiałami szkoleniowymi