Zawód – programista. Ewolucja.

10

Czy zastanawialiście się kiedyś jaką drogę pokonuje każdy z nas podczas swojej programistycznej kariery? Kolejne jej etapy skojarzyły mi się ostatnio z nieuchronną podróżą od macicy do gleby, czyli zwykłym życiem. Oto co wyszło z pseudo-filozoficznych przemyśleń obserwatora programistycznej natury:

1) Narodziny

Wszyscy jesteśmy gdzieś dalej na naszej drodze, ale zaczynaliśmy we wspólnym momencie. Właśnie tu. Któregoś dnia coś zakrzyknęło z naszych trzewi: “będę programistą!” – i niemowlę developerem się stało.

2) Dzieciństwo

Drugi etap to poznawanie świata. Towarzyszą temu najbardziej podstawowe odczucia, kierowanie się prostymi instynktami. Ciekawość – jak to będzie? Strach – co, jeśli mi się nie uda? Niecierpliwość – tyle do poznania, a ja nic nie umiem!
Tyle języków, tyle technologii. Tyle wreszcie materiałów i możliwości. Niepewność – na co się zdecydować, jak podjąć prawidłową decyzję? Gdzie szukać autorytetów i porad?
Na tym też etapie zmagamy się z najcięższymi problemami. Trzeba umieć odnaleźć się w całkowicie obcym świecie. Trzeba nauczyć się nowego języka komunikacji, setek nowych pojęć, poznać ludzi i ich zwyczaje.
To właśnie tu sporo osób zmienia decyzję. “To jednak nie dla mnie, szukam czegoś innego”. I bardzo dobrze, teraz jeszcze nie jest za późno.
Jeśli jednak pierwszy sprawdzian mamy za sobą, jeśli okaże się że wybraliśmy słusznie, że się do tego nadajemy – dalej jest już tylko lepiej.
Czas podążyć dalej w las zer i jedynek…

3) Dojrzewanie

Jak to w życiu, czas na… coś na drodze programisty zaiste ohydnego. Nie powoduje trądziku czy śmiesznych zmian w głosie, ale jest od nich stokroć gorsze.
Zazwyczaj etap ten przychodzi po napisaniu pierwszego programu większego niż “Hello World!”. Mniej więcej zdefiniowaliśmy technologię w której chcemy działać, liznęliśmy podstawy programowania obiektowego, udało się napisać COŚ, z czego jesteśmy dumni… Hurra! Jestem wielki! Co idzie za tym?
Niestety, z moich obserwacji wynika, że prócz pozytywnej satysfakcji zazwyczaj towarzyszy temu ogromna PYCHA z kumplami takimi jak niesamowita pewność swoich przeszacowanych programistycznych umiejętności czy zastanawiająca wręcz zadziorność i przekonanie o własnej wszechwiedzy. Bezpośredni efekt to nieopamiętane krytykowanie wszystkiego i wszystkich, święte przekonanie że “ja napisałbym to lepiej”. Że jestem programistycznym mesjaszem a ci wszyscy kretyni wokół niech się ode mnie uczą, póki mają taką szansę.
Naprawdę nie wiem skąd się to bierze. Powyższy opis jest może nieco przekolorowany, ale… zjawisko takie istnieje ponad wszelką wątpliwość. Najprostszym przykładem jest forum CodeGuru, gdzie zbyt łatwo można natknąć się na objawy tej choroby.
“Myśl i kombinuj, SYNUŚ”. “Nie zadawaj banalnych pytań”. “Nie chce mi się, ale (w domyśle – ‘jestem tak wielki i zajebisty, że’) łaskawie ci pomogę”. To tylko kilka cytatów… Jak łatwo zapomnieć gdzie samemu było się jeszcze kilka miesięcy/lat temu.
Jednostkom udaje się ten etap przeskoczyć, inni przechodzą przezeń w sposób “normalny” (czytaj: nie trwa on zbyt długo). Niektórzy niestety pomimo wieloletniego doświadczenia i rozwiniętej kariery zawodowej cały czas trwają w tym bagnie po szyję. Rozpoznać to jest bardzo łatwo, ale wyrwać się… im później tym trudniej.
Ja załapałem się do drugiej grupy – szczęśliwie już kilka lat temu udało mi się w miarę bezboleśnie wskoczyć na następny poziom, nie czyniąc przy tym większych szkód. Szczególnie sobie – bo właśnie w samego siebie uderzamy taką postawą najbardziej.

4) Wkraczanie w dorosłe życie

