Wywiady

Programowanie jest sztuką bardzo dynamiczną. Wywiad z Łukaszem Białym, Java Developerem

programista java (1)

Java utrzymuje swoją dominującą pozycję w świecie rozwoju oprogramowania już od wielu lat. Uniwersalność, wsparcie społeczności oraz niezawodność tego języka przyciąga wielu programistów szukających swojej ścieżki. W rozmowie z Łukaszem Białym, programistą Java w intive, zapytaliśmy o własne doświadczenia dotyczące swojej pracy.

Dlaczego wybrałeś akurat Javę?

Łukasz Biały profilowe

Właściwie był to całkowity przypadek. Moją karierę w IT zacząłem od stanowiska programisty Cobola w Volvo IT. Plan był taki, aby stworzyć nowy zespół, który miał zastąpić programistów z Francji, zanim ci odejdą na emeryturę. 

Jednak w 2008 roku przyszedł kryzys i firma zrezygnowała z tego pomysłu. W tamtym czasie kończyłem studia na PWR i dopiero uczyłem się Javy. Mimo to udało mi się przejść wewnętrzną rekrutację i przekwalifikować się na nową dla mnie technologię oraz stać się Java Developerem.

Swoją przygodę z programowaniem zacząłeś od języka Cobola, masz również doświadczenia ze Scalą i Pythonem. Który z języków był dla ciebie najbardziej wymagający?

Cobol jest bardzo niszowym/egzotycznym językiem, a trudność jego opanowania w głównej mierze sprowadza się do poznania całego ekosystemu z/OS. Dodatkowo jest bardzo niewiele materiałów i pomocy dostępnych w internecie. W tamtym czasie nie istniało żadne nowoczesnego IDE, a uczyć się programować można było, jedynie mając dostęp do prawdziwej maszyny, od IBM poprzez terminal.

Pomimo to, to Scala okazała się dla mnie bardziej wymagająca. Wraz z nauką tego języka, uczyłem się programowania funkcyjnego, a to wymagało ode mnie poprzestawiania sobie w głowie pewnych nawyków, utrwalanych wcześniej przez lata. Każdy, kto ukończył kurs Martina Odesky’ego na courserze wie jak wymagający i ciężki był to materiał (zwłaszcza na początku). 

Czy Twoim zdaniem umiejętność programowania w kilku technologiach jest istotne na dzisiejszym rynku pracy? Czy każdy programista powinien być “poliglotą technologicznym”? 

Jak w wielu przypadkach najtrafniejszą odpowiedzią jest: “to zależy”. Znajomość wielu języków na pewno poszerza horyzonty i w dobie programowania w chmurze i mikro serwisów jest jak najbardziej cenione. Pozwala to dobrać odpowiednie narzędzie do konkretnego problemu. Dobrym przykładem mogą być również lambdy na AWS. Tak zwany “zimny start” jest o wiele szybszy w przypadku NodeJs lub Pythona w porównaniu do C# lub Javy. Jeśli performance jest naszym głównym celem, wtedy warto rozważyć, czy nie użyć innego języka.

Znajomość kilku technologii przydaje się również w przypadku projektów, gdzie przepisuje się stare aplikacje na nowoczesne rozwiązania. Sam zostałem kiedyś zatrudniony stricte pod konkretny projekt, gdzie tworzyliśmy nową aplikację w Javie, która miała zastąpić swojego przodka napisanego w cobolu.

Myślę jednak, że nie każdy programista powinien być poliglotą. Dobry specjalista w jednej technologii również bez problemu znajdzie pracę. Osobiście uważam, że kiedy dobrze poznaliśmy choć jedną technologię, nie będzie ogromnym wyzwaniem, aby nauczyć się innej, o ile jest się odpowiednio zmotywowanym.

Podsumowując, znajomość kilku technologii na pewno zwiększa szanse na znalezienie ciekawego projektu, bo spełniamy kryteria większej ilości ogłoszeń.Taka wiedza jest doceniana przez niektórych pracodawców, co można zauważyć w ogłoszeniach o pracę. Coraz częściej możemy znaleźć oferty, gdzie poszukiwani są ludzie biegli w co najmniej 2 językach. Mimo wszystko jest to moim zdaniem wartość dodana, nie “must have”.

Do tej pory miałeś okazję brać udział w projektach dla tak dużych firm, jak Volvo, Audi, BMW, Intel, Blackberry. Czy praca dla tak znanych marek różni się bardzo od tej na rzecz mniej popularnych firm? Czy podczas pracy coś szczególnie zapadło Ci w pamięć?

Kluczowy dla mnie jest konkretny projekt, do którego trafię i ludzie, z którymi będę pracować. Zasadniczo praca jest bardzo podobna. Najczęściej duże firmy mają wypracowane pewne procesy/standardy co ma swoje wady i zalety. Z jednej strony dostajemy dostęp do profesjonalnych narzędzi i produktów, na które mogą pozwolić sobie tylko najwięksi gracze. Stack technologiczny jest zazwyczaj dobrze udokumentowany i znany co docenią początkujący programiści. Z drugiej strony to rozwiązanie może nas ograniczać i blokować nasz rozwój, a czasem i powodować frustrację.

