Wszechstronność to podobno pożądana cecha, która może wyróżnić na rynku pracy. Programista, który zna wiele technologii staje się łakomym kąskiem dla rekruterów nie tylko dlatego, że mogą mu wysyłać oferty na różne stanowiska, ale też dlatego, że jego doświadczenie może być bardzo potrzebne w projekcie. Sam lubię się określać jako wszechstronny programista. Przygotowałem kilka spostrzeżeń wyciągniętych z własnych doświadczeń.
Jak rozumieć wszechstronność?
Ja rozumiem to nie tylko jako znajomość różnych języków, frameworków, technologii. Wszechstronność, to też umiejętność odnalezienia się w różnych stylach zarządzania projektem i zespołem. W jej skład na pewno wchodzi też doświadczenie w różnych rodzajach biznesu. Uważam się za wszechstronnego, nie tylko dlatego, że znam Ruby, React, ReactNative, Flutter, Amazon Web Services, ale też dlatego, że pracowałem przy projektach korporacyjnych, software housach, w firmach produktowych i prowadziłem własną firmę.
Dzięki wszechstronności:
Jesteś atrakcyjniejszy na rynku pracy
Często specyfika projektów wymaga szerszego doświadczenia w różnych domenach. Dodatkowo np. w Ruby bardzo dobrze odnajdują się programiści Java czy C#.
Nie zginiesz
Łatwo się dostosować, nie zginiesz na rynku pracy, bo zawsze znajdzie się firma potrzebująca komandosa, co i backend naklepie, design wdroży, a i serwer jest w stanie skonfigurować. No i chyba nie muszę mówić, że taki komandos ma sporą szansę na wynegocjowanie trochę wyższej stawki, co nie?
Nie zamykasz się na jedno rozwiązanie problemu
Mając pewne doświadczenie i wiedzę z różnych technologii, możesz zaproponować kilka rozwiązań dla tego samego problemu i wybrać to najwłaściwsze.
Potrafisz wyeliminować śmieci
Wiesz, co działa, co nie działa. Możesz szybciej wychwycić odpalanie czołgu do zabicia muchy.
Nigdy się nie nudzisz
Możesz łatwo zmieniać projekty, rodzaje zadań. Łatwo odnajdujesz się w nowej rzeczywistości. Cieszysz się eksperymentowaniem.
Dobra, ale to nie jest takie całkiem różowe, prawda?
Będąc wszechstronnym developerem w swojej firmie:
jesteś zapchajdziurą
Robisz wszystko to, czego ktoś inny nie chce robić lub nie potrafi. Jesteś budżetową opcją na zrealizowanie projektu, który może nie jest szczególnie kluczowy, ale rekrutowanie dedykowanej osoby zajęłoby czas i spaliło kasę, a Tobie i tak płacą za ten czas pensję.
bez przerwy uczysz się nowych rzeczy
Szybkość uczenia się jest cechą ludzi wszechstronnych. Szybko się uczysz. To co? Nie nauczysz się nowej rzeczy? Nawet takiej, której nigdy nie chciałeś tykać? No nauczysz się, bo jesteś wszechstronny i dobrze rozumiesz biznes i zależności tego świata. Nauczysz się, bo lubisz pracodawcę, bo chcesz zrobić ten projekt i zająć się czymś innym. I tak uczysz się w kółko nowych rzeczy, które w większości przypadków wykorzystasz raz w życiu.
możesz robić to, czego nie lubisz
Nawet najbardziej wszechstronny programista ma coś takiego, w czym czuje się dobrze, taką swoją złotą strefę, ulubiony język, framework, kawałek aplikacji, ale też zna dużo więcej rzeczy, których nie lubią inni. Bardzo możliwe, że spotkasz finał, w którym robisz ciągle rzeczy, których nikt nie lubi. Przykładowo jesteś fullstackiem z zacięciem frontendowym, ale i tak ciągle dostajesz taski z optymalizacji zapytań, zamiast nowych animacji na froncie.
mało płacą
Powiedziałem już powyżej, że istnieje spora szansa, że taki wszechstronny programista może wynegocjować wyższą stawkę wynagrodzenia, ale… Ale może być tak, że będziesz robił masę rzeczy, których inni w zespole nie potrafią lub nie chcą robić, a twoja stawka wcale nie będzie wiele odbiegać od pozostałych na tym poziomie. Ale jak to? Ale przecież jesteś taki wszechstronny, że powinieneś zarabiać więcej. Cóż, polityka płac w twojej firmie może uważać zupełnie inaczej… Frustracja już czeka za rogiem.
nie jesteś specjalistą
Niby wiesz dużo różnych rzeczy, ale tak naprawdę nigdy nie miałeś czasu, żeby tak na serio głęboko wejść w jedną technologię, w jedno zagadnienie, bo ciągle musisz skakać. Jest taka dobra zasada: Know everything about something and something about everything. Fajnie jest wiedzieć dużo, ale nie można zapomnieć o specjalizacji.
impostor syndrom
Syndrom oszusta w takiej sytuacji wchodzi bardzo łatwo. Przecież niby wiesz dużo, ale tak naprawdę z każdego tematu można cię zagiąć, no bo… no właśnie, brakuje ci tej specjalizacji.
będziesz wąskim gardłem
Zajmujesz się wieloma różnymi rzeczami w projekcie, których nikt inny nie jest w stanie zrobić. W pewnym momencie zaczyna się ulewać. Zaczynasz być wąskim gardłem, bo oprócz ciebie nikt nie jest w stanie pchać pracy do przodu. Ludzie zaczynają się dopominać. Pytania zaczynają denerwować, a potem bardzo możliwe, że pojawi się…
wypalenie
Brak satysfakcji z pracy w takiej sytuacji to minimum tego, co może cię czekać. Skakanie po tematach, presja bycia tym jedynym, terminy, pytania, zmęczenie.
To tylko zagrożenia, które możesz spotkać, jeśli uważasz się za wszechstronnego programistę i jesteś tak postrzegany w zespole. Nie mówię, że to się wydarzy, ale zawsze warto mieć z tyłu głowy światełka ostrzegawcze.
Wszechstronny programista. Doświadczenie w różnych kategoriach biznesu i strukturach zespołowych. Znajomość wielu technologii od backendu, przez devops, fronted i mobile. To profil idealnie skrojony dla startupu, zwłaszcza w początkowej fazie, gdzie cały zespół to wielozadaniowi komandosi starający się jak najszybciej dowieźć unikalną wartość na rynek.
Fullstack developer – wszechstronny programista. Żyjemy w czasie rozszczepienia technologii. Może coraz mniej takich fullstacków będzie się wykształcać ze względu na mocną separację warstw w aplikacjach na backend i frontend? A może jednak nie, co pokazuje świat Javascriptu z Nodem i frontendowymi frameworkami, gdzie zespoły Node’owe w większości przypadków nie mają twardego podziału na frontend i backend developerów.
Wszechstronność to błogosławieństwo. Wszechstronność to przekleństwo.