Nadchodzi czas, gdy okazuje się, że niestety nie jest tak bosko jak sobie to wyobrażaliśmy. Do mistrzostwa trochę nam brakuje. Najwyższa pora przestać nieustannie łechtać swoje rozdęte różowe ego. Trzeba zrozumieć, że nie można ciągle skupiać się na tym co już umiemy, i odkryć znaczenie drugiej grupy: czego NIE UMIEMY.
Spuszczamy zatem trochę z tonu i zabieramy się do pracy. Najwyższa pora dogłębnie poznać mechanizmy rządzące programowaniem obiektowym. Zrozumieć NATURĘ wzorców projektowych. Zaznajomić się z różnymi frameworkami, bibliotekami, narzędziami. Wybrać źródła wiedzy, chłonąć opinie mądrzejszych od siebie. Uczyć się, uczyć, uczyć. I czerpać z tego radość. A do kolejnego “etapu dojrzewania” jest daleko. Trzeba po prostu cierpliwie, przez LATA, dążyć w wybranym kierunku.
Aha, i postanowić sobie: “NIGDY nie wrócę do poprzedniego etapu”.

5) Dorosłość

I oto jesteśmy kilka kroków dalej… Mamy wiedzę dość rozległą. Nie boimy się wyzwań, ale podchodzimy do nich z szacunkiem. Zdajemy sobie sprawę, że nie ma “jedynej słusznej drogi”. Umiemy wykorzystać gotowe rozwiązania i praktyki, jednak nie stosujemy wszędzie miliarda wzorców projektowych “bo tak trzeba”. Zdajemy sobie sprawę, że “overengineering” nie oznacza szpanu, tylko problemy.
Zalety szeroko stosowanych praktyk (takich jak Dependency Injection czy testy jednostkowe) nie są nam obce. Staramy się być na bieżąco z trendami (przykładowo aktualnie – mocno zauważalny zwrot w stronę ponownego odkrywania i przybliżania “dla mas” programowania funkcyjnego).
Nie wierzymy jednak ślepo wszystkiemu co usłyszymy – WIEMY bo SPRAWDZAMY zastosowanie konkretnych zaleceń w konkretnych scenariuszach.
Doszliśmy do wniosku, że lepiej znać narzędzia i z nich korzystać niż pisać wszystko samemu.
Otwarci na nowe poglądy poszerzamy horyzonty, robiąc to co lubimy…

6) …?


Ja bez kokieterii oceniam swoją aktualną pozycję gdzieś na początku punktu 5.

A gdzie Wy jesteście na tej ścieżce?

I pytanie do bardziej doświadczonych: co jest dalej? Jak wygląda “starość” programisty?:)

Share.

About Author

Programista, trener, prelegent, pasjonat, blogger. Autor podcasta programistycznego: DevTalk.pl. Jeden z liderów Białostockiej Grupy .NET i współorganizator konferencji Programistok. Od 2008 Microsoft MVP w kategorii .NET. Więcej informacji znajdziesz na stronie O autorze. Napisz do mnie ze strony Kontakt. Dodatkowo: Twitter, Facebook, YouTube.

