Poznaj nas bliżej: Barbara Tokar o roli Java Developera
Za sukces naszych realizacji odpowiada wiele zespołów, w tym java developerzy, którzy na co dzień dokładają wszelkich starań aby oprogramowanie działało bezbłędnie.
To oni stoją na straży utrzymywania i aktualizacji stron oraz aplikacji z których na co dzień korzystamy. Jak wyglądają kulisy pracy w zespole java developerów? Opowiada Barbara Tokar.
Jak długo jesteś na pokładzie e-point? Jakie jest Twoje aktualne stanowisko?
Przygodę z e-point rozpoczęłam w 2014 roku jako junior java developer. Trafiłam do zespołu zajmującego się rozwojem i utrzymaniem wewnętrznego CMSa Active Content. Wciąż pracuję w tym samym zespole pełniąc rolę expert developera i team leadera.
Na czym polegają Twoje codzienne obowiązki?
Głównym zadaniem java developera jest implementacja funkcjonalności zgodnie z określonymi założeniami biznesowymi oraz dbanie o wytwarzane oprogramowanie. W ramach utrzymania wdrożonych aplikacji dochodzi też tzw. obsługa serwisu, często wiążąca się z analizą nietrywialnych błędów. Do moich obowiązków należy również konfiguracja i opieka nad środowiskami utrzymywanych aplikacji oraz zarządzanie aktualizacjami. Developer zajmuje się także tworzeniem narzędzi wspomagających i ułatwiających codzienną pracę zespołu oraz dba o ich prawidłowe działanie i konfigurację. Nierzadko ściśle współpracuje z osobami technicznymi po stronie klienta. Nie jest to obligatoryjne, ale w moim przypadku to stały element pracy.
Z kolei do obowiązków wynikających z roli team leadera, należy przede wszystkim odpowiedzialność za pracę zespołu. Czyli planowanie i przydział zadań dopasowanych do możliwości każdej osoby, pomoc w trakcie realizacji, weryfikacja rezultatów, a także podejmowanie decyzji projektowych czy alokacja do realizowanych projektów. Nieodłącznym elementem roli lidera jest weryfikacja postępów oraz wywiązywania się z powierzonych obowiązków.
Na co dzień łączę obowiązki wynikające z obydwu ról.
Które umiejętności techniczne są kluczowe, aby zostać java developerem?
Przede wszystkim dobra znajomość języka Java oraz relacyjnych baz danych. Przy tworzeniu aplikacji webowych warto poznać Spring i Hibernate, przyda się również wiedza z zakresu JavaScript, języków szablonowania oraz podstawy HTMLa. Dodatkowo potrzebna jest podstawowa znajomość wybranego serwera aplikacyjnego, na którym będzie działać aplikacja. Ważna jest znajomość wzorców projektowych, wiedza z zakresu algorytmów i struktur danych i zasad pisania czystego kodu, tzw. „clean code”. Nie zapominajmy o znajomości narzędzi, takich jak maven i gradle, do budowania i zarządzania zależnościami w projekcie, o systemie kontroli wersji (np. git) czy ulubionym IDE.
A co z umiejętnościami miękkimi?
Umiejętności miękkie są równie ważne. Niezbędna jest tu umiejętność analitycznego myślenia, rozwiązywania problemów, dobra organizacja pracy, chęć nauki i rozwoju, a także samodzielność i kreatywność.
Do realizacji większości projektów potrzebne jest zaangażowanie kilku różnych ról, także po stronie klienta. Od tego jak wygląda współpraca zależy jej pozytywny efekt, dlatego konieczna jest umiejętność pracy w zespole, słuchania drugiej strony i otwartość na jej potrzeby.
Ostatnia, kluczowa według mnie, jest zdolność w dostosowywaniu się do zmian, które są nieuniknione, jeśli chce się zostać w branży na dłużej.
Pamiętasz moment, w którym postanowiłaś zostać developerem?
Przygodę z programowaniem zaczęłam w liceum - od prostych zadań pisanych w Pascalu. Już wtedy wzbudziło to moje zainteresowanie. Kiedy poznałam programowanie obiektowe i język Java stwierdziłam, że to jest coś, czym chciałabym się zajmować. Poza tym możliwość tworzenia aplikacji, które służą innym daje ogromne poczucie satysfakcji.
Z jakimi technologiami pracujesz?
Głównie jest to Java razem z bibliotekami i frameworkami usprawniającymi tworzenie aplikacji webowych, takich jak Spring czy OneWeb (autorski framework e-point), a także technologie front-endowe i relacyjne bazy danych. Dodatkowo korzystam ze skryptów bash i python, git’a, jako systemu kontroli wersji oraz gradle’a do budowania i zarządzania zależnościami w projektach. Tworząc aplikacje webowe pracuję również z serwerami aplikacyjnymi i serwerami HTTP – dobór konkretnych rozwiązań zależy od wielu czynników, które należy rozważyć indywidualnie przy każdym projekcie.
Niektóre technologie i narzędzia, z którymi pracuję pochodzą z obszaru devops. Należą do nich m.in. docker, narzędzia Continuous Integration (CI), Continuous Delivery (CD) czy narzędzia służące do monitorowania i zarządzania logami komponentów systemu.
Co poleciłabyś do nauki i treningu osobom, które chcą rozpocząć przygodę z Javą?
Jeśli chodzi o źródła wiedzy, możliwości jest dużo. Na rynku jest wiele książek, tutoriali czy kursów internetowych o różnym stopniu zaawansowania. Chcąc podszkolić się w konkretnych zagadnieniach można skorzystać z szeroko dostępnych zadań online. Zdobytą wiedzę można wykorzystać podczas pisania aplikacji na własne potrzeby.
Z książek, które warto przeczytać mogę polecić m.in.:
- „Thinking in Java” Bruce Eckel,
- seria książek „Head First…”, m.in. „Head First Java”, „Head First Design Patterns”, „Head First Object-Oriented Analysis and Design”,
- „Java Core” i „Java Core Advanced Features” Cay S. Horstmann, Gary Cornell,
- „Java Concurrency in Practice” Brian Goetz,
- „Effective Java” Joshua Bloch,
- „Test Driven Development” Kent Beck,
- „Clean Code” i „Clean Architecture” Robert C. Martin,
- „Spring in Action” Craig Walls.
Na koniec może masz jakieś rady dla osób, które są na początku przygody z Javą?
Na początek opanuj podstawy języka Java, dużo czytaj i programuj. Dobrym pomysłem jest stworzenie własnej aplikacji, przy tworzeniu której zdobędziesz więcej doświadczenia. Warto też poświęcić czas na poznanie podstawowych narzędzi, z których korzysta się w trakcie codziennej pracy, takich jak git, gradle i przede wszystkim dobrze poznaj IDE, w którym będziesz programować. Korzystaj z możliwości praktyk czy stażu, bo praktyka jest bardzo ważna.