Kariera

Kulisy pracy w IT: jak wygląda praca Java Developera?

Zdjęcie Marcina Dziadonia

Programiści Java to reprezentanci jednego z najbardziej perspektywicznych stanowisk na rynku IT. Warto więc wziąć pod uwagę możliwość związania kariery zawodowej z tą technologią – pozwala nie tylko na ciągły rozwój, ale zapewnia również atrakcyjne warunki finansowe i możliwość udziału w różnorodnych projektach. O kulisy pracy Java Developera zapytaliśmy Marcina Dziadonia – Java Technical Leadera w Britenet.

Jak wygląda na co dzień praca Java Developera i na czym dokładnie polega?

To, jak wygląda praca Java Developera, zależy w dużej mierze od specyfiki projektu, w którym uczestniczy. Mam tu na myśli to, co ma być produktem końcowym, jakie technologie są wykorzystywane, jaki jest proces wytwarzania oprogramowania, na jakim projekt jest etapie, jaki zespół mamy do dyspozycji i inne. Gdybym miał wymienić standardowe czynności wykonywane na co dzień przez Java Developera, zaliczyłbym do nich:

- Projektowanie oraz implementację rozwiązań technicznych odpowiadających na potrzeby biznesowe
- Implementację testów sprawdzających poprawność napisanego kodu 
- Code review, czyli wzajemne sprawdzanie jakości napisanego kodu
- Współpracę z analitykami w celu doprecyzowywania wymagań biznesowych
- Współpracę z testerami w celu zapewnienia rozwiązań o wysokiej jakości
- Współpracę z innymi programistami w zespole projektowym 
- Naprawianie błędów w oprogramowaniu 
- Uczestnictwo w wycenach pracochłonności planowanych prac 
- Uczestnictwo w różnego rodzaju spotkaniach projektowych

Jakie są największe wyzwania/problemy w codziennej pracy?

Tutaj podobnie wiele zależy od specyfiki konkretnego projektu, jak również od wiedzy i doświadczenia, które posiada programista oraz jego indywidualnych predyspozycji. Wysoki poziom wiedzy i doświadczenia nie oznacza, że pracownik uniknie wyzwań. Poprzeczka po prostu przesuwa się wyżej. To, co jest wyzwaniem dla Junior Developera, nie będzie zapewne stanowiło większego problemu dla Seniora. Mniej doświadczony programista musi przejść swoją drogę, aby zdobywać kompetencje w coraz bardziej złożonych zagadnieniach. Każde wyzwanie niesie naukę, która pozwala osiągać coraz wyższy poziom. Wyzwania nigdy się jednak nie kończą, ale to właśnie sprawia, że ta praca jest tak ciekawa. 

Nie sposób tu wymienić wszystkich dużych wyzwań, które można napotkać. Jeśli miałbym natomiast wskazać te typowe, które mogą przysparzać sporo problemów w codziennej pracy, zaliczyłbym do nich:

- Niedoprecyzowane wymagania biznesowe
- Błędne zrozumienie wymagań biznesowych 
- Ciągle zmieniające się wymagania 
- Brak wystarczającej wiedzy technicznej potrzebnej do realizacji zadania 
- Brak odpowiedniego przepływu informacji w zespole
- Chaotyczny sposób prowadzenia projektu
- Zła organizacja pracy
- Brak decyzyjności 
- Rywalizacja zamiast współpracy w zespole

Jakie należy mieć predyspozycje/umiejętności do pracy na takim stanowisku?

Rzeczywiście są pewne predyspozycje, które powinna posiadać osoba chcąca zajmować się programowaniem. W mojej ocenie do najważniejszych można zaliczyć:

- Umiejętność logicznego i analitycznego myślenia – jest bardzo ważna, ponieważ pozwala na dostrzeganie części składowych danego zagadnienia, tego, jakie są zależności między nimi oraz jakie problemy mogą się pojawić.

- Dociekliwość i chęć ciągłego rozwoju – w pracy programisty każdy dzień przynosi nowe wyzwania, które mogą wymagać zastosowania innego podejścia. Dociekliwość pozwala dobrze rozeznać potrzeby i dobrać dla nich odpowiedni sposób rozwiązania. Chęć rozwoju i systematyczne poszerzanie swojej wiedzy daje szerszy wachlarz możliwości, które dostrzegamy chcąc rozwiązać dany problem. 

- Zaangażowanie i determinacja – proces wytwarzania oprogramowania jest często bardzo czasochłonny, dlatego zaangażowanie i determinacja to wysoce pożądane cechy u programisty. 

- Dokładność i dbałość o szczegóły – dzięki temu tworzone rozwiązania są dużo lepszej jakości oraz mniej narażone na błędy.

- Pasja – w każdym zawodzie najlepsi są ci, którzy podchodzą do niego z pasją. Nie inaczej jest z programowaniem. Pasja jest motorem napędowym do tego, aby cały czas się rozwijać, być coraz lepszym w tym co się robi oraz czerpać z tego satysfakcję.

Myślę, że osoba z takim pakietem predyspozycji już na starcie ma bardzo duże szanse, aby w przyszłości stać się wysokiej klasy specjalistą w swojej dziedzinie.

Czy są jakieś niestandardowe umiejętności lub doświadczenia („z życia"), które przydały Ci się w pracy na tym stanowisku?

Myślę, że bardzo przydaje się odporność na stres. Czasem zdarza się, że w projekcie „dokręcana jest śruba”, bo gonią terminy lub pojawiają się jakieś napięcia. Umiejętność zachowania dystansu i chłodnego spojrzenia na sytuację pozwala podejść do tego na spokojnie i racjonalnie reagować, podczas gdy nadmierny stres może sprawiać, że nasza praca nie przynosi efektów, a my tylko niepotrzebnie się stresujemy.

Cenną umiejętnością jest też wychodzenie z inicjatywą. Gdy widzimy, że można zrobić coś lepiej, efektywniej czy zastosować inne podejście, wtedy warto o tym mówić. Takie osoby są bardzo wartościowe dla zespołu projektowego. 

Niewątpliwie przydatne są również wyobraźnia i umiejętność planowania. Gdy dostajemy jakieś większe zadanie, należy użyć wyobraźni i zaplanować, jakie etapy będzie trzeba zrealizować, aby uzyskać zamierzony efekt końcowy. Dobry plan to połowa sukcesu. Pozwala też łatwiej przewidzieć potencjalne ryzyka i lepiej oszacować pracochłonność.

Projekty informatyczne realizowane są w zespołach. Dlatego niezwykle ważna jest też dobra komunikacja, która pozwala na efektywniejszą pracę. Dla przykładu, lepiej zapytać bardziej doświadczonego kolegi, który nakieruje nas na rozwiązanie, niż spędzić kilka dni nad samodzielnymi poszukiwaniami. Oczywiście można też przesadzić w drugą stronę, więc warto zachować umiar.

Jak wspominasz proces rekrutacji?

Uczestniczyłem już w wielu rekrutacjach i mam na tym polu nieco doświadczenia. , Firmy mają różne podejścia i każda dopasowuje proces rekrutacji do swoich potrzeb. Jeśli chodzi o rekrutację do Britenet to poszła mi akurat dość sprawnie, choć w trakcie było też oczywiście trochę stresu. Po kontakcie z działem HR i rozmowie technicznej, szybko zapadła decyzja o tym, że firma chce nawiązać ze mną współpracę – zanim jeszcze zdążyłem przekonać do siebie potencjalnego klienta. Rozmowa u klienta była podzielona na trzy półgodzinne części: rozmowę techniczną, umiejętność kodowania oraz rozwiązywanie zagadek logicznych. Mimo że minęło ponad siedem lat, do dzisiaj pamiętam te zagadki! To z pewnością była ciekawa forma sprawdzenia umiejętności logicznego myślenia. Feedback po rozmowie był pozytywny, więc na koniec pozostało mi jeszcze podjęcie decyzji o przeprowadzce do Warszawy i kontynuowanie tu swojej pracy.

Co doradziłbyś osobom biorącym udział w rekrutacji na stanowisko Java Developera – o czym z Twojej perspektywy warto pamiętać i na co warto się przygotować?

Na pewno zalecałbym poświęcenie czasu na usystematyzowanie swojej wiedzy przed rozmową. Takie przygotowanie doda nam pewności siebie i sprawi, że zmniejszymy ryzyko porażki na prostym pytaniu. 

Druga sprawa to umiejętność opowiedzenia o sobie, swoim doświadczeniu, wykorzystywanych technologiach, ciekawych wyzwaniach zawodowych czy rolach, jakie pełniliśmy w zespole. To również warto sobie odświeżyć, aby nabrać swobody w trakcie rozmowy o swojej zawodowej przeszłości.

Nie warto koloryzować w CV i wymieniać tam wszystkich technologii, o których słyszeliśmy – lepiej podać tylko te, których faktycznie używaliśmy i mamy z nimi pewne doświadczenie. Istnieje ryzyko, że takie koloryzowanie zostanie zdemaskowane podczas rozmowy, a to z pewnością nie zadziała na naszą korzyść. 

Ważna jest też umiejętność opanowania stresu, który może motywować, ale może też zadziałać niekorzystnie na to, jak wypadniemy podczas rozmowy. Jeśli pierwszy raz podchodzimy do rekrutacji albo robimy to po długiej przerwie, to warto przejść najpierw kilka rozmów „na przetarcie szlaków”, zanim wybierzemy się do firmy, na której nam najbardziej zależy. Z reguły za którymś razem stres jest już dużo łatwiej opanować i jesteśmy bardziej odważni. Większa liczba rozmów to też szansa na porównanie opcji, które mamy do dyspozycji.

Jeśli nie jesteśmy pewni odpowiedzi na jakieś pytanie, to nie poddawajmy się od razu, spróbujmy powalczyć i wydedukować poprawną odpowiedź, może to zostać docenione przez osobę rekrutującą. Warto jednak pamiętać, aby odpowiadać na temat i z zastosowaniem wiedzy, którą posiadamy.

Który z projektów w Britenet, w którym brałeś udział, okazał się dla Ciebie najbardziej rozwijający? 

W każdym projekcie miałem okazję nauczyć się czegoś nowego i zdobyć cenne doświadczenia. Myślę, że jednym z ciekawszych jest mój obecny projekt w Centrum GOVTECH Kancelarii Prezesa Rady Ministrów. Praca jest dość dynamiczna i jest wiele produktów, którymi się zajmujemy. Do tego realizowane aplikacje są przydatne społecznie, co daje mi dodatkową motywację i satysfakcję. Mam też możliwość współpracy z wieloma doświadczonymi specjalistami, od których mogę się wiele nauczyć. Nie brakuje też wyzwań technologicznych takich jak choćby realizacja efektywnego wyszukiwania danych przy pomocy narzędzia Elasticsearch, nad którym miałem okazję ostatnio pracować.

Przykładowe aplikacje, przy których miałem okazję pracować w ostatnim roku: 

- Akredytacje – aplikacja przeznaczona dla redaktorów, dająca im możliwość rejestrowania się na konferencje prasowe

- Susza – aplikacja przeznaczona dla rolników i urzędników dająca możliwość składania wniosków suszowych i wspierająca proces ich przetwarzania

- SEPIS – aplikacja przeznaczona dla Sanepidu umożliwiająca rejestrację i obsługę przypadków chorób zakaźnych w Polsce