
Mamy to! Cykl rozpoczęty na początku kwietnia w końcu pokrył tyle zagadnień ile potrzeba, aby nabyć przyzwoitego rozeznania w świecie backendu (i nie tylko!). Dwa miesiące, osiemnaście artykułów i kilkadziesiąt pojęć później przyszedł czas na małe podsumowanie.
-Zatem… Czego potrzeba, aby zostać programistą?
-Cóż, przede wszystkim należy znać język programowania.
-Ale jaki? Python? Java? C++? Ruby?
-Nie głuptasie. Chodzi o język angielski.
Czy jest możliwe znaleźć pracę jako software developer bez JAKIEJKOLWIEK znajomości języka angielskiego?
NIE
Teoretycznie musielibyśmy pisać kod w systemie bitowym, albo wybijać dziurki na kartach perforowanych jak to działało w połowie ubiegłego wieku, żeby w 100% uniknąć anglika. Ale tamte czasy dawno minęły.
Nastała era języków tzw. „wysokiego poziomu”. A z każdym rokiem co raz wyższego. Jeszcze C++ każe nam osobiście zarządzać pamięcią programu. Java ma już swój garbage collector i zwalnia nas z tej odpowiedzialności, ale wciąż zasypuje worami boilerplate’a. Frameworki typu Spring czy Quarkus zasłaniają ten przymusowy, nieczytelny kod eleganckimi adnotacjami. A na samej górze stoi sztuczna inteligencja z modelem językowym któremu po prostu mówimy naszym ludzkim językiem co chcemy osiągnąć. Jest tak bystra, że możemy równie dobrze przekazać nasze żądanie po polsku… ale rezultat i tak wyjdzie w języku angielskim.
Niezależnie czy jesteś programistą z USA, Polski, Chin czy Tadżykistanu – cały czas będziesz operował na angielskich słowach: if, while, string, return itd.
A nawet jeśli się uprzesz i olejesz naukę języków obcych to szybko odczujesz ten brak szukając dobrych źródeł wiedzy i przedzierając się przez dokumentację. Tak, że panie i panowie – poznając podstawy języka programowania, od razu należy zadbać o naukę angielskiego.

Tak przy okazji, odnośnie rozwoju AI i groźby utraty pracy przez programistów, nasuwa się pewna refleksja.
Weźmy sobie takiego komiksowego Tonego Starka, aka „Ironmana” i jego pomocnika AI: „Jarvisa”. Osobiście nie przypominam sobie, aby Tony w którymkolwiek z filmów Marvela siedział przed kodem i mozolnie klepał w klawiaturę tworząc pętle i łapiąc wyjątki. A przecież używał zaawansowanej technologii, która musiała być zarządzana jakimś oprogramowaniem.
Wszystko co chciał zrobić mówił Jarvisowi,
a ten tworzył wymagany kod i „przesuwał wajchy”.
Wydawać by się mogło, że w tej sytuacji sam Ironman jest zbędny, bo to AI odwala całą robotę. Ale koniec końców to właśnie Stark pokonywał końcowych przeciwników w swoich opowieściach, podczas gdy Jarvis był co najwyżej sidekickiem, jeśli nie zwykłym narzędziem.
Działo się tak dlatego, że to my jako ludzie potrafimy myśleć abstrakcyjnie i ogarniać tzw. „big picture”: łączyć jeden element z drugim – na pozór całkowicie odmiennym, dzięki czemu osiągamy zamierzony efekt.
A co jeśli AI też nauczy się myśleć abstrakcyjnie?
Wtedy mój drogi kolego, groźba utraty pracy będzie naszym najmniejszym problemem.

Wróćmy jednak do tematu czyli podsumowania serii „Czym jest…?”. Zacznijmy od spisania tego co się nauczyliśmy:
ARCHITEKTURA I NARZĘDZIA
- Zarządzanie kodem projektu: Maven & Gradle
- Wersjonowanie kodu: Git & GitHub
- Bazy danych: SQL & NoSQL
- Testowanie: JUnit & Mockito
- Komunikacja: REST & SOAP
- Architektura: Heksagonalana & CQRS
- Architektura: Domain Driven Design
- Architektura: Mikroserwisy
KOD I FRAMEWORKI
- Spring & Java EE
- Spring Boot
- Hibernate (ORM) & Liquibase (migracje bazy)
- Messaging: RabbitMQ & Kafka
WDROŻENIE I AUTOMATYZACJA
- Konteneryzacja: Docker & Docker Compose
- Zarządzanie kontenerami: Kubernetes
- Automatyzacje CI/CD: Jenkins & GitHub Actions
- Technologie chmurowe: AWS & Azure & GCloud
ZARZĄDZANIE PROJEKTEM

