Pragmatyczny plan nauki dla ekosystemu Java – v2.0

Jakiś czas temu zapytał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 blogu na ten temat.

Chodziło o pokazanie jasnej roadmapy, planu nauki, jak i czego w roku 2021 uczyć się “na juniora”.

No to zaczynamy (i od razu – planuję rozbudowę tego wpisu, ale do tego potrzebuję Twojego feedbacku – po przeczytaniu daj znać na pawel@clockworkjava.pl)

Nagrania z mentoringu Java – droga do Juniora idą właśnie tą ścieżką.

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ść, 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.
  • Umiejętność naukiLearning 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ć (pawel@clockworkjava.pl). Wpis na quora.pl.
  • 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ą, możesz zacząć od darmowego kursu po polsku, wprowadzenia na freecodecamp albo przeszukać YouTube. Można również skorzystać z polskich kursów na javappa albo javastart. Zawsze to łatwiej, gdy dostaje się materiał usystematyzowany.
  • Podstawy programowania obiektowego w Javie. Omówione również darmowym w kursie z punktu pierwszego jak i w płatnych kursach javappa i javastart.
  • Elementy programowania funkcyjnego w Javie – streamy, optionale, filtry, reducery. Omówione w kursach javappa albo javastart.

Poziom DRUGI

  • Podstawy pracy z Git – na Udemy są darmowe kursy w temacie, na chwile obecną interesują nas tylko podstawy.
    
  • Podstawy Testowania Jednostkowego – znów 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 Mavenemkurs na mojej platformie, krótki (2h) i konkretny. Wszystko co trzeba wiedzieć o Mavenie i wszystko by zrozumieć jak działa.
    
  • 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 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 TRZECI

  • 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), 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
  • Zasady Clean Code – j.w.
  • Refaktoring – j.w.

    Mój nowy kurs – Kompletna aplikacja w 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 zapisujemy wszystkie obiekty domenowe w bazie danych. Testy jednostkowe też się pojawiają. Zainteresowany/a? Zerknij tutaj. Kurs ma obecnie, przy pierwszej edycji, 22 godziny.

  • Od tego poziomu proponuję zacząć również regularnie ćwiczyć rozwiązywanie problemów na https://www.codewars.com . Z rozwiązań innych ludzi i komentarzy można się GIGANTYCZNĄ ilość rzeczy dowiedzieć.

Poziom CZWARTY

  • Wszystko czego się tu dowiesz implementujesz w projekcie, który został zrobiony w kroku drugim.
  • JPA (Hibernate konkretnie) – fundamenty możesz poznać w tym darmowym kursie.

Poziom PIĄTY

Poziom SZÓSTY

  • Stworzenie jednej, dużej aplikacji wykorzystującej to co wyżej ( JMS są opcjonalne). Do portfolio, o której będzie można pogadać na rozmowie.
  • Docker
  • Znajomość podstawowych koncepcji architektury Microservisowej

Poziom SIÓDMY

  • 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ś 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, że masz już jakieś blizny 😉

    Baaaardzo pomocne portale: https://www.pramp.com/#/, https://pl.spoj.com/
  • Przygotowanie do pracy w grupie – Clean Coder (również autorstwa Uncle Boba)
  • Podstawowe struktury danych. Darmowy, mega kurs na freecodecamp. Wcześniej punkt ten był na etapie pierwszym. Natomiast po zastanowieniu się to on przydatny jest dla juniora w największym stopniu na rozmowy kwalifikacyjne, gdzie czasem lubią o takie rzeczy zapytać, albo do rozwiązywania zadań algorytmicznych. W biznesowych projektach nigdy samemu drzewa binarnego się odwracać nie będzie. Choć oczywiście warto znać stos czy kolejkę, bo może po prostu ułatwić implementacje jakieś funkcjonalności biznesowej.
  • Wielowątkowość. Thread, Future. (np. generowanie raportów w osobnym wątku). Również przeniesione ze wcześniejszych etapów. Często pytania z tego tematu pojawiają się na rozmowach, w praktyce już rzadziej stosowane, ale znać trzeba.
  • BONUS POINTS – TypeScript, React, JavaScript – również darmowe wstępniaki dostępne na kursy.clockworkjava.pl
  • BONUS POINTS – Deployment aplikacji na chmurzę AWS/Google Cloud Platform/Azure

I na chwilę obecną to tyle. Czegoś zabrakło? Rozwinąć dany temat? Daj znać w komentarzu albo na pawel@clockworkjava.pl.


By być na bieżąco i mieć realny wpływ na tematykę tworzonych przeze mnie artykułów zapraszam do dołączenia do mojego newslettera.

6 myśli w temacie “Pragmatyczny plan nauki dla ekosystemu Java – v2.0”

  1. Hej,
    pracuje już jako junior ale czegoś takiego potrzebowałem 🙂 super zebrane do kupy i na podstawie tego sam mogę określić czego potrzebuje się jeszcze poduczyć 🙂 no i pomocne przy przygotowaniu własnego planu na resztę 2020 🙂

  2. Czy możesz podpowiedzieć które studia podyplomowe wybrać (Warszawa)?Tak żeby zacząć pracę jako junior Java developer. Przeglądałam kilka ofert, ale ciężko jest określić początkującej osobie w branży które wybrać.

  3. Poziom 0
    Umiejętność rozwiązywania problemów.

    W moim przypadku było to układanie kostki Rubika. Później przerodziło się wymyślanie własnych algorytmów, tworzenie nowych metod układania, układanie bez patrzenia, różne ewolucje, różne kostki, różne łamigłówki. Samo układanie dziś jest już mega proste. 15 lat temu było to troszkę większe wyzwanie, ale i tak łatwe w porównaniu do lat 70 gdzie Erno Rubik ułożył to po 30 dniach :), a 17 powiedział, że wymyślił najgłupszą zabawkę na świecie, bo nie da się jej rozwiązać.

    Opcja 2 to po prostu gry strategiczne. Szachy, go, planszówki czy te na PC (StarCraft ah… jedyna prawdziwa miłość). Uczą one podejmowania decyzji na podstawie wiedzy, jaką posiadamy w danym momencie.

    Te dwie z pozoru błahe zainteresowania wykształtowały we mnie umiejętności, za które dziś sowicie mi płacą.
    Możemy przegadać ten temat i może coś wspólnie napisać ;).

    Bardzo fajny artykuł. Szkoda, że kilka lat temu gdy zaczynałem z Javką nie natknąłem się na coś takiego. Znacznie ułatwiłoby to moją wyboistą drogę.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *