Jaś to ambitny developer którego marzeniem jest osiągnięcie sukcesu i wdrapanie się na możliwie najwyższe szczyty programowania.

Kończąc studia i zaczynając pracę w zawodzie wszystko idzie po jego myśli. Ambitne podejście do nauki skutkuje pierwszą pracą i pozycją początkującego junior developera. Kolejne lata doświadczenia i kolejne realizowane projekty przenoszą go na poziom gdzie pozbywa się etykiety juniora i staje się tzw. “regularem”. Do stanowiska seniora brakuje mu jeszcze kilku rozwiązanych problemów, udokumentowanej historii pomagania mniej doświadczonym oraz kilku zmian w swojej postawie, jednak w końcu i ten etap udaje mu się osiągnąć.

Nagle coś zaczyna się psuć - atmosfera wokół projektu leci na łeb na szyję, morale spadają a nasz bohater postanawia zmienić pracę. Ku jego zdziwieniu, rynek pracy oferuje mu co najwyżej środowisko podobne do tego, które ma obecnie, albo nawet coś jeszcze skromniejszego. Czy stanowisko seniorskie to naprawdę szklany sufit?

O co chodzi w programowaniu

Czy kiedykolwiek zwróciłeś uwagę na to, że tzw. “job boardy” i wyszukiwarki ofert pracy prawie wcale nie zawierają ofert na najważniejsze i najlepiej opłacane stanowiska dostępne na rynku? Statystycznie najwięcej pozycji będzie dotyczyć pozycji regular developera, czyli osoby, która ma już pewien zestaw umiejętności, a jednak nie żąda za swoją pracę zbyt dużej sumy pieniędzy. Skrajności, czyli osoby zupełnie początkujące, jak i te, które uważane są za ekspertów - będą musiały zadowolić się ledwie kilkoma ofertami pracy.

Co w takim razie znajdujesię poza skalą i jak otrzymać dostęp do prawdziwej śmietanki tego co rynek ma do zaoferowania?

Zacznijmy od zastanowienia się co jest podstawową wartością jaką programista dostarcza pracodawcy. Zadając takie pytanie szerokiej grupie ankietowanych możemy usłyszeć najróżniejsze odpowiedzi. Dla niektórych będzie to np. umiejętność pisania aplikacji w języku JavaScript. Dla innych będzie to opanowanie do perfekcji .NET Core’a. Dla jeszcze innych będzie to płynne poruszanie się w środowisku Pythona. Założmy na chwilę, że są to odpowiedzi poprawne. Jak więc wygląda typowa ścieżka kariery u osoby która chce wnosić jak najwięcej wartości poprzez pisanie kodu?

  1. Piszę kod.
  2. Więcej kodu.
  3. Jeszcze więcej kodu.
  4. Jeszcze lepiej.
  5. Jeszcze zwięźlej.
  6. Jeszcze prościej.

Tworzony kod z biegiem czasu staje się tak dobry, że kolejne awanse przychodzą jeden po drugim. O co więc cały ten szum?

Nasza historia o bezpośrednim wpływie jakości kodu na karierę programisty byłaby całkiem bliska rzeczywistości, gdybym tylko nie pominął jednej istotnej części układanki. Oczywiście mowa tutaj o perspektywie pracodawcy. Pracodawcy, który patrząc na osiągnięcia takiej osoby... widzi kod. Więcej kodu. Więcej lepszego kodu. Jeszcze bardziej zwięzłego i czystszego kodu. Jeszcze prostszego kodu.

Szklany sufit już blisko.

Setki milionów... na nic?

Miejsca pracy to środowiska, w których zazwyczaj dużo dzieje się w pewnego rodzaju tle. Gdzieś w świetle reflektorów dzieje się jedno, natomiast w tle - często pomiędzy małą garstką osób - dzieje się drugie. Nie musi to być wyłącznie kwestia polityki lub szarych układów, ale zwykłego biegu wydarzeń gdzie kilku specjalistów lub liderów decyduje o faktycznej przewadze rynkowej, a reszta zajmuje się "utrzymywaniem na powierzchni".

Nie będąc świadomym mechaniki danej firmy lub przedsiębiorstwa, często możemy dochodzić do błędnych wniosków co do tego, co w danym miejscu oznacza wnoszenie wartości.

Przykładem takiego błędnie ocenianego działania są chociażby opinie o klubach piłkarskich, które na dwudziestokilkulatków kopiących szmacianą piłkę wydają setki milionów euro, co dla wielu z nas wydaje się kwotą skandalicznie dużą.

