Może zacznę i wymienię kilka rzeczy przydatnych z mojej perspektywy:
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.
- coś do profilowania, analizy pamięci
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.
Tak, Java wypada znać.
A nie lepiej zwyczajnie utworzyć sobie plik cośtam.http w tym IntelliJ skoro go już tu wrzuciłeś?
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.