Wspinasz się po szczeblach programistycznej kariery przez wiele lat. Kolejne frameworki, narzędzia, techniki. W pewnym momencie dotychczasowe wyzwania zaczynają Cię nudzić. I pojawia się pytanie – co dalej?

Korpo ścieżka kariery

Wiele organizacji, zwłaszcza tych dużych, stosuje do dziś widełki wynagrodzeń przypisane do stanowiska, przez które często nie opłaca się być „po prostu seniorem”. Możesz dalej uczyć się nowych technologii i szlifować metodyki pracy, ale raczej nie oczekuj, że przełoży się to na Twoją sytuację finansową. Ta bowiem zależy od szczebla w drabince lub stażu pracy. Starszy programista ma więc trzy możliwości. Może zostać architektem, analitykiem albo managerem.

Architekt

Wejście na wyższy poziom. Wyższy w kontekście zarobków, ale i poziomu abstrakcji. Pierwszy aspekt daje o sobie znać na końcu lub początku każdego miesiąca, w zależności od tego, kiedy otrzymujesz przelew z wypłatą. O drugiej zmianie trzeba już natomiast pamiętać samemu. Trzeba, bo tu tkwi haczyk. Architekt musi częściowo oderwać się od kodu. Choćby dlatego, że nie jest już w stanie na bieżąco śledzić zmian w wykorzystywanych bibliotekach czy językach. Ważne jednak, żeby nie oderwać się całkowicie. I właśnie to wypośrodkowanie jest w pracy architekta wyjątkowo trudne. Z jednej strony jest pokusa, aby dalej zajmować się niskopoziomowymi problemami i sugerować czy nawet narzucać swoje rozwiązania programistom. Z drugiej strony są natomiast osoby, które tak daleko odeszły od implementacji, że weszły na metapoziom i zamknęły się w wieży z kości słoniowej. Zaczynają tworzyć rozwiązania, które co prawda wyglądają fantastycznie na rysunkach i prezentacjach, jednak nie da się ich zaimplementować. Architekt musi więc jednocześnie pozwolić działać programistom oraz pilnować się, aby nie tworzyć sztucznych problemów i nierealnych rozwiązań. Zbytnie odchylenie się w jedną ze stron uczyni z Ciebie jedną z osób, o których jeszcze kilka miesięcy wcześniej opowiadałeś anegdoty w kuchni. 🙂

Analityk

Dobrze znasz domenę, potrafisz dogadać się z biznesem. Narzucasz więc na siebie znienawidzony garnitur lub garsonkę (uwaga! pomyłka może mieć ciekawe konsekwencje) i wypełniasz kalendarz dziesiątkami spotkań. Podstawowe narzędzie pracy to już nie IDE, a e-mail. Bardziej niż na pokonywaniu, skupiasz się na głębokim zrozumieniu przeszkód. I tu właśnie pojawia się problem. Sposób myślenia analityka przypomina bowiem bardziej pracę testera niż programisty. Należy oderwać się od pozytywnej ścieżki i aplikowania najprostszych rozwiązań. Należy rozłożyć problem na czynniki pierwsze, przeanalizować wszelkie możliwe ścieżki, a następnie wspólnie z biznesem ustalić, jak system powinien zachowywać się w określonych przypadkach. Niekoniecznie każdy, kto dobrze zna procesy obecnie zachodzące w systemie, będzie dobrym analitykiem. Warto zatem szczerze odpowiedzieć sobie na pytanie: „czy chcę każdego dnia pracować w taki sposób?”

Manager

Masz już serdecznie dość tego całego developmentu. Chcesz spróbować czegoś nowego. Warto jednak zdawać sobie sprawę, że zarządzanie ludźmi wygląda różnie w różnych zespołach i jasno zdefiniować, jakim managerem chcesz być. Przeszkodą w podjęciu takiej decyzji niestety jest z reguły brak kompetencji. Mówi się, że awansując developera na kierownika, firma traci dobrego programistę i zyskuje słabego managera. Niewiele firm ma niestety taką świadomość, a jeszcze mniej ma ochotę cokolwiek z tym fantem zrobić. Ja miałem to szczęście, że krok taki wykonałem pod skrzydłami Grupy Allegro, która każdego świeżo upieczonego managera wysyłała na dwutygodniowe pranie mózgu. Tam nauczyli mnie, co znaczy mieć pod sobą ludzi, jak brać odpowiedzialność za swoje decyzje czy też jak odpowiadać na nieprzyjemne pytania. Było to doświadczenie, które silnie wpłynęło na moją postawę. Warto wspomnieć, że z trenerami z Inżynierii Personalnej (polecam, a jak widać w linku nie ma afiliacji, co znaczy, że są na prawdę wartościowi ;)) współpracujemy do dzisiaj.

Czy można żyć inaczej?

Oczywiście. I dzieje się to coraz częściej. Coraz częstsze są tak zwane migracje poziome. Problem wypalenia na stanowisku “Java developer” można rozwiązać, rozpoczynając pracę jako devops. O ile faktycznie Cię do tego ciągnie. Nie ma się co oszukiwać: w pracy, która nie jest jednocześnie pasją, nie osiąga się wybitnych wyników. Jak już wspominałem we wpisie: Jak świadomie przydzielać ludzi do projektów, aby wejść na dwa najwyższe poziomy kompetencji, potrzeba pasji. Bez niej poświęcanie wielu godzin wolnego czasu na rozwój i podążanie za nowinkami jest po prostu mordęgą. Obecnie najprostszym sposobem migracji poziomej jest niestety zmiana firmy. Dopiero teraz powoli organizacje zauważają, że lepiej przesunąć człowieka do innego działu czy projektu, niż pozwolić mu odejść zupełnie. Argument „rozumiem, że chcesz się zająć czymś innym, ale jesteś nam potrzeby tutaj” po prostu nie działa w momencie, kiedy mamy rynek pracownika.