10 Comments

  1. fajny wpis :)
    tak wlasnie sobie mysle, ze wielu z nas moze nosic w sobie cechy kilku etapow na raz..
    osobiscie nie uwazam sie za zaden autorytet, nie mniej staram sie pomagac, a jak sie pojawia w zespole/wsrod znajomych problem, chetnie sie zastanawiam nad nim jak go rozwiazac… Jednoczesnie potrafie komus powiedziec ze cos jest krotko mowiac zle napisane… a w zwiazku z tym – czy krytyka oznacza od razu ze ktos jest w okresie dojrzewania? osobiscie wydaje mi sie ze nie do konca zwlaszcza jak jest konstruktywna a kod ewidentnie nadaje sie do poprawy.. bo co z tego ze cos dziala, jak maintance tego bedzie koszmarem juz nie mowiac ze takie wpadki programistyczne moga prowadzic do znacznego spadku wydajnosci aplikacji? ale oczywiscie nie mozna przesadzac… no i to co napisales.. uczyc sie uczyc i jeszcze raz uczyc… a i tak umrzemy glupi :)

  2. Konstruktywna krytyka jest zawsze lepsza niż bezmyslne pochwaly. Bynajmniej nie twierdzę, że nie można krytykować W OGÓLE. Tylko – przemyślanie i z umiarem. Tak, żeby służyło to czemuś więcej niż tylko podbudowaniu naszej samooceny.
    Zatem – nie, moim zdaniem sam fakt krytykowania nie świadczy o ‘dojrzewaniu’:). Może o tym raczej świadczyć sposób w jaki jest to robione.

  3. Ja jeszcze dodam odnośnie okresu dojrzewania. Skupiłeś się tylko na osobach odpowiadających (a przynajmniej takie mam wrażenie), ale zapominasz także, że złe zachowanie można zaobserwować po stronie pytających równie często. Posty typu “już sobie poradziłem” i zero wyjaśnienia czy chodźby wczorajszy post na CG -“..bogowie programowania nie racza ponaciskac guziczkow co by napisac podpowiedź”. Ja staram się być jednakowo miły i uprzejmy dla wszystkich, ale i tego samego oczekuję od innych. Niestety w ostatnich czasach (trochę już lat na forach przebywam) zauważam negatywny trend w relacjach na forach…ale cóż…pozostaje tylko starać się to w kulturalny sposób zmienić na lepsze…

  4. killrathi on

    Punkt 6 w moim przypadku zaczął się od zniechęcenia, braku wiary w to co robię, a wręcz znielubienia tego co lubiłem i czemu chciałem się poświęcić.
    Przyjemność z tworzenia zastąpiona została terminami, klientami i ich wydumanymi pomysłami. Ze sztuki zrobiło się rzemiosło…

  5. Heja :)
    moim zdaniem brakuje jeszcze kilku etapow:
    Stagnacja – kiedy to myslisz ze sie rozwijasz, a jedynie krecisz w kolko nic nie robic
    Zacofanie – kiedy to w piekny poranek stwierdzasz, ze nie pamietasz jak parzy sie herbate, nagle sobie uświadamiasz, że masz kłopot z przypomnieniem sobie składni, a tym bardziej przypomnienie sobie sposobu działania określonych elementów
    Oraz jeden z najwazniejszych, ktory IMHO jest u Ciebie po 5:
    Spełnienie/Dopełnienie/lub inna odpowiednia nazwa – kiedy odkrywasz, ze to co robisz jest cudowne, uwielbiasz to i nie interesuja Cie juz nowe technologie a mozesz przez cale zycie siedziec w tej jednej i byc w niej masta. Takich ludzi jest mnustwo.
    Oczywiscie programista byc przez cale zycie, to trzeba miec wiare silna jak ksiadz – albo zachete by wciaz nim byc (nie obrazajac innych). IMHO programista to… tylko etap, nie wyobrazam sobie ze w wieku 50 lat, bede siedzial przed kompem i klepal kod czy to dla jakiejs korporacji czy umowe zlecenie. Dla siebie – owszem… dla swojej zabawy, przyjemnosci tak… ale programista to tylko etap. Z niego mozna latwo przjejsc do innych stanowisk. Plusem programisty jest to iz pracujac nad roznymi projektami, poznaje, MUSI poznac sposoby dzialania firm, procesow, i innych rzeczy typu wykrywania skazen, obliczania chmury chemicznej, ktora w zaleznosci od uksztaltowania terenu przemiesci sie na zachod lub pozostanie na danym terenie sieciac smierc w promieniu 2K, skazenie w 4KM itp itd.

  6. Na starość jest gorzej. Ja programuje zawodowo. Mój Ojciec robi to 30 lat i cofną się do 3 czyli PYCHA :D

  7. jakubmal on

    “Myśl i kombinuj, SYNUŚ”
    To chyba cytat ze mnie ;], ale jezeli tak, to dosc znieksztalcony, a poza tym zartowalem.
    Podoba mi sie Spełnienie/Dopełnienie wlasnie w to wszedlem i uwazam, ze to nie jest nic zlego, o ile wlasnie przeplatasz to sobie (jak ja zamierzam) z np. robotyka.

  8. Głębokie wpisy procent :) Ja mimo, że jestem (jak to stwierdziłeś) płytki nawet zrozumiałem o co Ci chodzi :)
    Jednak ścieżka, którą przedstawiłeś jest, można powiedzieć, bardzo optymistyczna… właściwie pasowałoby by to chyba przeistoczyć w diagram: rozgałęzienia, cykle i te sprawy :)

  9. 4 – ciagle dowiaduje sie o czyms nowym czego nie znam -.- . Ale mowie sobie – coz, minal czas filozofów kiedy to czlowiek byl w stanie posiasc calosc owczesnie dostepnej wiedzy, i czytam nastepnego tutoriala ;p
    Pozdrawiam!