Każdy z powyższych artykułów, na samej górze – tuż pod wstępniakiem, był udekorowany dopiskiem:
Uwaga! W tej serii zajmuję się opisowym przedstawieniem tematu, a celem jest zapoznanie z zagadnieniem w sposób luźny i zrozumiały dla nowicjusza. W związku z tym wiele elementów siłą rzeczy musi zostać pominiętych. Tych z was, którzy chcieliby się dowiedzieć więcej, zapraszam do źródeł na końcu artykułu.
Seria „Czym jest…?”
Zamysłem było pokazanie i wytłumaczenie początkującym popularnych technologii/pojęć, a targetem był czytelnik podobny do mnie samego, ale rok temu: uczy się podstaw programowania i naiwnie myśli, że to wystarczy do znalezienia zatrudnienia.
Nie wystarczy.
Jeśli kogoś zniechęciłem do kontynuowania nauki… to dobrze. To zwyczajnie oznacza, że kod nie jest jego domeną i powinien szukać powołania gdzieś indziej, a moja pisanina oszczędziła mu dużo bezcelowego wysiłku. Wszystkim innym – tym, którzy zostali na obranej ścieżce, chciałem pokazać drogę: długą, krętą, pełną wertepów i rzuconych pod nogi kłód. Ale z jasnym i konkretnym celem na jej końcu.
Celem, czyli stabilną pracą w IT, tak?
I tak i nie. Żyjemy w „ciekawych czasach”, kiedy trudno mówić o stabilności. Zmiany technologiczne, społeczne, ekonomiczne, groźba wojny. Nikt nie wie jak świat będzie wyglądał za 10 lat. Mówiąc pół żartem, pół serio:
W pewnym momencie wszystko może je*nąć i ważniejszym od znajomości Dockera, będzie znajomość słabych punktów na ciele zmutowanego kretoszczura.

Cel jest nieco inny. Zacytuję samego siebie z jednego z pierwszych wpisów w tym dziale:
Rozwój technologii, zastępowanie jednych branż innymi, rosnące możliwości sztucznej inteligencji – to wszystko sprawia, że żaden zawód nie może czuć się bezpieczny. W tej sytuacji mamy dwie drogi – albo będziemy się temu biernie się przyglądać i damy się ponieść nurtowi wody, albo złapiemy za stery i staniemy na czele awangardy nowego świata.
Przebranżowienie, cz. 2
Chodzi po prostu o to, żeby być panem swojego losu. Ktoś kiedyś powiedział, że ignorancja to błogosławieństwo. Ale jest druga strona medalu:
Ignorancja jest błogosławieństwem,
ale mądrego trudniej zrobić w ch*ja.
I właśnie na tym mi zależy, żeby móc się rozwijać, żeby było to docenione, żeby mieć wybór i żeby trudno mnie było zrobić w sami wiecie co. To wszystko są benefity pracy DOBREGO programisty (tak jak i wielu pokrewnych zawodów w IT).

