O czym w kontekście pracy Java Developera mówi się zdecydowanie za mało? Devdebata
Jak wyglądały rekrutacje na Java Developera kilka lat temu? Jak wymagania pracodawców zmieniły się przez ten czas? O czym w kontekście pracy Java Developera mówi się za mało? Na te i na wiele innych pytań odpowiedzi znajdziecie w tym artykule.
W devdebacie udział wzięli:
- Damian Jagodziński. Application Development Specialist w Accenture Polska. W branży IT działa od 7 lat. Rozpoczynając od małych firm na dużej korporacji kończąc, rozwijając jednocześnie projekty na własny użytek. Aktualnie odpowiada za tworzenie i rozwój aplikacji biznesowych dla klientów z różnych części świata. Codzienność w firmie stanowi projektowanie nowych funkcjonalności, rozwiązywanie nietypowych problemów oraz architektura oprogramowania dostosowana do potrzeb klienta. Uwielbia pracować nad automatyzacją i optymalizacją działań, które mogą ułatwić pracę na projekcie. Swój czas poświęca również na wsparcie techniczne i funkcjonalne zespołu.
- Dominika Piechota. Java Developer w Accenture Polska. Ukończyła studia informatyczne prowadzone w języku angielskim na Politechnice Łódzkiej. Pracuje jako programista w łódzkim oddziale firmy Accenture. Już od czasów szkolnych testowała różne języki programowania aż ostatecznie zżyła się z Javą. Uwielbia poszerzać swoją wiedzę, szczególnie w zakresie dobrych praktyk. Ostatnio pochłonęła ją tematyka DDD oraz Event Stormingu. Poza szeroko pojętym programowaniem, interesuje się praktycznym wykorzystywaniem wiedzy z psychologii w życiu codziennym a w szczególności efektywnymi technikami nauki.
- Michał Kuna. Associate Manager w Accenture Polska. Działa w Accenture od 2010 roku. Zaczynając w obszarze SQL i PL/SQL nie sądził, że będzie mógł rozwijać się i sprawdzać w tylu obszarach, nie tylko na szczeblu krajowym. Aktualnie zajmuje się rozwiązaniami chmurowymi, a dokładniej GCP. Na przestrzeni lat zdobył doświadczenie nie tylko jako programista (SQL, Java, Spring), ale również analityk biznesowy, team leader, scrum master, service manager czy people lead. Ta ostatnia rola jest mu szczególnie bliska – uważa, że najważniejszy jest człowiek, dlatego w pracy skupia się na budowaniu dobrych relacji z innymi, co jest dla niego nieustannym źródłem inspiracji.
Spis treści
Czego w ofertach pracy wymagano od Javy Developera jeszcze kilka lat temu? Jak te wymagania ewoluowały z Waszej perspektywy?
Michał Kuna:
Z ciekawości odszukałem ogłoszenie na jakie sam aplikowałem 11 lat temu. W skrócie w wymaganiach był jakiś język obiektowy + SQL. Czasy się zmieniają i ogłoszenia też. Kiedyś Java + J2EE , potem Java + Spring a teraz już dodatkowo chmura i microservices. Oczywiście to tylko taka moja perspektywa, bo na pewno gdzieś jeszcze szukają specjalistów J2EE i Cobola. Jest też kwestia dostępności pracy dla szeroko rozumianego Juniora. Jak zaczynałem wcale nie było tak prosto zatrudnić się w jakiejś firmie IT. Mam wrażenie, że te czasy ostatnio wróciły, bo pracodawcy dużo częściej szukają seniorów i regularów.
Damian Jagodziński:
Podczas moich poszukiwań pracy w tym obszarze większość wymagań krążyła wokół trzech języków: Javy, SQL i angielskiego, gdzie w sumie często bazy danych były bardziej atutem kandydata niż specyficznym wymogiem. Myślę też, że nie było wtedy tak dużej konkurencji na rynku pracownika, zatem nie było problemu z dostaniem się na rozmowę mając znajomość języków wyżej wymienionych w CV, bez udokumentowanego doświadczenia.
Przy aktualnych trendach, jeśli kandydat miałby tylko te cechy można powiedzieć, że posiadałby jedynie podstawowe umiejętności wymagane na rynku. Do Javy dołączyły frameworki: Spring, Hibernate, a SQL stał się wymogiem wręcz oczywistym. W kwestii angielskiego wiele firm po prostu prowadzi rekrutacje tylko i wyłącznie w tym języku i wisienka na torcie: coraz więcej firm poszukuje Juniora z co najmniej rocznym czy dwuletnim doświadczeniem komercyjnym. Do tego możemy dodać boom na studia IT, bootcampy czy szkolenia i dochodzimy do etapu, że pierwszą pracę aktualnie jest znaleźć o wiele trudniej.
Dominika Piechota:
Jeszcze kilka lat temu w wymaganiach można było znaleźć przede wszystkim języki programowania. Obecnie, obok oczekiwanej przez rynek znajomości tychże języków, podany jest zazwyczaj zestaw frameworków i innych pobocznych technologii, oraz kolejna lista mile widzianych kompetencji technicznych. Przez ostatnie półtora roku obserwujemy, że pojawia się więcej ofert dla seniorów, regularów. Oczywiście dla juniorów też coś się znajdzie.Okazuje się jednak, że dla tego podstawowego poziomu stanowiska, niektóre organizacje preferują kandydatów z doświadczeniem. Zatem firmy stawiają już na konkretne umiejętności sprawdzone w realnym działaniu. Dodatkowo, rekrutacje wyglądają coraz ciekawiej, ale to chyba już inny temat.
Jak wyglądała Wasza ścieżka od juniora do seniora? Co w Waszym przypadku wpływało na awanse?
Damian Jagodziński:
Początki w moim przypadku były dość ciężkie. Teorie i samo pisanie kodu opierałem głównie o wiedzę z uczelni i nie potrafiłem jakoś sobie poukładać w głowie o co chodzi w tym całym programowaniu. Przekładało się to oczywiście na niesatysfakcjonujące wyniki. Postanowiłem zatem sprawdzić się w praktyce. Zacząłem od drobnych prac w bardziej studenckim środowisku próbując w międzyczasie stworzyć aplikacje na własny użytek. Projekt ostatecznie porzuciłem, ale nie chciałem zmarnować ani chwili. Udało się złapać „drobne fuchy”, które realizowałem poza uczelnią.
W końcu nadszedł czas poszukiwania praktyk. Udało się więc złapać takowe w małej, polskiej firmie. I tutaj też nastąpiło zderzenie z rzeczywistością. Przeciętny student z drobnym zapleczem projektowym trafił na aplikacje javową rozwijaną od kilkunastu lat. Ogrom kodu, funkcjonalności i narzędzi był dość przytłaczający.Popełniałem masę błedów, ale nie bałem się pytać. Dzięki temu zawsze udawało się rozwiązać problem.
Z czasem błędów pojawiało się coraz mniej i byłem wrzucany na coraz głębsze wody. W końcu zaczęło mnie kusić, by spróbować pracy w korporacji i udało mi się pozytywnie przejść proces rekrutacji do Accenture. I tutaj przeżyłem kolejny szok, trafiłem do ogromnego zespołu. Przy pierwszym zadaniu zrozumiałem, że „prawdziwe programowanie zaczyna się wtedy, kiedy Google nie zwraca wyników” i to wcale nie był żart. Znów pojawiały się pytania i poczułem się jak na początku praktyk. Jednak trwało to o wiele krócej i udało się rozwiązać szereg poważnych problemów. Dostałem pierwszy wspólny, a potem samodzielny development i zaczęła się też praca blisko klienta. Na tyle blisko, że udało mi się spędzić kilka miesięcy w Dubaju.
Fakt owocnej pracy z klientem przełożył się na przyszły awans. Role się powoli odwracały, przestałem pytać, a zacząłem odpowiadać na pytania nowych członków zespołu. Podejmowałem także próby automatyzacji powtarzalnych czynności na projekcie (bo komu by się chciało ciągle klikać to samo). Zaangażowałem się także w dodatkowe aktywności: prowadziłem prelekcje i warsztaty z javy oraz baz danych. Całość przełożyła się na kolejny awans. Podsumowując: od zera do senior developera.
Dominika Piechota:
Pierwszym moim krokiem było odbycie praktyk po drugim roku studiów informatycznych (w innych technologiach). Jako Junior Java Developer zaczęłam pracować rok później, tuż przed ostatnim semestrem inżynierki. Trafiłam na stosunkowo duży projekt, gdzie pracy było wiele. Z czasem przyjmowałam na siebie coraz większe i bardziej odpowiedzialne zadania. Zaczęłam się również angażować w działania dodatkowe. Wdrażałam nowe osoby, pisałam artykuły, uczestniczyłam w szkoleniach czy konferencjach. Ciągle dokształcałam się w aspektach, które w danej chwili uważałam za najciekawsze czy najważniejsze. Była to wiedza techniczna, ale nie tylko. Uczęszczałam też na liczne szkolenia z kompetencji miękkich i wiedzę na nich poznaną starałam się wdrażać w firmie/na projekcie jak i w codziennym życiu. Tak oto po około dwóch latach dostałam awans. Oczywiście tutaj historia się nie kończy. Dalej staram się jak najwięcej uczyć, rozwijać, podejmować nowe wyzwania, a poznaną wiedzę stosować w praktyce oraz przekazywać ją dalej.
Michał Kuna:
Zaczynałem w małej polskiej firmie piszącej soft dla basenów. Z ciekawostek – pisaliśmy w totalnie customowym języku programowania zaprojektowanym przez szefa firmy. Na szczęście dość szybko zmienił mi się pracodawca i trafiłem do Accenture. Pamiętam, że zaczynałem od modyfikowania jakichś pakietów PL/SQL – takich konkretnych z kilkoma tysiącami linii kodu, pełnych logiki biznesowej. Prawdziwy “spaghetti code”. Potem już było więcej kodowania w Javie (Java 1.5). Aż nagle pewnej słonecznej środy przyszedł do mnie szef i spytał czy w sobotę mogę być w Tokio. Pewnie! Nie ukrywam, że byłem przerażony. Finalnie okazało się to jednak bardzo trafną decyzją zarówno ze strony rozwoju w firmie, jak i prywatnie. Łatwiej omawiać pewne kwestie na miejscu twarzą-twarz z klientem niż na callach. Dalej były już kolejne podróże oraz branie coraz większej odpowiedzialności za projekt oraz zespół. I to chyba oprócz szeroko pojętej wiedzy technicznej jest kluczem do awansu – chęci, dyspozycyjność, wychodzenie poza strefę komfortu oraz poczucie odpowiedzialności.
Jakie inne możliwe ścieżki rozwoju ma Java Developer?
Damian Jagodziński:
Jedną z ciekawszych ścieżek rozwoju w firmie jest zarządzanie zespołem. Poza realizacją własnych zadań, musimy odpowiednio rozdzielać zadania, angażować się we wspieranie rozwoju kolegów i koleżanek. Często trzeba też podejmować kontakt z klientem. Dla wielu taka opcja może okazać się trudna. Natomiast w każdej chwili można przecież z niej zejść.
Zdarza się, że specjaliści zmieniają projekty, a nawet firmy w poszukiwaniu nowych bodźców rozwoju. Wiele możliwości jest jednak również dostępnych niezależnie od poziomu umiejętności programisty. Jedną z nich jest własny projekt lub startup. Osobiście uważam to za jedną z najlepiej motywujących opcji, szczególnie jeśli znaleźliśmy odbiorcę lub niszę rynkową a nasz pomysł ma duże szanse na sukces.
Sami wybieramy technologie i ustalamy wymagania.Wiele firm wspiera pracowników w realizacji pomysłów na innowacje wewnątrz organizacji. Bardzo efektywną formą jest również nauczanie: prowadzenie warsztatów, kursów, prelekcji. Wymaga to mocnego zgłębienia tematu, aby należycie przekazywać wiedzę.
Dominika Piechota:
Możliwości jest wiele. Dlatego warto eksperymentować i szukać tego, co najbardziej nam odpowiada. Po pierwsze, odpowiedź na to pytanie zacznijmy od typowych ścieżek rozwoju w firmach mniejszych, większych, czy korporacjach. Jest to rozwój w stronę techniczną w roli architekta, eksperta, analityka lub w stronę zarządzania, czyli roli bardziej miękkich jak manager, team leader, scrum master.
Stanowisko nie stanowi dla nas ograniczenia. Możemy przecież przyjmować dodatkowe role np. konsultanta lub trenera (lokalnie w firmie, projekcie, jak i na większą skalę na konferencjach i innych wydarzeniach lub w firmach szkoleniowych). Popularne ostatnio jest również dzielenie się wiedzą oraz doświadczeniem poprzez tworzenie bloga, kanału na youtubie czy podcastu, albo bardziej tradycyjnie pisząc książki czy artykuły do popularnych magazynów o programowaniu. Warto też wspomnieć o kolejnej grupie możliwości skupiających się wokół prowadzenia biznesu i rozwijania własnego produktu, np. poprzez tworzenie własnej firmy, startupu, czy świadczenie usług jako freelancer.
Oczywiście są to tylko przykładowe pomysły na dalszy rozwój Java Developera, które mają na celu pokazać, jak wiele możliwości otwiera się przed taką osobą.
Michał Kuna:
Zacząłbym od tego… czy Java developer może pozostać Java Developerem? Tak może, ale osobiście polecam sprawdzanie się w innych rolach. Zawsze można zostać Team Leaderem lub Managerem, gdzie wejdziesz na kolejny poziom projektowej abstrakcji. Zamiast metod są ludzie a zamiast repozytorium są KPIe. Jak lubisz podróże zostań Konsultantem. Przynajmniej w przed-covidowych czasach pozwiedzałbyś świat. Z minusów: trzeba rozmawiać z klientem. Z plusów: klient to często przyjemny i rozrywkowy człowiek, który oprowadzi Cię po mieście. Lubisz młyn? Zostań Scrum Masterem. A jak lubisz pieniądze zostań trenerem, szkoleniowcem lub innym youtuberem. Ale tak… to ciągle ok pozostać po prostu (senior) Java Developerem.
Jakie dodatkowe kompetencje powinien posiadać Java Developer?
Damian Jagodziński:
Osobiście stawiam na kompetencje miękkie. Można być programistą z masą umiejętności, certyfikatów i specjalizacji, ale brak umiejętności pracy w zespole, problemy z komunikacją mogą przeszkodzić w osiąganiu zawodowych sukcesów. W pracy spędzamy 1/3 dnia, a więc stanowi ona ogromną część naszego życia. Zdecydowanie przyjemniej jest realizować swoje obowiązki w towarzystwie / we współpracy z ludźmi z którymi mamy pozytywne relacje. Łatwiej rozwiązać problem, gdy pomaga nam komunikatywna osoba, która w sposób przystępny pomoże nam zrozumieć istotę zadania i wskaże potencjalne sposoby na osiągnięcie celu.
Oczywiście działa to też w drugą stronę, spotykałem osoby, które potrafiły utknąć z problemem cały dzień i tego nie zasygnalizowały. Nie idźmy tą drogą. Ostatnią kwestią są wymagania rynku. Firmy doceniają osoby, które potrafią zebrać i skonsultować wymagania z klientem i przekładać je na architekturę programowania.
Dominika Piechota:
Praca programisty daleka jest od popularnych stereotypów. Czasy, w których programista siedział zamknięty w piwnicy z komputerem odeszły. Obecnie rola programisty zdecydowanie się rozwinęła, poszerzyła i wymagane od niego są również kompetencje, na pozór niezwiązane z programowaniem. Są to m.in. komunikatywność, zbieranie wymagań, współpraca w zespole, proaktywność, organizacja swojej pracy.
Coraz częściej poszukiwanymi kompetencjami programisty są umiejętność dogłębnego zrozumienia potrzeb klienta oraz zdolność do modelowania rozwiązań / projektowania produktów, które dostarczą realną wartość biznesową. Polecam przejrzenie publikacji, w których autorzy starają się przybliżyć jakim podejściem charakteryzuje się programista, o którym można powiedzieć, że jest profesjonalistą.
Michał Kuna:
Ta piwnica nie była taka straszna! Zwłaszcza w czasach z gorszym dostępem do klimatyzowanego biura. A tak na poważnie to totalnie zgadzam się, że oprócz kompetencji stricte technicznych najważniejsza jest komunikacja. Wolę mieć w zespole kogoś trochę słabszego merytorycznie, ale za to komunikatywnego, otwartego na rozmowę z zespołem. Rynek coraz częściej wymaga od nas występowania w roli konsultanta technicznego. Klient jest zachwycony, gdy rozmawia z ekspertem, który jest w stanie zaproponować gotowe, dopasowane do jego potrzeb rozwiązanie.
Co może zaskoczyć osoby wchodzące do branży IT?
Damian Jagodziński:
Głównym zaskoczeniem może być to, że o pierwszą pracę w IT wcale już nie jest tak lekko. Przy pierwszym kontakcie ze światem IT, pewną niespodzianką może być liczba wymaganych procedur i fakt, że instalacja i uruchomienie środowiska może czasem potrwać dzień lub dwa. Wbrew założeniom wielu początkujących programistów, często więcej czasu musimy poświęcić na planowanie działań dla developmentu oraz na poszukiwanie błędów w przypadku utrzymywania kodu niż na samą implementację. Świat IT nie jest jednak taki straszny. Jest wiele rzeczy, które mogą pozytywnie zaskoczyć. Bardzo pozytywną w mojej ocenie praktyką jest pozostawanie ze wszystkimi „na Ty”, niezależnie od stanowiska i pozycji w strukturze firmy. Wbrew wspomnianym wcześniej stereotypom, w tej branży pracują fantastyczni, otwarci na współpracę ludzie (którzy niekoniecznie chcą chować się z komputerem w ciemnej piwnicy).
Przy pierwszym kontakcie miałem szereg myśli, jak tu się odezwać, czy moje pytanie nie jest zbyt trywialne, o czym w ogóle team leader mówi, bo jeszcze nie rozumiałem do końca niektórych terminów. A tu pozytywne zaskoczenie! Uzyskałem ogromne wsparcie ze strony zespołu, mogłem liczyć na pomoc w każdej chwili i nigdy nie doświadczyłem spojrzenia typu „Serio? Pytasz o coś takiego?” Oczywiście prośba o pomoc kolegów nie była pierwszą czynnością, która przyszła mi do głowy przy starciu z problemem. Natomiast sama świadomość, że w razie komplikacji mam się do kogo zwrócić, stanowiła dla mnie nieocenioną wartość.
Dominika Piechota:
Po pierwsze, dla osób wchodzących do świata IT, zaskakujące może być to, że obecnie u programistów poszukuje się nie tylko kompetencji czysto technicznych, ale i miękkich m.in. tych, które wymieniłam w odpowiedzi na poprzednie pytanie.
Dodatkowo, gdy wrócę myślami do moich początków pracy w roli programistki w komercyjnym świecie IT, jednym z momentów mocno otwierających oczy, było uświadomienie sobie, że zdecydowanie więcej czasu poświęca się na utrzymanie kodu niż na jego tworzenie. Zrozumiałam wtedy jak ważne jest ciągłe dbanie o jakość produktu, który ma służyć klientowi latami. Wiąże się z tym kolejna dość zaskakująca kwestia, a mianowicie to, że przed rozpoczęciem programowania, developer stosunkowo dużo czasu poświęca na projektowanie oraz modelowanie rozwiązania.
Michał Kuna:
Nie dublując już wypowiedzi Dominiki i Damiana dodam tylko, że pewne zdziwienie u nowych osób wywołuje niby oczywisty fakt, że IT jest dla biznesu a nie odwrotnie. Młodemu programiście może wydawać się, że najnowszy framework czy modny język to jest to, czego wszyscy pragną. Jednak biznes często przedkłada stabilność nad zmianę. Inna sprawa to innowacyjność i dług technologiczny, ale to chyba temat na inną debatę. Dodatkowo zaskoczeniem może być fakt, że nie wszędzie są owocowe czwartki oraz że wśród młodego, dynamicznego zespołu znajdują się koledzy opowiadający “jak to było w wojsku”.
Zdjęcie główne artykułu pochodzi z unsplash.com.