Jakie narzędzia / biblioteki Java Developer powinien znać

0

Jakie waszym zdaniem narzędzia / biblioteki (lub inne rzeczy) solidny Java Dev powinien znać albo warto żeby znał?
Możecie wymienić dosłownie wszystko co przyjdzie wam do głowy i często używacie w praktyce mogą to być biblioteki, narzędzia, polecenia w konsoli,
edytory, narzędzia webowe, wzorce (tutaj przydałoby się np. konkretnie jaki i dlaczego a nie tak ogólnie), jakieś triki w Java albo nawet konkretne
metody klas, które np. są mało znane a bardzo przydatne.

Może zacznę i wymienię kilka rzeczy przydatnych z mojej perspektywy:

  • git
  • docker i docker-compose (np. do stawiania środowiska developerskiego lokalnie)
  • maven (budowanie i zarządzanie zależnościami)
  • vim / nano (przydatne do edycji plików tekstowych na serwerze bez UI)
  • polecenia linuksowe (działają szybko i można je ze sobą łączyć, często się przydają)
  • Debugger
  • IntellJ Idea
  • Optional, Either
  • curl
  • Postman
  • Junit
  • Spring, Hibernate (warto znać chociażby z uwagi na to, że pojawiają się w większości ogłoszeń o pracę)
1

Najważniejsze to żeby znał Javę xd serio.

vim / nano (przydatne do edycji plików tekstowych na serwerze bez UI)

No okej, załóżmy że jestem javowcem i nie znam tego, a muszę edytować pliki tekstowe na serwerze bez UI. Wiem, że w ogóle coś takiego jak vim / nano istnieje, ale nie umiem tego. Ile czasu mi zajmie wyguglanie jak to zrobić? 1h?

Spring, Hibernate (warto znać chociażby z uwagi na to, że pojawiają się w większości ogłoszeń o pracę)

Jeśli faktycznie jakiś javowiec umie Springa i Hibernate'a (nie tylko skopiować tutorial, ale wie jakie są pułapki i jak zwiększyć efektywność) to IMO jest to co najmniej mocny mid.

git

Moja znajomość gita świetnie odzwierciedla poniższy obrazek (ale nie wiem czy jestem solidnym java devem):

screenshot-20220516142825.png

0
lookacode1 napisał(a):
  • IntellJ Idea
    A jak z róznicy powodów używam netbeansa czy eclipsa to już nie jestem programistą Javy? :P
  • Postman

Prawdziwi programiści używają curla, Postman jest dla frontendowców :P

  • Spring, Hibernate (warto znać chociażby z uwagi na to, że pojawiają się w większości ogłoszeń o pracę)

To chyba na minus :P

A tak w ogóle to nie lubię takich list. Kiedyś był taki jeden znany co mówił że jak programista nie umie używać wiresharka to nie jest seniorem. Nie używałem od studiów, ale stawkę seniorską mi firmy płacą

0

Ile czasu mi zajmie wyguglanie jak to zrobić? 1h?

Ok to tak można ze wszystkim ale nie o to chodzi aby on siedział cały dzień i googlal.

2
lookacode1 napisał(a):

Ile czasu mi zajmie wyguglanie jak to zrobić? 1h?

Ok to tak można ze wszystkim ale nie o to chodzi aby on siedział cały dzień i googlal.

Niby tak, ale nie :P

No bo czy znasz mavena na wylot totalnie czy tylko pobieżnie? Czy jakby ktoś kazał ci napisać z palca bez googla projekt w mavenie z podprojektami to napiszesz to wszystko z palca czy wygooglasz?

0

No bo czy znasz mavena na wylot totalnie czy tylko pobieżnie? Czy jakby ktoś kazał ci napisać z palca bez googla projekt w mavenie z podprojektami to napiszesz to wszystko z palca czy wygooglasz?

Nie znam na wylot ale być może są jakieś komendy w maven, które przydają się komuś szczególnie w pracy? To samo z innymi narzędziami.
Ja bym nawet nie googlal i nie męczył się tylko do generowania użył intellj idea albo https://start.spring.io/ :P
Inny przykład to jak chce sprawdzić otwarte porty na maszynie z linuksem to nie googlam i nie zastanawiam się 15min jakich przełączników użyć do netstat tylko
zapamiętałem, że netstat -tulpn i używam tego od zawsze. I właśnie o to mi chodzi w tym wątku aby zaproponować różne przydatne rzeczy, które warto znać
bo np. skoro jednemu devowi ułatwia życie i używa czegoś codziennie to z dużym prawdopodobieństwem innemu też się przyda.