Uczciwie przyznam, że moje teksty w tym cyklu nie wnosiły zbyt wielkiej wartości merytorycznej (bo nie takie było ich zadanie). Dla przykładu: cały tekst o Jenkinsie wymaga jakichś 10 minut na przeczytanie, z czego połowę poświęcicie na próbę zrozumienia mojego poczucia humoru. Równie dobrze moglibyście wejść na Chat GPT i jemu zadać tytułowe pytanie, a potem kolejne, aż do opanowania tematu.
Najważniejszą część każdego artykułu ukryłem na samym dole, małą czcionką, a były nią:
Źródła
Linki do blogów i ciekawych artykułów, pouczające filmiki na YouTube, pełne kursy prowadzone przez doświadczonych programistów, na Udemy czy ich własnych platformach. Może tego jeszcze nie zauważyliście, ale to jest złoto.
Poznawszy fundamenty wybranego języka programowania chcecie się rozwijać dalej (a nawet musicie, bo takie są obecne warunki na rynku pracy), ale nie wiecie co i nie wiecie gdzie. No to ja wam teraz w uporządkowany sposób przedstawię tę „roadmapę”.
Co, gdzie i w jakiej kolejności?
Nie ma tu wszystkich pojęć z cyklu, bo np. DDD czy Kafka są bardziej dla poziomu mid, a ponadto niektóre kursy ogarniają naraz więcej niż jeden temat.
PS. To, że w danym temacie widzicie np. 2 źródła nie oznacza, że to jest do wyboru, tylko że oba są potrzebne i wzajemnie się uzupełniają.
- Możliwości i obsługa Mavena (~2h)
- Cameron McKenzie: Maven w godzinę ANG/YT
- Dokładny opis tego czym jest i jak korzystać z Mavena (POL)
- Kurs obsługi Gita i GitHuba (~10h)
- Zaprogramuj życie: Kurs Gita PL/YouTube
- Academind: Git & GitHub ANG/Udemy (płatne)
- Kurs SQL (>20h)
- Zaprogramuj życie: Kurs SQL PL/YouTube
- Academind: MySQL & Postgres ANG/Udemy (płatne)
- Spring, Hibernate, Mikroserwisy, Architektura, RabbitMQ (>50h):
- Artur Laskowski: Mikroserwisy z Spring Cloud – tworzenie aplikacji webowych POL/Udemy (płatne)
- Mateusz Chrzonstowski: Java Spring Framework POL/Udemy (płatne)
- Mateusz Chrzonstowski: Architektura aplikacji – back-end, Java POL/Udemy (płatne)
- Mateusz Dąbrowski: Kurs Spring Boot POL/YouTube
- Blog Przemka Bykowskiego
- Podcast Better Software Design POL
- Docker, Kubernetes (~30h)
- Zaprogramuj życie: Kurs Dockera PL/YouTube
- Academind: Docker & Kubernetes ANG/Udemy (płatne)
- TechWorld with Nana: Kubernetes Tutorial ANG/YouTube
- Jenkins (~10h)
- Cameron McKenzie: Jenkins w 90 minut ANG/YT
- Valentin Despa: Jenkins: Jobs, Pipelines, CI/CD and DevOps for Beginners ANG/Udemy (płatne)
OMG!
Ile to wszystko potrwa?!
Ile to wszystko kosztuje??!!
Jeśli chodzi o czas to przy każdym punkcie podałem ile mniej-więcej czasu zajmie wam ogarnięcie teorii na poziomie juniora. Wystarczy zsumować i mamy
ponad 120h oglądania tutoriali i czytania tekstów
Uznajmy, że jak zrobicie 2 godziny dziennie to i tak dużo biorąc pod uwagę poziom trudności materiału. Czyli 120/2 = 60 dni nieprzerwanego przerabiania samej teorii (a jeśli będziecie wszystkie przykłady robili u siebie wraz z prowadzącym dany kurs, to śmiało możecie pomnożyć tę liczbę razy dwa).
A koszty? Połowa materiałów jest darmowa, druga – na Udemy – może być wyhaczona na promce po 30zł, więc nawet jeśli zechcecie wykupić wszystkie polecone przeze mnie kursy to z pewnością nie zbankrutujecie.
W drodze do IT płacicie czasem i wytrwałością, częściej niż gotówką.

W tym miejscu chciałbym również zwrócić szczególną uwagę na niektóre z w/w linków jako, że są to:
Wyjątkowo dobre źródła wiedzy
Dlatego pozwolę sobie przyznać wyróżnienia kolejno w kategoriach:
- najlepszy nauczyciel na Udemy
- najlepszy prowadzący z YouTube
- najlepszy bloger
- najlepszy podcast

W chwili obecnej mam na Udemy 17 kursów, z czego aż 6 pochodzi z Academind i jest prowadzona przez Maxa. Jestem na 100% pewien, że prędzej czy później wykupię wszystkie, które są zbieżne z moim tokiem nauki.
Strona techniczna kursów Academind jest bardzo profesjonalna: eleganckie slajdy, czyste audio no i przede wszystkim warstwa merytoryczna na najwyższym poziomie. Bardzo podoba mi się, że autor świadomie pokazuje częste błędy, omawia ich konsekwencje i wyjaśnia jak i dlaczego coś powinno się robić w dany sposób. Kursy od Maxa można kupować w ciemno, mamy pewność, że dostaniemy dokładnie to czego oczekujemy.