Programista kompletny

Jeszcze inne konsekwencje niesie ze sobą zmiana oczekiwań organizacji w stosunku do programistów. Teraz każdy chce programisty, którego zakres obowiązków wykracza daleko poza pisanie kodu. Kogoś, kto porozmawia z użytkownikiem, przejrzyście wytłumaczy biznesowi, jak działa określona funkcja, zrobi demo produktu klientowi czy napisze kawałek posta na firmowego bloga. Osoby, która zaangażuje się w produkt i wyjdzie z inicjatywami optymalizacji – tych biznesowych, a nie tylko związanych z wydajnością czy skalowaniem systemu. Taki programista niedługo będzie na wagę złota. Będzie można też płacić mu więcej niż to, na co wskazują same kompetencje techniczne, z prostego powodu – jego wartość dla firmy to nie kod – to produkt. A produkt to znacznie więcej niż kod. Przekonałem się o tym wielokrotnie na własnej skórze. 🙂

Trener, konsultant, audytor

Jeszcze inna ścieżka rozwoju to krok w stronę usług. Szkoleniowych, konsultingowych czy też audytorskich. Tutaj dużo zależy od naszej specjalizacji. Im jest ona węższa i bardziej niszowa, tym łatwiej o klienta. Niestety, druga strona medalu jest taka, że spada nam także liczba potencjalnych klientów. Im specjalizacja szersza, tym bardziej kompetentnym trzeba być, aby utrzymać się na rynku. Oczywiście dobre umiejętności sprzedażowe potrafią czynić cuda, ale jeżeli nie idzie za nimi twarda wiedza, magia szybko zblednie. Jeżeli w parze z kompetencjami technicznymi idzie zdolność przekazywania wiedzy, można pomyśleć o karierze trenerskiej. Prowadzenie szkoleń i warsztatów pozwala osiągnąć bardzo przyzwoity poziom dochodów. Jest co prawda bardzo pracochłonne na początku, gdyż samo przygotowanie szkolenia zajmuje o wiele więcej czasu niż jego przeprowadzenie. Swoje pierwsze szkolenia przygotowywałem tygodniami, pracując codziennie po 7–8 godzin. Same szkolenia, o ile nie prowadzi się ich odpowiednio interaktywnie, są dość odtwórcze. A opowiadanie tego samego po raz siódmy raczej nie jest fajne i może prowadzić do szybkiego wypalenia. Rozwiązaniem są warsztaty, w których dużo rozmawiamy z uczestnikami i pracujemy na ich problemach. To jednak wymaga utrzymywania wysokiej koncentracji przez 8 godzin przez 2–3 dni z rzędu. W efekcie po powrocie do domu, czuję się jak wyciśnięta do sucha gąbka. Ale gąbka, która przy okazji wchłonęła trochę nowych doświadczeń.

Jak widać, możliwości rozwoju jest sporo, mimo że przedstawiłem jedynie te podstawowe. A jeżeli masz ochotę na coś ekstra, to zawsze można założyć własną firmę. Gwarantuję, że liczba wyzwań będzie zaskakiwać każdego dnia. 🙂

A skoro już mowa o rozwoju, to jeżeli ochotę pogłębić wiedzę, zapraszam na otwarty, jednodniowy warsztat 26 listopada w Warszawie. W agendzie nie zabraknie praktycznego (i krytycznego) podejścia do architektury i mikroserwisów. 🙂

 

6
Dodaj komentarz

avatar
4 Comment threads
2 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
5 Comment authors
Jakub KubryńskiKrzysztof GóralskiAdamja jaMichał Recent comment authors
  Subscribe  
najnowszy najstarszy oceniany
Powiadom o
Michał
Gość

Akapit analityk: nie wydaje mi się, żeby praca programisty polegała zawsze na implementacji najprostszych rozwiązań i tylko podążając „happy path”. Programista musi przecież też implementować obsługi błędów i przewidzieć nieoczekiwane zdarzenia, które w systemie mogą się zadziać. Chyba, że pomyliłem konteksty, albo coś źle zrozumiałem? Akapit Manager: nie ma w ogóle linka, a po za tym naprawdę myślisz, że jeśli się nie daje afiliacji, tzn że link jest naprawdę dobry? Serio? Bo IMO powinniśmy uczyć ludzi, żeby zawsze dawali afiliację.. Nie rób przysług, ucz się sprzedawać.. Akapit Czy można żyć inaczej?: Czy można żyć inaczej. Nie zgadzam się zupełnie w… Czytaj więcej »

ja ja
Gość
ja ja

Zabraklo jeszce jednej opcji: wyjdz poza „Jave”. Polecam. Przyjemne uczucie i $$ wiecej.

Adam
Gość
Adam

Nie oszukujmy się programista i to nie wcale senior, musi nie raz pełnić rolę:
– analityka, pm’a, programisty, architekta, team leada

Czasami zdarzają się takie projekty, że PM nie potrafi zbierać wymagań, lub PO, który mało wie o biznesie…
To programiści są tymi, którzy najbardziej się rozwijają i muszą wyręczać inne osoby na projekcie.
Weźmy np. taką technikę łorkszpową jak Event Storming – czy to jest roket sajens? 😀 No nie… W czym problem, aby PM czy ktoś  na tych śmiesznych edżajlowych stanowiskach się tego nauczył 😀

Krzysztof Góralski
Gość