Junior Java Dev i Spring - czyli jakie technologie są wykorzystywane przy komercyjnych projektach

0

Witam,
Chciałbym się dowiedzieć od użytkowników mających jakieś komercyjne doświadczenie, jaki kierunek nauki obrać. Chodzi o to, że wraz z postępami w nauce, cały czas odkrywam nowe moduły Spring'a, dzięki którym okazuje się, że większość pracy można wykonać automatycznie. W moim przypadku wygląda to mniej więcej tak java ee -> spring mvc -> spring boot -> spring data. W obecnej chwili pracuję nad restowym api i natknąłem się na spring data rest, dzięki któremu praktycznie całe podstawowe api można wygenerować na podstawie klas modelu. Zastanawia mnie, jak daleko to zmierza i na jakich technologiach opierać swoje nowe projekty. Zdarzyło mi się gdzieś przeczytać, że "używanie spring boota jest bez sensu bo wszystko robi za Ciebie a w pracy to różnie to bywa". Jak to jest w rzeczywistości?
Przy okazji chciałbym również zapytać o technologie niezwiązane z samą javą. Spotykam się z wypowiedziami, że "bez znajomości angulara/junit/XYZ to nie da rady". W tym temacie to właściwie tyle opinii ile osób, więc to powoduje dodatkowy mętlik. Za kilka miesięcy chciałbym spróbować znaleźć pracę jako junior java dev, więc wszelkie odpowiedzi są dla mnie istotne. Z góry dziękuję za pomoc.

1

Jeśli chodzi o Springa, to najważniejsze według mnie jest Core i MVC, a jeśli chodzi o resztę to w sumie każda w miarę sensowna biblioteka ma teraz jakieś wsparcie i integrację w Springu

Jeśli chodzi o Spring Boota - nie uważałbym tego za złe, nowe projekty są tworzone często właśnie ze spring bootem. W pracy widziałem także jeden projekt oparty o spring boota.

Okołojavowe technologie - na pewno Maven, Git, REST, i trochę basha/shella (naprawdę w stopniu podstawowym)

1

Spring Data REST wystawi Ci API Restowe, ale to będzie czysty CRUD.
IMO trzeba znać:
IoC, AOP, ORM/Data JPA, Web. Na początek styknie

4

Sam osobiście mierzyłem się z podobnymi pytaniami, gdy się przekwalifikowywałem półtora roku temu.
Odkrywając piękne frameworki weź pod uwagę, że nie każdy projekt pracuje na najnowszych technologiach (a wręcz jest takich mało)
Mogę ci wylistować technologie, które z mojej perspektywy uważam za wystarczające, by bez wstydu szukać pierwszej pracy:

  • maven - niezbędne minimum, czyli zarządzanie zależnościami. Przypuszczam, że to już za tobą, skoro używasz Springa
  • JUnit i Mockito - pisać testy będziesz z całą pewnością, a JUnit bez Mockito jest jak armata bez amunicji; możesz śmiało pominąć Springowe testy z użyciem mockMvc oraz budowaniem kontekstu testu
  • Spring - do etapu naklepania prostej webowej, RESTfulowej aplikacji która przyjmuje żądnia, zwraca/modyfikuje/chowa je w bazie; możesz śmiało pominąć uwierzytelnianie za pomocą Spring Security
  • JPA - oprócz zwykłego cruda, przydałoby się opanować bardziej skomplikowane zapytania za pomocą Criteria i Query. Ponadto mnie bardzo rozwinęła walka z bazą danych za pomocą JDBC
  1. Spring Boot od Springa różni się głownie tym, że trywializuje konfigurację wszystkiego. Najprawdopodobniej jako junior nie będziesz konfigurował niczego, więc moim zdaniem możesz śmiało używać Spring Boota i zainwestować ten czas w coś o wyższym priorytecie. Osobiście uczyłem się na czystym Springu i uważam to za błąd.

  2. Spring Data REST, czy nawet sam Spring Data niesamowicie ułatwia życie (lenistwo to cnota) i niewątpliwie będzie plusem na rozmowie. Tylko używanie tych frameworków sprawi, że przestaniesz używać JPA. Jeśli dobrze się czujesz z JPA, możesz przyspieszyć sobie w ten sposób klepanie nowych projektów.

  3. Jeśli chodzi o frontendowe technologie, to ci nie pomogę. Mam zdiagnozowaną alergię na JavaScript.

Podczas nauki traktowałem czas jako zasób, który inwestuję. Zastanów się, jaka inwestycja przyniesie ci jednocześnie jak najszybszy i jak największy zysk (w postaci rozwoju osobistego), a która jest wisienką na torcie i ułóż sobie kolejkę priorytetową.

Pozdrawiam
Tyvrel

PS:
W trakcie nauki polecam ci używanie Lombok'a. Nie sądzę, byś korzystał z niego w przyszłej pracy, ale eliminuje on mnóstwo boilerplate code i przyspieszy klepanie

0

JUnit i Mockito - pisać testy będziesz z całą pewnością, a JUnit bez Mockito jest jak armata bez amunicji; możesz śmiało pominąć Springowe testy z użyciem mockMvc oraz budowaniem kontekstu testu

Otóz nie, Spock >>>>>>>>>> JUnit

0

W trakcie nauki polecam ci używanie Lombok'a

Lombok = rak, bo robi cuda utrudniające debugowanie. Jeśli chcesz coś w tym stylu to lepiej Immutables. Daje bardzo podobne możliwości, ale robi to w czasie kompilacji (tzn generuje ci po prostu rozszerzone klasy) przez co nie ma problemów z serii hmm jak mam postawić breakpoint w metodzie którą generuje lombok?.

1 użytkowników online, w tym zalogowanych: 0, gości: 1