Kiedy zaczynałem swoją karierę programistyczną w 2008 roku określenie Junior Java Developer było mało popularne. W 2020 jest ono na porządku dziennym. Jak zmieniły się oczekiwania odnośnie programistów na przestrzeni ostatnich lat. Kim jest Junior Java Developer w 2020 roku?
Jak było trochę ponad 10 lat temu?
Kiedy rozpoczynałem moją karierę zawodową w sierpniu 2008 roku świat programistów aplikacji korporacyjnych był dosyć prosty. Byłem wtedy pod koniec studiów i miałem mnóstwo wolnego czasu. Java już wtedy była moim ulubionym językiem programowania. Wiedziałem, że chcę z nią związać moją pracę.
W 2008 roku nie była tak dużo materiałów dla programistów w Internecie. Było trochę blogów zagranicznych. W Polsce moim ulubionym kanałem zbierania wiedzy był wówczas blog Jacka Laskowskiego http://jlaskowski.blogspot.com. Pamiętam, jak dziś, jak przechodziłem jego artykuły krok po kroku i instalowałem kolejne wersje wtyczek Eclipse’a w celu uruchomienia nowości.
Moja rozmowa rekrutacyjna była dosyć osobliwa. Byłem umówiony na godzinę 10:00 na początku lipca. Przyszedłem chwilę wcześniej około 9:50. O godzinie 10:07 wracałem przez Park Szczęśliwicki do domu z ustalonymi wszystkimi warunkami współpracy.
Kiedy opowiadam tę historię teraz, często słyszę słowa zaskoczenia, że jak to, że to chyba niemożliwe. Otóż jest to możliwe i kilku moich znajomych zaczynało pracę w podobny sposób.
Dlaczego tak było?
Z perspektywy lat wydaje mi się, że można to łatwo podsumować.
Ówcześnie Java Developerem typowo zostawała osoba będąca na studiach typowo informatycznych. W moim przypadku była to słynna Elka na Politechnika Warszawskiej. Studia dawały bardzo dobre podstawy programowania i algorytmiki. Kontekst na tematy związane z IT był bardzo szeroki, dużo poświęcało się holistyczne patrzenie na problemy i ich dalszą poprawną dekompozycję.
Czy kiedyś było łatwiej?
Wiele osób mogłoby pomyśleć, że tak. Przecież było mniej bibliotek, narzędzi, etc. Do wyboru zwykle pozostawało J2EE lub Spring Framework. Frontend z kolei to królestwo prototype i raczkujące jQuery. Wydaje się, że nie było tego dużo.
I tak rzeczywiście bibliotek i narzędzi było dużo mniej. Efektem tego była jednak konieczność własnoręcznego pisania wielu narzędzi, które obecnie są po prostu ogólnodostępne. Programowalo się bez Intellij Idea, git’a, Jenkinsa, etc.
Cóż, łatwiej na pewno nie było.
Jak jest teraz?
Początek 2020 roku to bogactwo możliwości. Junior Java Developer, który zaczyna swoją przygodę z komercyjnym programowaniem, jest już na starcie wspomagany olbrzymią liczbą narzędzi. Wszystkie mają na celu zapewnienie jeszcze wyższej jakości, jeszcze mniejszym kosztem. Często mają wręcz za rękę prowadzić go od punktu A do punktu B.
Kiedy zaczynałem w 2008 roku nie było takiego hype’u na bycie programistą. Sporo osób nie kojarzyło tego z wymarzoną, idealną pracą. Rozwój rynku jaki zaistniał przez ostatnie lata gruntownie zweryfikował ten pogląd.
Aktualnie ścieżka do zostania programistą bardzo się skróciła. Jeśli studiujesz kierunek związany z IT, to bardzo dobrze. Jeśli jednak nie studiujesz takiego kierunku, to droga też jest otwarta. Obecnie mamy szeroką paletę dostępnych szkół programowania, kursów, szkoleń, warsztatów, bootcampów, blogów technologicznych i wiele innych.
Mnogość możliwości jest olbrzymia. Ich jakość niestety również. Jedno jest jednak pewne, zostać junior developerem w 2020 roku jest dużo łatwiej niż kiedyś, gdzie podstawą były studia na kierunku informatycznym i bez tego nie trafiało się nawet na sensowną rozmowę kwalifikacyjną.
Co daje teraz przewagę?
Moim zdaniem aktualnie największą przewagę daje interdyscyplinarność. Przyjęło się w pewnym momencie, że programistów dzielimy na frontendowców i backendowców.
Wydaje się to całkiem zasadne. Jedni pracują nad tym, jak aplikacja zachowuje się po stronie użytkownika w UI, a drudzy czuwają nad tzw. logiką biznesową. Podział jest prosty i zrozumiały dla wszystkich.
Jest z nim tylko jeden problem. A mianowicie połączenie tych dwóch światów. To tutaj zdarza się dużo błędów i potencjalnych luk, które dosyć szybko trzeba naprawiać.
Oczywiście nie twierdzę, że ten podział jest zły. Myślę jednak, że olbrzymią przewagę daje znajomość technologii po obu stronach.
Frontendowiec nie musi umieć zaprogramować wszystkiego w Javie. Ale znajomość podstawowych mechanizmów tworzenia API i zrozumienie, że scenariusz User Story ma pod spodem rzeczywisty scenariusz w domenie danej funkcjonalności (czyli, jak to rzeczywiście działa, jak zostanie wysłany np. POST na dany URL) jest bardziej niż użyteczna.
Backendowiec, który z kolei może „nie czuć” UI, dużo traci na swoich zdolnościach. Jeśli organizacja lub dany projekt nie potrzebuje części UI to nie ma pewnie większego znaczenia. Ale jeśli jest odwrotnie, to … to przykro mi, ale powinieneś szybko zacząć nadrabiać zaległości.
Wniosek z tego jest dosyć prosty. Jeśli zaczynasz pracę w 2020 roku jako Junior Java Developer i będziesz tworzyć aplikacje korporacyjne to z dużym prawdopodobieństwem powinieneś zacząć patrzeć na aplikację w sposób bardziej holistyczny. Zacznij uczyć się tworzenia frontendów. Ta nauka nie pójdzie w las. Zdobędziesz nowe umiejętności, rozwiniesz się jako developer, a Twoja wartość istotnie wzrośnie.
Z perspektywy czasu mogę się tylko cieszyć, że pierwszym zdaniem w pracy było dla mnie znalezienie memory leaków w aplikacji Java, ale drugim napisanie systemu walidacji złożonych formularzy w UI (przy okazji od razu musiałem dokonać ewaluacji rozwiązań dostępnych w javascript).
A przyszłość?
Od wielu lat zajmując się prowadzeniem projektów i architekturą rozwiązań IT mogę powiedzieć jedno. W przyszłości najbardziej cenioną umiejętnością nie będzie to, czy umiesz napisać fragment idealnego programu. Przyszłość (jeśli nie teraźniejszość) to umiejętność rozwiązywania problemów Twoich klientów.
Dla Junior Developerów stawiających pierwsze kroki na rynku pracy w 2020 roku być może rozwiązywanie problemów klientów jest tematem bardzo odległym. Junior zwykle dostaje kawałek większego problemu i próbuje go rozwiązać z mniejszą lub większą wprawą.
Perspektywa jest tu jednak bardzo istotna. Jeśli pomaganie klientom rozumiesz jako napisanie aplikacji, to znaczy, że nad tym zrozumieniem należy jeszcze popracować.
Tutaj mały przykład. Jeden z klientów, z którym pracowałem jakiś czas temu chciał koniecznie wdrożyć pewną aplikację. Zrobił nawet warsztaty UX, zamodelował nawet UI. Wszystko wyglądało bardzo dobrze. Jednak, czy na pewno?
Akurat w tym przypadku nie do końca. Po dłuższej dyskusji okazało się, że aplikacja nie jest potrzebna. Sama w sobie byłaby fajna, ergonomiczna i wspierałaby pracę jego pracowników w kilku systemach. Jaki był problem? Aplikacja byłaby wykorzystywana 2-3 razy w ciągu miesiąca przez kilku pracowników. Okazało się, że pracę tę można delegować do jednej osoby, której całość pracy z tym związanej wahała się w granicach jednego dnia roboczego. Uważny czytelnik zauważy, że zintegrowanie kilku systemów to zwykle duże koszty w projektach IT. Okazało się więc, że projekt nie byłby w stanie obronić się pod względem kosztów przed Zarządem organizacji, bo jego koszt był niewspółmiernie wysoki w porównaniu do rzeczywiście potrzebnej pracy.
Dlatego rada dla Junior Developerów w 2020 roku byłaby następująca – patrzcie na oprogramowanie jak na jedno z narzędzi do rozwiązywania problemów, nie jako rozwiązanie samo w sobie.
Podsumowanie
Być może w tym tekście pojawiło się kilka rzeczy, które dla Junior Developerów startujących swoje kariery wydaje się dziwne, czy też niezrozumiałe.
Moje przemyślenia wynikają z ponad 10 lat obserwowania rynku IT i tego jak się zmienia w Polsce i na świecie. Z tej perspektywy kluczowy wydaje mi się rozwój szerokiego wachlarza kompetencji programistycznych.
Powód jest tutaj jasny – różne elementy systemu, czy frontend, czy też backend, wykorzystują różne techniki, a ich poznawanie wzbogaci warsztat każdego programisty. Umiejętność realizacji wymagań w sposób end-to-end jest bardzo pożądana i sprawia, że Ty, jako Junior Developer zyskujesz dużo wyższą wartość, bo Twoje umiejętności rozwiązywania problemów rosną.
Patrzenie holistycznie na oprogramowanie jest bardzo ważne. A pytanie o to, czy ten kod jest rzeczywiście do czegoś potrzebny, czy ta aplikacja rzeczywiście przynosi realnie wartość, jest bardzo zasadne w 2020 roku.
Jeśli więc wkraczasz teraz, w 2020 roku, na rynek jako Junior Developer to pamiętaj, patrz holistycznie na problemy, które rozwiązujesz. Możesz na tym tylko zyskać!
Hmmm tak komunikacja jest elementem kluczowym wspólny jezyk pomiędzy biznesem a dweloperem może dużo wyjaśnić.
W Jaki sposób patrzeć holistycznie??? to przychodzi z pewną wprawą
Wprawa, doświadczenie, to jedno. Ważna jest umiejętność zadawania pytań, które wydobywają esencję problemu. Doświadczenie pomaga, bo można ich wtedy zadać mniej.