Jeśli chodzi o YT to tu było mi ciężko wybrać, bo mamy charyzmatycznego Przemka Bykowskiego ze swoimi live’ami, jest DevOps Nana i Łysy z Zaprogramuj Życie. Wszyscy doskonali w dziedzinie przekazywania wiedzy.
Ale jednak wygrywa Cameron, dlaczego?
Oglądaliście kiedyś Makłowicza
jak opowiada o zagranicznych smakołykach?
Aż ślinka cieknie, tak dobrze snuje te swoje historie. Chcemy się walnąć na kanapie z dobrym napitkiem, z cziperkami i odpocząć przy jego głosie będącym jak masło dla naszych uszu. I bardzo podobnie jest z filmami Camerona – oglądamy, żeby posłuchać jak mówi o różnych technologiach zupełnie jakby był kucharzem, powoli i starannie przygotowującym wykwintną ucztę.

Wspomniany wyżej Przemek ma swoją wygraną w kategorii blogowej. Nie żeby nie miał konkurencji, bo jest np. javasenior.pl od Artura Laskowskiego i zaprogramujzycie.pl od Łysego (pewnie pare jeszcze się znajdzie, ale teraz wszyscy blogerzy poszli wideo albo walą masówki dla zasięgów na LinkedIn, więc trochę posucha). Tylko, że Przemek faktycznie dba o regularne publikacje.
Powiecie, że jeden tekst na miesiąc to nie jest dużo, ale Byku prowadzi bloga już od 2013 roku więc jeśli wejdziemy tam po raz pierwszy to od razu, na dzień dobry, otrzymamy setki artykułów wartych przeczytania. A jako, że działa głównie w Javie i Spring Boocie, jego teksty są dla mnie szczególnie wartościowe.

Na koniec zostawiam podcasty. Przez cały proces nauki przesłuchałem DOSŁOWNIE setki odcinków najróżniejszych podcastów traktujących o domenie IT. Mogę bez wstydu polecić takich autorów jak:
- Krzysztof Kempiński: Porozmawiajmy o IT
- Devmentor.pl: Pierwsze kroki w IT
- Mateusz Gil: Better Software Design
- Kuba Szczepanik & Jacek Wieczorek: Porządny Agile
- Łysy z IT & Ofca: CodeCast
- Academind: Off The Record (ANG)
- Bartek Kalka: Junior Java Ready
Wszystko ciekawe, wszystko pełna profeska, więc dlaczego Junior Java Ready? W mojej ocenie Bartek doskonale podszedł do kwestii reklamy. Bo nie oszukujmy się, każdy odcinek jego podcastu to reklama kursów Javy które sprzedaje w swoim sklepie. Jego rozmówcami są świeżo upieczeni juniorzy, opowiadający o swojej ścieżce która zaczęła się napisaniem pierwszego „Hello world!”, a zakończyła angażem w firmie. Każda historia jest inna, każda ciekawa, a do większości z nich mogę odnieść się swoimi doświadczeniami.
No i oczywiście w trakcie takiej rozmowy prędzej czy później wychodzi szydło z worka, że rozmówca zdobył swoją pierwszą pracę w IT właśnie po zakończonym kursie u Bartka. Reklama pełną gębą, a mimo to ja i tak chcę tego słuchać i z niecierpliwością czekam na każdy kolejny odcinek.
Mistrzostwo marketingu!
Koniec?
Nazwałbym to raczej „pauzą”. Wciąż wiele rzeczy albo całkowicie pominąłem, albo poświęciłem im stanowczo za mało czasu, np.
- bazy NoSQL: MongoDB i Redis
- Elasticsearch (i cały „ELK”: Elasticsearch, Logstash, Kibana)
- zagadnienia DevOpsowe: Terraform, Ansible, Helm
- Swagger
- Grafana
- elementy frontu, np. Angular – co ma wspólnego z Javą?
Nie mam pojęcia co robią powyższe narzędzia (no może za wyjątkiem Mongo) i nie czuję się komfortowo zatrzymując serię tak w połowie, bez odpowiedzi na mnożące się pytania. Chciałbym ogarnąć to w kolejnych kursach i artykułach, ale…
…teraz nie czas na to.
Przez ostatnie tygodnie łyknąłem maaasę teorii, która jak to powietrze w nadmuchanym do ostateczności baloniku, szuka ujścia. Potrzebny jest projekt, który nie tylko skupi całą tą wiedzę w jednym punkcie, ale dodatkowo będzie polem do ćwiczeń, eksperymentów i stanie się moją wizytówką przy rozmowach z innymi programistami.
Tylko co to może być?

O tym już w kolejnym odcinku.