
Ostatnio słuchałem jednego z odcinków podcastu Krzysztofa Kempińskiego „Porozmawiajmy o IT” i padło tam dość zabawne stwierdzenie o tym jak jeszcze kilka lat temu przeprowadzana była rozmowa rekrutacyjna na stanowisko programisty. Otóż najważniejszym rekwizytem w owym „interwju” miałoby być ponoć… lusterko.
– Po co im było lusterko?
Chcącemu dostać się do IT przykładano owe zwierciadło do ust i jak tylko pojawiła się na nim para wodna to znaczy, że kandydat żyje – czyli zatrudniamy.
To oczywiście przesada, ale dość niedawno, bo w czasach pre-pandemicznych znaleźć pracę może nie tyle było łatwiej – ofert pojawiało się mniej niż teraz (a do tego idea pracy zdalnej wciąż raczkowała), ale zakres wymaganej wiedzy był daleko węższy niż dzisiaj.
Na stanowisko junior java developera wystarczyło znać.. no logiczne – Javę. To z jednej strony mało, a z drugiej jak się dobrze zagłębić w temat to i kilku lat nie wystarczy na zostanie ekspertem w dziedzinie. Problemem tego języka jest bowiem tzw.
boilerplate code
czyli wiele żmudnych linijek kodu, które musimy napisać, żeby ta końcowa – najważniejsza linijka zrobiła co trzeba. Odpowiedzią na tę dolegliwość okazały się frameworki i dodatkowe narzędzia kryjące te przymusowe kawałki kodu w swoich wnętrznościach za fasadą biblioteki do zaimportowania, pluginu do IDE lub estetycznie wyglądających adnotacji.
Część z powyższych udogodnień z początku była opcjonalna, ale okazała się tak przydatna, że szybko stała się standardem. Już nikt nie poszukuje eksperta od javowych servletów, skoro to samo robi Spring, w dodatku szybciej i pewniej.
Efekt takich zmian był łatwy do przewidzenia – wymagania znajomości w/w narzędzi zaczęły coraz liczniej pojawiać się w ofertach pracy, a brak skilli z nimi związanych bardzo utrudnia dostanie się na rozmowę.

Do owego podniesienia poprzeczki dla chętnych na IT dołączyło również względne nasycenie rynku pracownikami połączone z post-pandemiczną recesją. Do tej pory to pracownik dyktował warunki swojemu chlebodawcy – jeśli coś się nie podobało, to na porządnego specjalistę czekało kilkanaście innych ofert, a head-hunterzy stalkowali najlepszych graczy jak onegdaj paparazzi Britney Spears.
Obecnie role się odwróciły. I chociaż senior z kilkunastoletnim doświadczeniem w branży wciąż może spać spokojnie, to młodsi stażem zawodnicy nie są już tak skorzy do zmiany miejsca pracy jak wcześniej. Zaś sytuacja juniorów jest już w ogóle nie do pozazdroszczenia.
Gwoli jasności: wciąż mówimy o chwili obecnej, kiedy AI jeszcze na dobre nie weszła do gry!

Do czego zmierzam?
Pamiętam, jak pod koniec 2022 roku kiedy podjąłem ostateczną decyzję o zostawieniu życia nauczyciela i rzuceniu się w wir IT, zacząłem od przejrzenia ofert o pracę, abym wiedział co dokładnie muszę opanować.
Żeby nie być gołosłownym, wyobraźcie sobie siebie na moim miejscu – niby coś tam wiecie o programowaniu, powoli rozgryzacie składnię Javy, jesteście na etapie poznawania środowiska IntelliJ…
…i wchodzicie z ciekawości na strony z ofertami pracy dla początkujących juniorów:




Patrzycie na te nazwy, w głowie zaczyna się kręcić, litery się mieszają, pojawia się pierwszy odruch wymiotny.
Co oznacza „AWS”?
Co to jest Maven?
Do czego ten Jenkins?!
Czym do jasnej cholery jest Jira?!!
Zaraz, Git i GitHub to nie to samo?!!!
Nie jesteście w tym sami. Też miałem powyższe objawy. Pamiętam, że chciałem znaleźć jakieś ogólne objaśnienia owych pojęć, ale szybko się poddałem – moja ówczesna wiedza nie pozwalała jeszcze na zrozumienie sensu zazwyczaj skomplikowanych tłumaczeń.
- Co to jest Spring?
- To taki framework do Javy.
- A co to jest framework?
- No... zestaw bibliotek do języka programowania.
- Bibliotek? Z książkami?

Teraz, mając już trochę więcej doświadczenia na karku i parę projektów w portfolio, orientuję się w temacie znacznie lepiej, ale i tak skłamałbym pisząc, że już wiem jak się używa narzędzi z wymagań w przedstawionych wcześniej ofertach pracy.
W związku z powyższym postanowiłem upiec dwie pieczenie na jednym ogniu – z jednej strony będę nadrabiał zaległości w wiedzy z pomocą książek, filmów i kursów, a z drugiej mam zamiar opisać tutaj sedno każdego z zagadnień i odpowiedzieć na pytanie:
Czym jest …?
Tym wpisem chciałbym zatem zaanonsować nową serię tekstów, na którą mają się składać następujące artykuły (niekoniecznie w poniższej kolejności):
- Czym jest Maven/Gradle?
- Czym jest Git/GitHub/GitLab?
- Czym jest JUnit/Mockito?
- Czym jest SOAP/REST?
- Czym jest SQL/NoSQL?
- Czym jest ORM/Hibernate?
- Czym jest Docker?
- Czym jest Kubernetes?
- Czym jest Spring/Spring Boot?
- Czym jest Kafka/RabbitMQ?
- Czym jest TDD/DDD/AOD?
- Czym jest CI/CD?
- Czym jest Jenkins?
- Czym są Mikroserwisy?
- Czym jest AWS?
- Czym jest Elasticsearch?
- Czym jest Jira?(*)
(*) z góry uprzedzam, że lista jest wysoce poglądowa, a powyższe elementy mogą się zmienić
Sporo, nieprawdaż? A co najgorsze, na temat każdego z powyższych zagadnień można napisać książkę (i to niejedną!).
Ja jednak podejdę do tematu z nieco innej strony. Docelowym czytelnikiem do którego skieruję swoje wypociny będzie osoba, która dopiero co rozpoczęła przygodę z programowaniem w Javie. Przede wszystkim musi się nauczyć podstaw i nie może sobie jeszcze pozwolić na ogarnięcie tego wszystkie co jest dookoła Javy.
Ale mimo to, już chciałaby wiedzieć co jest czym, do czego służy i jak z tego korzystać.
Pierwszy artykuł, poświęcony Mavenowi, pojawi się już za kilka dni.