Do poruszenia tego tematu zainspirował mnie człowiek, którego miałam przyjemność poznać w procesie rekrutacyjnym. Miał on sześć lat doświadczenia w Androidzie, a mimo to aplikował na stanowisko… Junior Android Deva. Argumentował to tym, że tak naprawdę liczy się tylko ostatnie 1.5 roku, wcześniej rozwijał jakieś stare systemy. W przeciwieństwie do powszechnego obecnie mam-dwa-lata-expa-jestem-seniorem – taka postawa jest na tyle nietypowa, że budzi pewne wątpliwości, ale i zmusza do refleksji.
Nie da się ukryć, że świat, w tym biznes, idzie w kierunku specjalizacji i demonopolizacji: Nie ma takiego aspektu stosunków między ludźmi, który nie uległby technicyzacji i, co za tym idzie, nie został poddany kontroli specjalistów. Mamy więc sztab specjalistów od każdej, wąskiej dziedziny życia, którzy czasem tak bardzo okopują się w swoim polu, że kiedy tylko coś wykracza poza ich kompetencje, przyjmują postawę Katalończyków nierozumiejących hiszpańskiego.
Pozwól komuś zagłębić się w jednej, konkretnej specjalności wystarczająco długo, a ta osoba automatycznie zacznie zakładać, że specjaliści w innych dziedzinach to magicy, oceniając głębię ich mądrości rozpiętością własnej ignorancji –Isaac Asimov, Świat robotów
BYĆ (full stackiem) czy MIEĆ (spokój) – oto jest pytanie
W sieci znajdziemy setki artykułów dotyczących tego, jakie specjalizacje w IT są najbardziej opłacalne, a jakie te najbardziej przyszłościowe.
Z jednej strony skupianie się tylko na jednej technologii, robienie sobie z niej ołtarzyka i niechęć do nauki czegoś nowego, nie jest aprobowana przez pracodawców, klientów czy usługobiorców, a z drugiej – oferty pracy często dedykowane są konkretnym technologiom i wymagają one od nas x lat doświadczenia w konkretnym framework’u. Ponadto, jeśli często zmieniamy stack, w jakim pracujemy, to szybko przestajemy być na bieżąco ze zmianami, które następują w obrębie ”odłożonej na bok” technologii. A potem, w ramach rekrutacji, idziemy na techniczny screening, po roku niewidzenia się z odłożonym na bok frameworkiem i nagle okazuje się, że wypadamy bardzo blado.
Jack of all trades, czyli ludzie z szerszym wachlarzem kompetencji, nie skupiający się na jednej dziedzinie czy technologii, są najbardziej pożądani np. w firmach produktowych, start-upach, gdzie zarówno team, jak i budżet jest mały. Nierzadko jest to jednak frustrujące dla pracownika, który nie może skupić się na rozwoju w jednym, konkretnym obszarze; ponadto, istnieje wówczas mała szansa, że pracodawca zechce zatrudnić odpowiednią liczbę specjalistów, bo full stack (lub rzekomy full stack) pokryje wszystkie projektowe potrzeby.
Patrząc na problem szerzej – choć wciąż w obrębie branży – to jeśli chodzi o rynek software house’ów to tu rzecz ma się podobnie – im węższa specjalizacja firmy, tym lepiej. Oczywiście, zdarzają się klienci, którzy oczekują od SH tylko i wyłącznie niskiej ceny i tacy najchętniej chcieliby wszystko w „jednym miejscu”, przy supporcie jednego deva i najlepiej wszystko w jeden miesiąc. Jednak ogólnie rzecz ujmując – rynek SH i wszelkich firm body leasingowych jest już tak nasycony, że tylko unikalną wartością (np. doświadczeniem w wąskiej dziedzinie interesującej klienta) jesteśmy w stanie ten rynek zwojować.
No i co w końcu z tą specjalizacją?
Pamiętam, jak upierałam się, że jako marketingowiec nie będę uczyć się Figmy, bo a) nigdy nie będę w tym dobra na tyle, żeby zostać designerką, b) marketingowiec nie powinien tworzyć grafik, tylko specjalista w dziedzinie, czyli UX/UI designer. Dziś wiem, że to było w pewnym sensie dobre – nie musiałam godzinami męczyć się z czymś, czego robić nie lubię i nie czuć smaku klęski po zapisaniu finalnej wersji, a z drugiej strony złe, bo zawsze byłam zależna od kogoś i jego timeline’u, a w praktyce bywa tak, że nie wszystkie firmy widzą potrzebę zapewnienia działom marketingowym graficznego supportu, no i pies pogrzebany.
To specjalizować się czy nie? Pewnie nie ma jednej, uniwersalnej odpowiedzi na to pytanie, ale oto garść naprawdę mięsistych porad od branżowych ekspertów:
EKSPERTKA 1: OLA KUNYSZ
programistka z wieloletnim doświadczeniem, założycielka Szkoły Testów, blogerka, prowadząca wysokiej jakości prelekcje i szkolenia. jej wielopłaszczyznowa aktywność w branży jest absolutnie godna podziwu, niedawno wypuściła na rynek świetną pozycję Kierunek Jakość
Olu, czy w 2022 warto się specjalizować (w konkretnej technologii lub dziedzinie)?
To zależy od kilku rzeczy. Po pierwsze – od tego jak wygląda branża. Jeśli mamy rynek pracownika – który się powoli kończy – to lepiej znać się na wielu tematach i być na bieżąco z nowinkami. Przy zmianach pracy to się na pewno przyda. W innych wypadkach lepiej się trochę „okopać” w jednym temacie. To nie musi być wąska specjalizacja językowo/frameworkowa. Może być szerzej, ale na tyle, żebyśmy byli w stanie określić naszą domenę. Gdyby ktoś miał nas polecić na jakieś stanowisko, to co jest naszą kartą przetargową, jaką łatkę można nam nakleić, żebyśmy byli atrakcyjni dla branży?
Po drugie – zależy to od indywidualnych preferencji i „supermocy”. Ja zawsze lubiłam mieć wiele asów w rękawie i specjalizacja przyszła do mnie później, wcześniej starałam się rozwijać wszechstronnie. To nie oznacza tysiąca tematów, ale 3-4, które są jakimś znakiem rozpoznawczym. Są takie osoby, które lubią być mistrzami w swoim fachu; takie osoby zawsze znajdą pracę, nieważne jak ciężkie są czasy, bo są po prostu świetnymi specjalistami. Natomiast ich wachlarz możliwości jest ograniczony, bo nie każdy potrzebuje akurat takich umiejętności.
Była kiedyś taka seria bilbordów z reklamą magazynu w stylu „Wybierz swoją drogę, ale najpierw spróbuj wszystkiego” i to jest chyba najlepsze podejście. Może nie trzeba próbować absolutnie wszystkich języków, bo może nie wystarczyć życia, ale warto przejść przez backend, frontend, devops, bazy danych, projektowanie i inne obszary, bo może akurat nasza supermoc jest właśnie w tym obszarze. I wtedy drążyć głębiej.
Żeby było jasne – nie mówię tutaj o pierwszym roku nauki programowania. Wchodząc do branży, można zacząć od czegokolwiek, bo to się i tak na 90% zmieni. Wiele osób, które dopiero zaczynają, spędzają zbyt dużą ilość czasu na zastanawianiu się, co będzie dla nich najlepsze, ale prawda jest taka, że nawet wróżka Velessa może nie wiedzieć. Warto zacząć od czegoś, na co jest największe zapotrzebowanie, żeby zacząć pracować w zawodzie. Jeśli po jakimś czasie czujemy, że to może nie być to miejsce, wtedy można zacząć szukać dalej. Wtedy mamy też pojęcie jakie są możliwości i do czego nas ciągnie.
Czy lepiej – jeśli już – specjalizować się w tym, co nam odpowiada najbardziej czy kierować się trendami rynkowymi/najpopularniejszymi potrzebami?
Na pewno warto śledzić to co się dzieje na rynku i czytać/słuchać o nowinkach. Ale warto mieć umiar. Znam wiele osób, które popadły w zwątpienie, kiedy zobaczyły ile jest rzeczy do nauki. Wtedy warto przez chwilę skupić się na jednym temacie, żeby poczuć, że coś jednak umiemy; kiedy wchodzimy ciągle w nowe tematy, możemy mieć wrażenie, że tematów jest ogrom, a my nie umiemy prawie nic. To większość osób zniechęca. To normalny okres nauki, trzeba to po prostu przeczekać. Warto też prowadzić jakiś spis tematów, których się uczymy i odhaczać te, w których czujemy się już w miarę swobodnie. To pomaga, kiedy wydaje nam się, że ciągle stoimy w miejscu.
Nie można mieć wszystkiego. Albo będziemy się znać na wielu tematach, ale dość płytko, albo będziemy mistrzami w kilku. Tutaj wchodzą indywidualne preferencje. Trzeba słuchać siebie, bo jeśli będziemy starać się rozwijać wbrew sobie i swoim talentom, to może się okazać, że będziemy sfrustrowani a umiejętności i tak nie będzie.
Czy specjalizacja w jednym konkretnym obszarze nie prowadzi do szybszego znudzenia/wypalenia?
Specjalizacja w jednym obszarze może być męcząca, ale tylko dla osób, które lubią różnorodność i zmianę. U niektórych wąska specjalizacja wpływa pozytywnie na poczucie własnej wartości. Spotkałam wiele osób, które były znane z jednego tematu i czuły się dumne i nigdzie się z tej niszy nie wybierały. Spotkałam też takie, które były znane z tego, że szybko wchodziły w nowe tematy i próbowały nietypowych rozwiązań. To jest świetne, dlatego, że w zespołach potrzebujemy i tych, którzy przynoszą zmiany, znają się pobieżnie na wielu tematach, wprowadzają nowinki, ale i takich, którzy siedzą głęboko w niewielu tematach i bez używania Google są w stanie rozwiązać większość problemów. Jeśli tylko nauczymy się dobrze komunikować, z szacunkiem i uznaniem dla odmiennych opinii, powstaje zespół idealny.
Czy znajomość wielu technologii ma sens przy obecnym tempie zmian, skoro przykładowo pół roku niepisania np. we Flutterze, powoduje, że przestajemy być na bieżąco i trudno nazwać siebie wówczas specjalistą tego frameworka?
Znajomość jednego języka czy frameworka to zbyt wąska specjalizacja na kilka lat w branży. Rzadko też spotykam takie osoby, które nie wychodzą poza taki obszar. Z reguły poznajemy cały ekosystem, dowiadujemy się, co się dzieje u konkurencji, kto od kogo kopiuje funkcjonalności itd. Odświeżenie znajomości w wąskim obszarze jest proste dla osoby, która spędziła w nim dużo czasu, nawet po przerwie. Po latach doświadczenia w branży zaczynamy zauważać podobieństwa i pewną powtarzalność. Jeśli dzisiaj programuję w Javie, a jutro ktoś mnie wrzuci do projektu z C# to oczywiście dużo się zmieni, ale sobie poradzę. Jeśli od kilku lat programuję w React-ie, a nagle mam zrobić mały projekt w Vue, to też pewnie dam radę. Ponarzekam na rozwiązania w innym narzędziu, ale nie będzie to jakiś wielki przeskok. Na pewno mniejszy niż nauczenie się pierwszego języka czy frameworka. Warto mieć tylko pod ręką eksperta do code review.
_________________________________
EKSPERT 2: KRZYSZTOF KEMPIŃSKI
niesamowicie konsekwentny i najpopularniejszy w branży podcaster z misją, która brzmi: „pomagam zrozumieć IT”, programista z wieloletnim backgroundem, wspomagający firmy w procesach rekrutacyjnych. obecnie pracuje nad książką o marce programisty, więc stay tuned!
Krzysiu, czy z Twojej perspektywy, biorąc pod uwagę obecne trendy rynkowe, warto się specjalizować?
Nie ma jednego prawdziwego przepisu na sukces. Tak jak w każdej innej dziedzinie ludzkiej działalności, potrzebni są eksperci od wąskiego tematu jak i osoby, które mają ogólny ogląd na całość.
Zawodowo jestem związany ze startupami i tutaj też zauważam podobną analogię – do sukcesu tworzonego produktu trzeba specjalistów potrafiących wejść głęboko i rozwikłać zawiły problem, jak i ludzi, patrzących szerzej i dalej, łączących kropki i przez to będących źródłem innowacji.
Dodatkową warstwą tego zagadnienia są usposobienie i preferencje danej osoby. Niektórzy wolą zagłębić się w problem i w stanie flow pracować w wąskiej dziedzinie. Są też tacy, którzy są ciekawi wielu rzeczy, którym to szybko nudzi się jeden obszar. Jedni preferują stabilną pracę, inni działanie w szybko zmieniających się okolicznościach. Sam siebie uważam za generalistę, osobę szerzej ale i płyciej wchodzącą w różne technologie. Myślę jednak, że dla takich osób ważne jest by posiadali głębsze zrozumienie jednej (model T – kreska pionowa to płytkie i szerokie zrozumienie, pionowa nóżka – wąskie ale głębokie) lub kilku (model π) technologii będących ich specjalizacją. Z mojego doświadczenia wynika, że daje to większą swobodę w szukaniu kolejnych projektów z racji na to, że oferty pracy są szyte pod konkretną technologię.
Znajomość kilku technologii ma oczywiście sens i może się okazać, że dla pewnego projektu będzie to konfiguracja idealna. Warto jednak pamiętać, że specjalizować się powinniśmy w takich technologiach, które na bieżąco wykorzystujemy w pracy lub poza nią. Uczenie się na zapas, bo może się przyda, często jest stratą czasu, bo umiejętność nieszlifowana i niewykorzystywana na bieżąco zanika.
Osobiście uważam, że dużo bardziej od specjalizowania się w kilku technologiach czy w jednej może sprawdzić się zrozumienie obszaru biznesowego. Już teraz pojawiają się oferty pracy dla przykładowo Java developerów z doświadczeniem w fintechach. Myślę, że w przyszłości coraz częściej będzie się szukało specjalistów IT nie tylko w określonym obszarze technologicznym ale i biznesowym. Jeśli mógłbym coś doradzić, to właśnie zdobywanie doświadczeń z dziedzin pokrewnych, powiązanych i tworzących biznesową całość. Dla pracodawców taka osoba jest cenniejsza niż tylko ekspert w danej technologii. Rozwój narzędzi do tworzenia aplikacji typu no-code/low-code czy wspomaganie tworzenia kodu przez uczenie maszynowe są jaskółkami zmian, które zachodzą i będą zachodzić w IT. Od osób w niej pracujących będzie się wymagało szerszego i bardziej abstrakcyjnego myślenia o domenie a nie tylko idealnej znajomości narzędzia. Warto więc oprócz doskonalenia umiejętności technicznych zagłębić się nieco w domenę projektu nad którym pracujemy i zrozumieć na czym on zarabia, na jakie problemy użytkownika odpowiada i jak wygląda rynek na którym się porusza.
_________________________________
EKSPERT 3: TOMASZ DZIURKO
VP of Engineering w SoftwareMill, programista Java z kilkunastoletnim doświadczeniem, konferencyjny speaker oraz działacz: współorganizował Confiturę, był liderem Warsaw Java User Group. twórca JVM Bloggers, założyciel slacka JVM Poland, a teraz najczęściej lider zespołu 3 juniorów: Pawła, Jaśka i Marka
Tomku, czy warto się specjalizować? Co byś doradził tym, którzy mają ten dylemat?
To zależy od wielu czynników, ale przede wszystkim od etapu kariery w naszej branży. Na samym początku skoncentrowałbym się na tym co nas najbardziej kręci w tej ścieżce kariery: czy frontend czy backend czy może devops. Na miejscu zaczynających w IT wybrałbym sobie taką dziedzinę, język oraz 2-3 technologie towarzyszące. A następnie właśnie na te rzeczy położyłbym główny nacisk nauki.
Dlaczego akurat tak? Większość firm szukająca juniorów koncentruje się na jakiejś specjalizacji, np. Junior Java Developer, Junior DevOps Engineer czy Junior Frontend Developer. Na takie ogłoszenie spływa do firmy kilkadziesiąt, a czasem kilkaset CV. Żeby się wybić, trzeba w tym CV mieć coś wyróżniającego się; coś, co sprawi, że przeglądający je zobaczy, że może i jest to osoba na początku swojej drogi w IT, ale przynajmniej wie już jaka to droga.
Po drugie, im więcej będzie pasji w tym wyborze, tym łatwiej będzie przychodziła nauka, pisanie własnych projektów, poznawanie narzędzi i ogólnie pojęty rozwój. Jeśli nie odczuwasz satysfakcji po spędzeniu kilku godzin dziennie na pisaniu kodu, oglądaniu kursów, czytaniu dokumentacji, będzie Ci bardzo trudno zmotywować się do regularnej nauki, a tylko takie podejście może przynieść widoczne efekty i sukces w postaci zdobycia pierwszej czy drugiej pracy.
Na początku tematów do zgłębienia, nawet w wąskiej działce, jest bardzo dużo, a konkurencja w walce o dołączenie do mitycznego grona programista15k (w sumie teraz to już bardziej programista20k) bardzo duża. Im celujesz szerzej, tym ilość wiedzy, którą firmy oczekują, że będziesz posiadał, powiększa się. A doba ma tylko 24h.
Przy wyborze konkretnego języka czy technologii warto kierować się tym czy jest ona na fali wznoszącej albo chociaż jest obecna na stabilnym poziomie od kilku albo kilkunastu lat. Lepiej nie wybrać czegoś, z czego branża się teraz wycofuje. Można skorzystać chociażby z Google Trends i porównać trend w liczbie zapytań o konkretną technologię. Można sprawdzić liczbę ogłoszeń na JustJoinIT albo NoFluffJobs. Ciekawym źródłem inspiracji mogą być również wyniki Stack Overflow Developer Survey.
Gdy już mamy trochę doświadczenia w określonym obszarze, warto przejść w tryb poszerzania swojej wiedzy zgodnie z modelem T-shaped skills. Czyli trochę pogłębiamy naszą wiedzę w wąskiej dziedzinie, ale jednocześnie staramy się poznać podstawy z innych obszarów, z którymi mamy czasami styczność w codziennej pracy. To pozwoli nam pracować bardziej efektywnie, bo niektóre, prostsze zadania spoza naszej głównej ścieżki rozwoju będziemy w stanie zrobić sami. Co równie ważne, zrozumienie przykładowo jak działa frontend pozwoli programiście od backendu lepiej komunikować się z frontendowcem i szybciej rozwiązywać problemy na styku tych dwóch warstw.
Kolejnym ważnym aspektem poznawania obszarów poza naszą początkową specjalizacją jest to, że może się z czasem okazać, że nie tylko temat A jest dla nas bardzo interesujący, ale równiez i zadania z obszaru B robimy z dużą chęcią. W zależności od stopnia zainteresowania drugą specjalizacją, może to skutkować zmianą głównej dziedziny na inną albo ukierunkowaniem się, przykładowo, na fullstack developera. Takie osoby są bardzo poszukiwane na rynku, bo w tak szybko zmieniającej się branży jak nasza, technologie i narzędzia ewoluują bardzo szybko i bycie na biężąco w dwóch specjalizacjach jest dużo trudniejsze niż w jednej.
A co jeśli już jesteś seniorem? Niektórzy pozostają w wąskiej specjalizacji z sensowną wiedzą z kilku innych obszarów, inni do jednej dziedziny dodają drugą i zostają fullstackami. Jeszcze inni do specjalizacji technologicznej dodają domenową i stają się ekspertami od aplikacji w branży ubezpieczeniowej, finansowej czy w blockchainie. Pozostali odkrywają w sobie talent do prowadzenia zespołów i zarządzania ludźmi. Wtedy nie liczy się bycie najlepszym programistą w zespole, a umiejętność komunikacji, rozwiązywania konfliktów, motywowania i patrzenia dalej niż tylko najbliższy sprint albo dwa.
Podsumowując: tak, jak zawuażył Krzysiek – nie ma uniwersalnej recepty na sukces, ale na szczęście istnieją takie mikro recepty i przerobione lekcje od ludzi bardziej doświadczonych w materii od nas i mam nadzieję, że te powyższe takimi właśnie się dla Was okażą. Enjoy!