Do tego należy dodać podział ról. Zazwyczaj w dużych firmach zajmujesz się zadaniem zgodnym z twoim doświadczeniem. W mniejszych projektach można często dostać zadanie nie do końca związane z programowaniem. Dzięki temu można poszerzyć swoje kompetencje o nowe umiejętności, które często są wykonywane przez kogoś na innym stanowisku jak: DevOps, DB admin, Security Specialist. 

Pracując przy start up’ie czułem się trochę bardziej związany z produktem. Traktowaliśmy go jak nasze dziecko i całemu zespołowi zależało, aby był jak najlepszy. 

Jakich narzędzi i frameworków Java używasz najczęściej w swojej pracy i dlaczego?

W Javie najczęściej korzystam ze Springa, ze względu na jego dominację na rynku. Jest to narzędzie sprawdzone i doskonale znane na całym świecie. Jeśli chodzi o Pythona to FastApi najbardziej mi się spodobał, ze względu na małą ilość kodu i rozwiązania podobne do tych dostępnych w Javie. Jeśli chodzi o narzędzie to zdecydowanie Intelli J, który de facto może zastąpić wiele innych aplikacji jak klienta bazy danych, postmana itp. 

Niestety wielu programistów (w tym i seniorów) nie zna dobrze funkcji IDE i wykorzystują zaledwie pewnie około 30% tego narzędzia. Wielokrotnie zdarzało mi się użyć jakiegoś skrótu klawiszowego lub funkcji, po czym następowała chwila konsternacji i komentarz w stylu: “To tak się da?” W ramach jednego community miałem kiedyś nawet wystąpienie zatytułowane 100 tricks in Intelli J. Podobne można znaleźć na Youtubie i gorąco polecam każdemu zapoznanie się z takim materiałem.

Czy masz jakieś własne praktyki w programowaniu w języku Java, które ułatwiają i usprawniają Twoją pracę?

Nie mam autorskiej i stałej praktyki. Programowanie jest sztuką bardzo dynamiczną, a każdy specjalista zmuszony jest do ciągłego uczenia się i samodoskonalenia. Na początku swojej drogi zawodowej praktykowałem TDD i polecam to każdemu juniorowi. Człowiek uczy się pisać kod w taki sposób, aby można go było łatwo przetestować. 

Z biegiem czasu jednak przestałem go stosować na co dzień i aktualnie TDD stosuję prawie wyłącznie do Bugów. Podobne podejście reprezentuje wielu moich kolegów, a znanych mi programistów, którzy zawsze używają TDD mogę policzyć na palcach jednej ręki. 

Jakie rady miałbyś dla początkujących Java Developerów, którzy chcą poprawić swoje umiejętności i znaleźć pierwszą pracę?

Nauka, nauka i jeszcze raz nauka. Jako podstawę zawsze polecałem 2 książki: 

“Clean Code” i “Effective Java”. Potem już samodzielnie dobierzemy ciekawe dla nas materiały. Zawsze polecam również sprawdzanie kodu i dokumentacji. Na rynku aktualnie jest bardzo wielu “koderów”, ludzi, którzy potrafią coś napisać, ale nie mają pełnej świadomości jak to działa “pod spodem”.

Nie warto wierzyć także w kursy typu “w pół roku zostaniesz programistą Java”. W Stanach Zjednoczonych podobne przedsięwzięcia skończyły się pozwami zbiorowymi. U nas niestety jeszcze jest sporo firm, które moim zdaniem oszukują potencjalnych kandydatów, składając obietnice nie do spełnienia. Niestety nic nie zastąpi czasu i ciężkiej pracy, jaką trzeba włożyć w naukę

Nie bójcie się powiedzieć na rozmowie, że czegoś nie wiecie lub nie mieliście z czymś do czynienia. To oszczędza czas rekrutacji i stawia w dobrym świetle wasze umiejętności komunikacyjne. Starajcie się być na bieżąco z aktualnymi trendami na rynku. Zawsze warto przynajmniej wiedzieć, co aktualnie jest stosowane i jakie są plusy i minusy danego rozwiązania.


Łukasz Biały. Absolwent wydziału Elektroniki Politechniki Wrocławskiej. Od 2008 roku programista specjalizujący się w architekturze i rozwiązaniach chmurowych. Pierwsze kroki stawiał jako deweloper Cobola, później zmienił specjalizację na Javę, której trzyma się do dziś. Zna również scale i pythona. Pracował zarówno w start up’acha jak i znanych Software House’ach (Capgemini, Intive). Brał udział w projektach dla międzynarodowych firm takich jak Volvo, Audi, BMW, Intel, Blackberry, WindRiver. 2 lata „spędził na wygnaniu” w Credit Suisse. Od 2018 roku członek programu „Train The Trainer” oraz weryfikator techniczny.

Zdjęcie główne pochodzi z unsplash.com.

Redaktor współpracująca

Od trzech lat pracuje jako copywriterka, aktualnie zajmuje się tworzeniem treści dla branży IT oraz militarnej. Miłośniczka robienia szczegółowego researchu.

Podobne artykuły

[wpdevart_facebook_comment curent_url="https://geek.justjoin.it/wywiad-z-lukaszem-bialym-java-developerem/" order_type="social" width="100%" count_of_comments="8" ]