Plan nauki dla ekosystemu Java z namiarami na materiały
Jakiś czas temu poprosiłem na swojej mailiście o pytania, do nagrania godzinnego i technicznego Q&A z ekosystemu Javy. Jedno spośród pytań było nietechniczne, ale na tyle ciekawe, że postanowiłem przysiąść nad nim poza konkursem. Dodatkowo na tyle popularne, że stwierdziłem, żeby od razu stworzyć wpis na ten temat.
Chodziło o pokazanie jasnej roadmapy, planu nauki, jak i czego w roku 2020 się uczyć “na juniora”.
Świat Javy poszedł nieco do przodu przez ostatnie lata, natomiast patrząc na to co obecnie jest wymagane od juniorów/wczesnych regularów to nie za wiele się zmieniło przez ostatnie 10 lat... No to zaczynamy (i od razu – planuję rozbudowę tego wpisu, ale do tego potrzebuję Twojego feedbacku – po przeczytaniu daj mi znać)
Poziom Zero
- Język angielski. Przede wszystkim czytanie i słuchanie, zaraz potem mówienie i pisanie. Nie podam oficjalnego oznakowania poziomu. Nauczyć się programować do poziomu juniora możesz tylko z polskim, materiałów jest dość, po polsku są takie bardzo dobrej jakości+. Natomiast, gdy napotkasz problemy i trzeba będzie zrozumieć o co chodzi w danym wyjątku rzucanym przez Springa… wówczas już tylko StackOverflow i angielski. Uruchom pierwszy, lepszy tutorial na YT od hindusa – będziesz w stanie po kilku minutach po “oswojeniu się” z akcentem go zrozumieć? Jest OK. Przeczytaj parę odpowiedzi na StackOverflow. Zrozumiane? Jest OK. Komunikatywny angielski nie oznacza idealnej gramatyki i płynnych przemów. Oznacza zrozumienie różnych akcentów i umiejętność w miarę sprawnego konstruowania zrozumiałych odpowiedzi, nawet jeśli miałby brzmieć na początku jak "Kali umieć, Kali zrobić".
- Umiejętność nauki – Learning how to Learn, darmowy, świetny kurs
- Umiejętność rozwiązywania problemów. Podział problemu dużego na mniejsze, tworzenia algorytmów na kartce i papierze. Niestety nie znam dobrego źródła nauki. Jeśli coś znasz to daj znać.
- Jeśli masz możliwość to studia – inżynier, licencjat albo podyplomówka. Będziesz miał/a papier, który znaczy cokolwiek (bo te z bootcampów nic nie znaczą obecnie), poznasz ludzi, środowisko i będziesz miał/a ułatwiony dostęp do staży.
Poziom Pierwszy
- Podstawy programowania. flow programu, zmienne, instrukcje warunkowe, funkcje, pętle. Nawet nie musi to być Java. JavaScript jest już dość ludzkim językiem, łatwo w niego wejść i napisać “Hello World”, a coraz częściej znajomość JS jest plusem dla back-endówców. Możesz też od tego poziomu zacząć z Javą, w darmowym kursie po polsku, albo zerknąć na freecodecamp.
- Podstawy programowania obiektowego w Javie. Omówione również w kursach z punktu pierwszego.
- Podstawowe struktury danych. Darmowy, mega kurs na freecodecamp.
- Bazy danych, typu klasycznego, czyli te z obsługą SQL. Podstawy teorii baz danych,komendy od operacji CRUD, Joiny. Darmowy kurs na freecodecamp.
- Podstawy pracy z Git – ogarnięcie modelu GitFlow.
- Podstawy Testowania Jednostkowego – autoreklama. Kurs wszyscy sobie chwalą, więc bez fałszywej skromności. -> Kurs na Udemy.
- Podstawowe Wzorce Projektowe – -> j.w., Kurs na Udemy.
- Podstawy pracy z Mavenem
- Podstawy pracy z bazą danych z poziomu Javy. Nie ma na tym etapie znaczenia czy czyste JDBC czy JPA. Do drugiego i tak potrzeba co nieco wiedzy z tego pierwszego by mieć odpowiedni kontekst.
Poziom Drugi
- Zbieramy wszystko w całość. Tworzysz aplikację do portfolio i wykorzystujesz wszystko co było napisane powyżej. Możesz zrobić graficznego CRUD’a, tesktowego CRUD’a (np. aplikację do obsługi biblioteki (takiej z książkami ;P)), możesz coś bardziej zaawansowanego – np. grę tekstową typu SUD (patrz np. Odchłań).
- zasady SOLID – Dopiero na tym etapie można w praktyce zobaczyć i poczuć, wcześniej to sucha teoria. Dużo materiałów, polecam coś od Uncle Bob'a
- Zasady Clean Code – j.w.
- Refaktoring – j.w.
[Autoreklama] Mój nowy kurs – Kompletna aplikacjaw języku Java – od zera do installera, jest właśnie przeznaczony na ten etap. Tłumaczy wszystkie używane koncepty od zera, w kontekście w jakim są używane. Zawiera wzorce projektowe, testy jednostkowe, często robimy refaktoring, tworzymy wszystko z zasadami czystego kodu i integrujemy się z bazią danych. Zainteresowany/a? Zerknij tutaj. Kurs ma obecnie, przy pierwszej edycji, 22 godziny, poświęcone na pracę nad jedną aplikacją.
Poziom Trzeci
- Wszystko czego się tu dowiesz implementujesz w projekcie, który został zrobiony w kroku drugim.
- JPA (Hibernate konkretnie)
- Wielowątkowość. Thread, Future. (np. generowanie raportów w osobnym wątku)
- Elementy programowania funkcyjnego w Javie
- zasady z książki Pragmatic Programmer
- CI/CD np. ogarnięcie starego, dobrego i jarego Jenkinsa.
Poziom Czwarty
Do poniższych jest masa materiałów na YT, w tym i polskojęzycznych
- REST API
- Spring Boot + Spring Core + Spring Test – darmowy kurs dot. fundamentów.
- Spring REST
- Spring Data
- JMS
- Spring Security
Poziom Piąty
- Stworzenie jednej, dużej aplikacji wykorzystującej to co wyżej ( JMS są opcjonalne). Drugiej do portfolio, o której będzie można pogadać na rozmowie.
- Sprawy devopsowe – Docker i deployment aplikacji na AWS/GoogleCloud/Azure
- Znajomość podstawowych koncepcji architektury Microservisowej
Poziom Szósty
- Przygotowania do rozmowy kwalifikacyjnej, wygooglowanie “Top 100 java interview questions”, “Top 100 Spring interview questions” i ogarnięcie. Nijak ma się to do prawdziwej pracy ale tak to niestety wygląda. Dodatkowy protip – w czasie rozmowy gdy tylko nadarzy się pytanie o coś czego użyłeś/aś w jednym z dwóch dużych projektów do portfolio – mów “.. miałem/am okazję zastosować go w moim projekcie X, pojawił się problem przy X/jak zrobić Y, wykorzystanie tej rzeczy w taki i taki sposób pomogło”. Kierujesz rozmowę w kierunku dwóch projektów z portfolio i płyniesz, pokazujesz przy okazji, że masz już jakieś blizny :)
- Wychowanie do pracy w grupie – Clean Coder (również autorstwa Uncle Boba)
- BONUS POINTS – TypeScript, React, JavaScript – darmowe wstępniaki dostępne na kursy.clockworkjava.pl
Komentarze (4)
najlepsze