2

IMHO programista powinien być "dość dobry" aby dawać radę w projekcie w którym go zatrudnią. Wykuwanie na pałę np. Hibernate'a tylko po to aby później z nim nie pracować i zapomnieć jest bez sensu. Programista powinien znać dobrze te narzędzia za których używanie mu płacą.

3
lookacode1 napisał(a):

Ile czasu mi zajmie wyguglanie jak to zrobić? 1h?

Ok to tak można ze wszystkim ale nie o to chodzi aby on siedział cały dzień i googlal.

Co to za herezje prawisz? Jak to nie googlać wszystkiego co się rusza?

A co do tematu, słowo-klucz (do wspomnianego google'a =P) to java developer roadmap, na przykład taka
image

2
lookacode1 napisał(a):

Może zacznę i wymienię kilka rzeczy przydatnych z mojej perspektywy:

  • git

To chyba dotyczy każdego programisty. Inna sprawa o poziom zaawansowania i czy faktycznie trzeba wiedzieć coś więcej niż jest dostępne z poziomu klienta wbudowanego w IDE

  • docker i docker-compose (np. do stawiania środowiska developerskiego lokalnie)

Opcjonalne, chyba, że mowa o backendzie - to wtedy obowiązkowe

  • maven (budowanie i zarządzanie zależnościami)

gradle robi się coraz bardziej popularny. Tak ma swoje wady, ma swoje zalety.

  • vim / nano (przydatne do edycji plików tekstowych na serwerze bez UI)
  • polecenia linuksowe (działają szybko i można je ze sobą łączyć, często się przydają)

Ogólnie jakiś tam poziom ogarnięcia w konsoli się przyda. telnet, ssh też się przydaje.

  • Debugger
  • coś do profilowania, analizy pamięci
  • IntellJ Idea

Raczej umiejętność utworzenia i zbudowania projektu w czymkolwiek. Jeżeli ktoś wciąż robi nowe projekty "w IDE" to raczej przyda się umiejętność szybkiego biegania.

  • Optional, Either

Tak, Java wypada znać.

  • curl
  • Postman

A nie lepiej zwyczajnie utworzyć sobie plik cośtam.http w tym IntelliJ skoro go już tu wrzuciłeś?

  • Junit

Meh.... trzeba ogarniać jak pisać testy. Te kilka asertów, adnotacji itp. jest do ogarnięcia w godzinę.

  • Spring, Hibernate (warto znać chociażby z uwagi na to, że pojawiają się w większości ogłoszeń o pracę)

Pod kątem pracy niestety, ale podstawy Springa + JPA są obowiązkowe.

To czego ci zabrakło, to:

  • Jakieś narzędzia do skanowania kodu. SonarQube, Coverity
  • Narzędzia do budowania kodu Jenkins, GitLab, TeamCity, Azure Pipelines..........
  • Ogólne rozeznanie w sieciach komputerowych, certyfikatach, protokołach sieciowych
  • Umiejętność zrobienia jakiegoś frontendu (nawet bagnetem), cokolwiek - thymeleaf, JSP, angular. Cokolwiek co w razie potrzeby pozwoli ci stworzyć prosty i brzydki UI "dla siebie"
  • Protokoły aplikacyjne: SOAP, Rest
  • jakaś tam wiedza o certyfikatach

Na backendzie przynajmniej na poziomie konceptu i prostej integracji z kolejką, topic'iem. Jakaś baza NoSQL. Redis, albo coś na ten kształt.

4

Proszę:
https://github.com/akullpp/awesome-java
Do końca życia nie ogarniesz wszystkiego. :P

0

Ze swojej perspektywy po paru latach jako Java Dev.

Java/Wzorce projektowe/Clean Code/DDD/Wielowątkowość + architektura mikroserwisów, transakcyjność, load balancing, konteneryzacja, api-gateway, config server, service mesh, security szerokopojęte, HTTP, routing, iptables, nmap, bash, Linux, itd. itd.

Frameworków się nie ucz bo to ulotne, a to co wyżej napisałem jest ponadczasowe w pewnym sensie, przez co będziesz mieć wywalone czy robisz w Hajbernejcie, Springach, Majkronaucie i tak dalej, ponieważ koncepcje są wszędzie te same pod spodem.

Znając te koncepcje, framework to tylko będzie młotek którego użyjesz. Mam nadzieję, że trafiłem w przekaz.

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