Co przy zakupie takich gwiazd jak Ronaldo czy Neymar dzieje się jednak w tle?

  • buduje się partnerstwo ze sponsorami, których piłkarz "podrzuca" w okolicę klubu
  • wzrasta liczba fanów na każdym meczu, a co za tym idzie zwiększa się sprzedaż biletów
  • pojawia się świadomość marki klubu na lokalnych rynkach gdzie dany piłkarz się wychował
  • zapewnia się stałą obecność w mediach na cały okres okienka transferowego
  • wzrasta szansa na wystąpienie w bardziej prestiżowych rozgrywkach
  • pojawia się potencjalna okazja do zarobienia na piłkarzu, którego kiedyś sprzeda się... za jeszcze większą kwotę

Klub kupując danego piłkarza kupuje jego umiejętności czysto piłkarskie, ale też potencjał medialny, partnerstwo ze sponsorami, pozycję na wybranym kawałku mapy świata, obecność w gazetach i portalach internetowych i wiele więcej.

To właśnie dlatego przyzwoici piłkarze grają dobrze w piłkę, a ci najlepsi, świadomi tego jak działa świat, z dobrej gry robią fundament czegoś znacznie większego.

“Patrz trochę szerzej”

Zdradzę ci pewien sekret. Mechanika miejsca pracy w którym jesteś nie obraca się wokół wytwarzania kodu. Obraca się wokół rozwiązywania problemów klientów. Problemami mogą być np. brak wiedzy, brak narzędzi, albo brak świadomości, że coś może działać lepiej. Czasami wszystko to da się rozwiązać pisząc kawałek kodu. Czasami potrzeba jednak wielu innych decyzji i działań.

Zdradzę ci kolejny sekret. Kluczem do przebicia sufitu powyżej stanowiska senior developera nie jest pisanie kodu. Jest nim udowodnienie, że masz wkład w rozwiązywanie rzeczywistych problemów, a dzięki temu twój pracodawca zarabia jeszcze więcej. Czasami wszystko to da się zrobić pisząc kawałek kodu. Czasami potrzeba jednak wielu innych decyzji i działań.

Różnica pomiędzy tymi dwoma postawami jest krytyczna. Krytyczne z punktu widzenia sukcesu pracodawcy są też wartości, które możesz dostarczać, patrząc na swoje obowiązki szerzej niż do tej pory:

  • jeśli jesteś w stanie zaakceptować świat, w którym programista rozwiązuje problemy NIE pisząc kodu (bo np. znasz roadmapę na nadchodzace miesiące i wiesz, że dany fragment i tak za niedługo będzie działał inaczej), to robisz to dobrze
  • jeśli jesteś w stanie łączyć fakty z dziedzin pozornie niezwiązanych ze sobą (np. wpływ procesu CI/CD na efektywność sprzedaży produktu), to robisz to dobrze
  • jeśli posiadasz wiedzę, dzięki której inne osoby są w stanie efektywnie pracować (np. rozumiesz zależności pomiędzy modułami, znasz i dokumentujesz poszczególne mechanizmy, interesujesz się "nie swoimi sprawami"), to robisz to dobrze
  • jeśli jesteś w stanie wytworzyć rozwiązanie które automatyzuje wybrany proces w miejscu pracy, a tym samym przyśpieszasz przebieg informacji i operacji (jak chociażby klasyczna automatyzacja generowania raportów czy procesu zamawiania obiadów), to robisz to dobrze
  • jeśli jesteś w stanie skracać dystans pomiędzy osobami które powinny ze sobą współpracować a jednak nie miały jeszcze okazji (bo np. ktoś umieścił je w dwóch innych zespołach przy kompletnie różnych projektach), to robisz to dobrze
  • jeśli dajesz się poznać poprzez kolejne inicjatywy wychodzące od ciebie, które pozytywnie wpływają na resztę pracowników (szkolenia, gildie, projekty poboczne), to robisz to dobrze
  • jeśli jesteś w stanie rzeczowo sprzeciwić się inicjatywie która spowoduje zmarnowanie czasu i wysiłku innych (np. pisanie od zera czegoś, co już zostało wymyślone), to robisz to dobrze
  • jeśli zapewniasz pracodawcy dostęp do innych specjalistów na rynku (których poznajesz na wydarzeniach branżowych lub w sieci), to robisz to dobrze

Sęk w tym, że żaden z powyższych punktów nie nadaje się do typowego CV, o żadnym z tych punktów nie wspomni większość ofert pracy na stanowisko programisty, no i mało kto powie ci o tym na rozmowie kwalifikacyjnej.

Będziesz miał wrażenie, że jako programista powinieneś programować i kropka.

Wszystko co najważniejsze, będzie się natomiast rozgrywać w tle, a decydować będą o tym osoby, których kompetencje wychodzą daleko poza pisanie kodu.