Bartek Kalka, Java developer w Allegro, tłumaczy, czym jest Java, jak działa wirtualna maszyna JVM z Garbage Collectorem i czym język różni się od C++, Pythona i Kotlina. Omawia zalety i wady Javy (społeczność, stabilność na rynku pracy, Spring Boot, ale też wysoki próg wejścia i wolniejszy start aplikacji), bazy danych oraz to, jak połączyć backend z frontendem. Opisuje też krok po kroku, co trzeba umieć i jak zbudować projekt do CV, żeby zdobyć pierwszą pracę jako Junior Java Developer.
Bartek Kalka
Bartek Kalka zaczął programować w 2017 roku na Politechnice Poznańskiej, a z Javą zetknął się podczas letniego stażu — od czterech lat programuje w niej zawodowo, obecnie w Allegro. Od półtora roku pomaga osobom z podstawami programowania zdobyć pierwszą pracę w Javie jako twórca kursu Junior Java Ready, bloga, podcastu i newslettera.
Bartek rekomenduje:
- Aditya Bhargava, „Algorytmy ilustrowane”
- Robert C. Martin, „Czysty kod”
- Cay Horstmann, „Java. Podstawy”
- Jerzy Grębosz, „Symfonia C++”
- W3Schools — zadania i przykłady z Javy
Skrót rozmowy: Dlaczego warto uczyć się Javy
Dziś moim gościem jest Bartek Kalka. Bartek opowie nam o języku Java i o tym, jak się go uczyć. Bartku dziękuję, że przyjąłeś zaproszenie na rozmowę.
Dziękuję bardzo za to zaproszenie i mam nadzieję, że dzisiaj wyjdzie fajny podkaścik dla front-endowców.
Czy możesz się przedstawić i powiedzieć, co łączy Cię z branżą IT?
Myślę, że tak. To może zacznijmy od tego, żebyś nam się przedstawił i opowiedział, co łączy Cię z branżą IT.
Super. Nazywam się Bartek Kalka. W 2017 roku zacząłem swoją przygodę z programowaniem. Poszedłem na studia na Politechnikę Poznańską i zaczynałem od front endu – co jest śmieszne, bo wiem, że Ty tutaj też prowadzisz kursy front-endowe, ale finalnie skończyło się tak, że od tego front endu po nieudanych rekrutacjach dostałem się na staż letni w jednej z firm w Poznaniu i okazało się, że na tym stażu będzie Java i to było moje pierwsze spotkanie się z Javą i z programowaniem komercyjnym. Od tamtego czasu przez 4 lata do teraz programuję zawodowo.
Aktualnie pracuję jako programista w Allegro, a jeżeli chodzi o pomaganie innym w branży IT z dostaniem się do pierwszej pracy w Javie, to pomagam od 1,5 roku. Zdecydowałem, że chcę to połączyć z etatem i sam miałem kiedyś problemy z tym, żeby dostać pierwszą pracę jako Java developer. Teraz wychodzę naprzeciw i od 1,5 roku tworzę do tego materiały, np. bloga, podcast czy grupę na Facebooku, webinary, newsletter i też finalnie kurs, więc to mnie łączy z branżą IT i na razie mam się dobrze.
OK, To super. Jak powiedziałeś, że zacząłeś od JavScriptu, a potem przeszedłeś na Javę, to od razu przed oczami miałem takiego mema, że był JavaScript, skreśliłeś „script” i powstała Java.
Dokładnie.
Czym jest Java?
Dobrze. To powiedz nam w takim razie czym jest Java.
Java w odróżnieniu do JavaScriptu jest to back-endowy język programowania. Charakteryzuje się on tym, że jest obiektowy, czyli bardzo łatwo ludziom, którzy zaczynają się uczyć tego języka, jest przełożyć tworzenie klas, obiektów ze świata rzeczywistego na kod, czyli możemy stworzyć na przykład obiekt „człowiek” i później dodawać do niego różne funkcjonalności. Jest to ta główna cecha, że język jest językiem obiektowym. Java właśnie służy do tego, żeby tworzyć back end, czyli coś, czego nie widać w porównaniu do tego, co mamy, jeżeli korzystamy z JavaScriptu. Chociaż nie do końca, bo JavaScript też jest na Node. Z tego co kojarzę, to też jest back-end. I co jeszcze można powiedzieć o Javie? Bardzo dużo można o tym mówić. To jest taki wstęp. Myślę, że to obiektowość i to, że jest back-endowy to są dwie podstawowe cechy tego języka.
Jak działa wirtualna maszyna Javy (JVM)?
A co z wirtualną maszyną? Jak to z nią jest?
Tak. Java ma to w sobie, że jest oparta o Java Virtual Machine (JVM). Powstała jako ulepszenie C++, bo Java wywodzi się z C++, a w nim trzeba było zarządzać pamięcią samodzielnie, czyli usuwać już nieużywane obiekty. To zajmowało dużo czasu i powodowało, że było dużo błędów w projektach komercyjnych. Java wyszła temu naprzeciw i zaimplementowała coś takiego, co automatycznie czyści pamięć, i to jest właśnie Garbage Collector. Garbage Collector to nazwa, która sugeruje, że sprząta te wszystkie śmieci. Garbage Collector jest w środku wirtualnej maszyny Javy, czyli Java Virtual Machine. Bez tego żaden język, który jest oparty o JVM-a, nie może działać.
Czyli w skrócie Java Virtual Machine to program, który działa sobie. On jest napisany w C++ i te wszystkie programy, które są pisane w Javie, uruchamiają się dzięki Java Virtual Machine, co pozwala nam się skupiać bardziej na problemach biznesowych, komercyjnych rozwiązaniach, na funkcjonalnościach, a nie jakichś bebechach, czyli właśnie czyszczeniu pamięci.
I to dało też taką popularność Javie – ze względu na to, że o wiele szybciej powstawały rozwiązania. Dlatego firmy podchwyciły to i zobaczyły, że OK, Java działa w innej firmie. Dosyć szybko realizują tam ficzery w porównaniu na przykład do C++, to my też to bierzemy. I stąd się wzięła taka popularność tego języka.
Od strony klienta to trochę minus, bo musimy mieć zainstalowaną tę maszynę, żeby móc uruchomić aplikacje javowe.
Tak. Na każdym urządzeniu, na którym jest JVM, możemy odpalić program, który jest napisany w Javie albo na przykład Kotlinie, który też jest oparty o JVM-a. I to jest właśnie zaleta tego, że jeżeli mamy JVM-a na danym urządzeniu, to zawsze program, który został napisany w Javie, będzie działał. Na przykład takim fajnym zastosowaniem jest to, że JVM jest instalowany na kartach kredytowych i to jest umieszczone w takim chipie. Jeżeli chcemy napisać sobie program do obsługi kart kredytowych, do którego później przykładamy jakieś zbliżeniowe rzeczy, to właśnie tam też jest ten JVM.
Czyli gdybyśmy chcieli trochę uszczknąć z każdej transakcji, to dałoby radę?
Tak, pewnie. Jakoś by się dało. Tylko nie możemy o takich rzeczach mówić.
Czym Java różni się od C++ i Pythona?
Nie polecamy. Dobrze. To w takim razie powiedz nam, czym Java różni się od C++ czy Pythona, które są równie popularne, a może nawet popularniejsze od Javy. O tym sobie jeszcze powiemy, ale może na początku wymień różnice.
OK. To tak jak już wspomniałem, C++ był przed Javą i Java wyszła naprzeciw takim składniowym problemom C++, w którym jest o wiele więcej boilerplate‘u niż w Javie. Boilerplate polega na tym, że piszemy o wiele więcej kodu, niż powinniśmy, i dzięki temu, że tego boilerplate’u jest mniej w Javie, tym łatwiej nam się tworzy rozwiązania i są bardziej czytelne dla programistów. Tak jak już wspomniałem, w C++ musimy zarządzać pamięcią samodzielnie, a w Javie mamy Garbage Collector, który jest w JVM-ie.
Na pewno jeżeli chodzi o Pythona w porównaniu z Javą, to jest on o wiele łatwiejszy na start dla osób, które zaczynają – z tego względu, że po prostu instalujemy sobie interpreter. Python jest właśnie językiem interpretowanym. Nie potrzebuje on kompilacji tak jak Java i to jest o jeden krok mniej, jeżeli chcemy odpalić program. Dlatego Python jest łatwiejszy, bo ma po pierwsze bardziej czytelne funkcje. Te funkcje są czytelne z tego względu, że jest to taki język angielski, tylko że przekładamy to na programy. Jak piszemy jakąś funkcję… (ja też nie mam jakiegoś superdoświadczenia z Pythonem, ale wiem, jak można zaczynać i też trochę z tym zaczynałem), to piszemy tam trochę jak prozą. Mamy jakiś program do wykonania, on się wykonuje właśnie dzięki temu interpreterowi. Nic nie trzeba tam kompilować. Wykonuje się, mamy jakąś zwrotkę z wykonania tego programu i możemy przekazać tę zwrotkę do kolejnego programu.
Dzięki temu łatwo się składa te wszystkie instrukcje w Pythonie i nawet takie proste programy, które na przykład analizują wielkie zbiory danych w Pythonie czy analizują mapy, są o wiele łatwiejsze do napisania w Pythonie niż na przykład w takiej Javie, bo Java potrzebuje do tego o wiele więcej kodu.
Dlaczego polecić Javę, a nie Pythona?
To może takie pytanie dodatkowe. Dlaczego byś polecił jednak Javę, a nie Pythona, jak tak zachwalałeś tego Pythona?
Z tego względu, że Python ma też oczywiście swoje minusy. Ja na przykład nie lubię tego w Pythonie, że jest on dynamicznie typowany, czyli nie wiemy tak naprawdę, jaki typ danych przyjmuje to, co na przykład zwraca funkcja. To może powodować błędy, które dopiero zobaczymy, gdy uruchomimy program.
Java jest o tyle fajna, że jest językiem kompilowanym i już na etapie, kiedy piszemy kod, jesteśmy w stanie zobaczyć jakieś błędy. W sensie: gdy odpalimy kompilację, to już możemy wykryć błędy, a nie dopiero gdzieś tam na produkcji, gdy klient próbuje na przykład złożyć jakieś zamówienie. I to jest zaleta Javy – że jest statycznie typowana w porównaniu do Pythona. To utrudnia wejście w ten język, ale ułatwia później zarządzanie całym projektem i połapanie się w tym, co i gdzie: czy to jest typ integer, czy string, czy to są w ogóle klasy. Tak naprawdę w Pythonie wszystko można wrzucić do jednego worka i dopiero finalnie zostanie rozwiązany ten typ, a w Javie mamy to czarno na białym i dzięki temu łatwiej się analizuje ten kod.
Myślę, że tutaj najważniejsze z tego, co powiedziałeś, to było to, że właśnie na początku może to być utrudnienie, ale potem jest dużo łatwiej. Ja tak samo, jak zaczynałem programowanie od PHP-a, to w nim też było bardzo fajne, że wszystko mogłem wrzucić do jednego wora. Tak jak powiedziałeś: było super, ale potem wraz z ilością przerobionego kodu jednak brakowało mi tego, żeby powiedzieć, że ma być tak, a nie inaczej. Faktycznie to statyczne typowanie potem ułatwia życie, ale na początku może utrudnić przy nauce. Dobrze. To zostawmy tego Pythona.
Co można, a czego nie można stworzyć w Javie?
Przejdźmy dalej do tej Javy. Może powiedziałbyś nam, co można, a czego nie można stworzyć przy pomocy Javy: aplikacje desktopowe, może mobilne, może coś innego? W zasadzie już trochę wspomnieliśmy o tych kartach kredytowych.
Tak. Jeżeli chodzi o rzeczy, których nie można stworzyć, to jest to dosyć ciężkie pytanie, bo wydaje mi się, że na siłę tak naprawdę można wszystko stworzyć w Javie, tylko że niektóre języki bardziej do tego pasują. Na przykład front-end: ja nie polecam uczyć się takiej technologii jak Thymeleaf. W Javie istnieje takie rozwiązanie, które pozwala tworzyć front-end za pomocą Javy i nie wdając się w szczegóły, jak to działa, to mamy jakąś stronę, która powstała w wyniku napisania kodu w Javie. Z mojej perspektywy można to zrobić, ale są o wiele lepsze rozwiązania, jak właśnie JavaScript czy frameworki reactowe. Więc front-end można tworzyć.
Ale co jeszcze można tworzyć za pomocą Javy? Na pewno można tworzyć różne aplikacje webowe. I właśnie na tym teraz polega cały świat komercyjny, jeżeli chodzi o programowanie w Javie, że tworzy się tak naprawdę back end pod komunikację z front endem i Java w sumie słynie z tego, że została zaprojektowana i stworzona po to, żeby rozwiązywać problemy sieciowe.
Dzięki temu na przestrzeni lat powstały różne rozwiązania – na przykład taki serwer HTTP jak Apache Tomcat – i dzięki temu, że to ma tyle lat doświadczeń różnych programistów, to ta komunikacja sieciowa jest super rozwiązana, co pozwala nam tworzyć właśnie aplikacje webowe, które wystawiają różne endpointy, i na przykład komunikują się z bazą danych w bardzo dobry sposób, czy przeróżne formy komunikacji międzyaplikacyjnych.
Czym jest endpoint?
A jak byś wytłumaczył, czym jest end-point?
Endpoint najłatwiej wyjaśnić w ten sposób, że mamy jakiś ostatni moment, w którym możemy się skontaktować z drugim serwisem, czyli że mamy dwie aplikacje – w tym przypadku javowe – które chcąc się ze sobą komunikować, muszą wystawić endpointy. Komunikują się przez te ostatnie punkty styku tak naprawdę.
Moglibyśmy powiedzieć, że to są adresy, pod którymi się komunikujemy. Tak jak mamy adres „devmentor.pl/api/coś”, to zazwyczaj właśnie pod tym adresem są jakieś dane, które są zwracane przez back end.
Tak, dokładnie, i można wykonywać przeróżne operacje, jak GET – teraz powiedziałeś bardziej o gecie – że możemy pobrać w ten sposób jakieś dane. Ale są różne inne czasowniki, jak na przykład POST, które pozwalają nam jakieś rzeczy stworzyć w bazie danych. I te endpointy właśnie służą do tego, żeby komunikować się z aplikacją, która jest odpowiedzialna za to, żeby na przykład zwracać te dane lub je zapisywać do bazy danych, lub robić inne cuda, które nie są widoczne dla oka, ale finalnie front end może skorzystać z tych endpointów do tego, żeby na przykład wyświetlić taki onet.pl czy takiego devmentora.pl.
Czy w Javie tworzy się aplikacje mobilne?
OK. To co jeszcze? Bo wspomniałeś aplikacje webowe, ale chyba nie wspomniałeś o aplikacjach mobilnych.
Tak. To jest kolejna rzecz, która właśnie znalazła zastosowanie do Javy, czyli aplikacje mobilne. Google podchwycił to, żeby stworzyć Androida, czyli cały ten system, który jest bardzo popularny, jeżeli chodzi o aplikacje mobilne. Google podchwycił to i stworzył Androida opartego o Javę. Można stworzyć sobie aplikację mobilną bez problemu, jeżeli chodzi o Javę. Chociaż przechodzi to bardziej teraz na Kotlina z tego względu, że Google się pokłócił z Oraclem, czyli twórcą Javy, o to, że oni sobie to trochę przywłaszczyli. Więc Google stwierdził, że stworzy Kotlina, i teraz większość rzeczy powstaje w Kotlinie, mimo że to jest tak naprawdę finalnie to samo, bo działa to na JVM-ie.
Czym Java różni się od Kotlina?
To skoro wspomniałeś o tym Kotlinie, to powiedz nam, jakie są różnice między jednym a drugim. Ja przynajmniej słyszałem, że Kotlin jest przyjemniejszy. Zgodziłbyś się z tym, czy w ogóle nie miałeś do czynienia z Kotlinem?
Zdecydowanie jest wygodniejszy. Mam właśnie do czynienia. Nie mam jakiegoś jeszcze superdoświadczenia z Kotlinem, ale przez rok z nim pracowałem i byłem na tym etapie przechodzenia z Javy na Kotlina, więc takim głównym czynnikiem, który świadczył za tym, żeby iść do Kotlina to jest właśnie to, że o wiele mniej kodu trzeba napisać, żeby zrealizować tę samą rzecz. Do tego jest o wiele bardziej czytelny i jest też po prostu świeższy. Czyli ludzie, którzy się za to zabierali, widzą, jakie były problemy Javy. Na przykład handlowanie NullPointerów – Kotlin właśnie wprowadził to, że o wiele łatwiej jest zadbać o null null safety.
Gdyby pójść w stronę programowania opartego o Javę – tak bym to nazwał – to lepiej iść w stronę Javy czy Kotlina, czy najpierw trzeba zacząć od Javy, żeby pójść w stronę Kotlina?
Nie trzeba. Chociaż na ten moment, na 2022 rok, raczej bym polecał zacząć i tak od Javy ze względu na to, że jest bardzo dużo materiałów dla Javy, jest bardzo dużo kursów, które po prostu zostały stworzone trochę wcześniej. I później przejście z Javy, czyli z teoretycznie trudniejszego do łatwiejszego, będzie tak naprawdę miesiącem czy dwoma miesiącami uczenia się nowych funkcji czy składni. Więc jak najbardziej raczej bym zaczął jeszcze od Javy.
Jakie są trzy największe zalety Javy?
OK. Powiedz nam proszę, jakie trzy największe zalety dla Ciebie ma Java.
Trzy takie największe zalety to na pewno ogromne community, czyli lata doświadczeń różnych programistów, takich jak na przykład Uncle Bob, który stworzył książkę,,Czysty kod” z dobrymi praktykami. I on też na przykład tą książkę zrobił w oparciu o Javę, więc to jest taki dobry przykład, że ci najwięksi programiści ze świata Javy nadal żyją. Oni dalej się udzielają, dalej kontrybuują do tego, żeby ten język się rozwijał. Dodatkowo wiele problemów zostało już rozwiązanych, więc jeżeli ktoś zaczyna uczyć się tego języka, to ma właśnie zasoby do tego, żeby szybko rozwiązywać dane problemy, bo na przykład taki StackOverflow czy Google jest w stanie w tym bardzo mocno pomagać w wielu przypadkach.
Na pewno kolejną zaletą jest to, że Java jest stabilna i popularna w komercyjnym użyciu i właśnie to otwiera wrota przed nowymi programistami po to, żeby gdzieś się załapać do tej pierwszej pracy. Jeżeli ktoś lubi back end, lubi na przykład trochę programować w Pythonie – jeżeli mu w Pythonie nie wyjdzie lub chce iść trochę w Javę, lub miał na studiach C++ – to rynek na ten moment też Javy jak najbardziej pożąda. Wiele firm z tego korzysta i tak naprawdę będzie korzystać.
Co więcej, oprócz tych ekspertów i oprócz tej popularności w komercyjnym użyciu to Java się cały czas rozwija ze względu na to, że ma bardzo dużo bibliotek. My mówimy tutaj o czystej Javie, ale jest coś takiego jak Spring, który bardzo mocno wykorzystuje Javę i ułatwia pracę wszystkich programistów na przestrzeni lat, więc mówienie o Javie musimy powoli przerzucać na to, że raczej się mówi tutaj o Springu czy Spring Boocie.
Te dwa frameworki też są bardzo dużą zaletą Javy – dzięki temu, że Java była na początku trudna, to teraz mamy o wiele łatwiejsze rozwiązania w stylu właśnie takich frameworków jak Spring Boot czy Spring. Dzięki temu o wiele łatwiej stworzyć przeróżne aplikacje. W ciągu na przykład trzydziestu minut jesteśmy w stanie stworzyć aplikację, która będzie działać i będzie tak naprawdę zbliżona do komercyjnego użycia.
I też pewnie jak pójdziemy do pracy to się okaże, że już możemy zacząć robić taski, a nie musimy się czegoś uczyć, bo jeżeli mamy framework, to on wymusza na nas pewne zasady, których będziemy się trzymać też w pracy.
Dokładnie tak. I jeżeli nauczymy się bardzo mocno tej Javy w podstawach, to później wykorzystanie jakiegokolwiek frameworka – czy to właśnie Springa czy Micronaut (to są takie dosyć popularne frameworki Javy) – to później będzie nam o wiele łatwiej. I tak jak mówisz: jesteśmy w stanie się tego bardzo szybko nauczyć w ciągu pierwszych miesięcy pracy.
Jakie są wady Javy?
Dobrze. To, żeby nie było tak kolorowo, to mamy zalety. To trzeba coś powiedzieć o wadach.
Jeżeli chodzi o Javę taką największą wadą, która od lat ciąży jeszcze wciąż jest to, że jest dosyć wysoki próg wejścia z tego względu, że właśnie tych bibliotek, frameworków jest bardzo dużo i cały czas powstają nowe tak naprawdę dlatego, że cały czas chcemy coś lepszego, chcemy coś szybszego. Są też różne błędy i na pewno jest dosyć wysoki próg wejścia i ja też czasami tak wychodzę trochę na przekór, bo czasami jeżeli chodzi o naukę Javy to czasami polecam nawet zacząć od tego C++, bo z mojego doświadczenia trafiłem kiedyś na takie taką książkę jak symfonia C++, która w genialny sposób wytłumaczyła mi z takiego świata normalnego takiego człowieczka, który nigdy nie programował na poważnie jak zrozumieć programowanie, bo tak naprawdę na samym początku nie ma super znaczenia jaki język wybierasz czy to C++ czy Python czy Java. Ważne są takie podstawy, czyli na przykład jak działają funkcje, czy to jest klasa i takie obiektowe, różne dobre praktyki, których można się nauczyć niezależnie od języka i dlatego czasami polecam właśnie zacząć do tego C++, bo później o wiele łatwiej jest wejść w Javę, a w C++ mamy o wiele mniej ofert w porównaniu do Javy, więc warto przejść na Javę i ona jest bardzo podobna, więc to jest jedna z tych wad, że jest dosyć wysoki próg wejścia, ale da się to obejść właśnie na przykład w ten sposób.
Drugą taką wadą, którą widzę, to jest to, że jest wypierana przez Kotlina i w końcu faktycznie dojdziemy do tego momentu, w którym trzeba będzie zaczynać od kotlina. A to może powodować takie problemy, bo tak naprawdę kotlin tak się kompiluje do kodu bajtowego który jest uruchamiany tak samo jak Java, więc finalnie czy piszesz w kotlinie czy w Javie to Java Virtual Machine interpretuje to dokładnie w ten sam sposób, bo to jest Java ByteCode i to może powodować, że jak ktoś zacznie od Kotlina i to, Java jest wypierana przez tego kotlina to jest wada dlatego, że wiele problemów może być ukrytych gdzieś tam niżej i ktoś, kto nigdy nie programował w Javie może nawet nie zdawać sobie sprawy z tego, że dane problemy zostały rozwiązane, bo będzie szukał źle na przykład w sieci i to jest taka wada, że może to być problematyczne
i trzecia taka wada to to, że aktualnie jak piszemy w Javie to piszemy tak naprawdę w kilku językach zazwyczaj i to jest właśnie kotlin,, wszystko co się kompiluje do tego JVM’a i to powoduje, że czasami w projektach ja tak aktualnie mam i przez 4 lata tak miałem, że nie było projektu, w którym nie było przynajmniej dwóch języków opartych o JVM’a, bo na przykład łatwiej się testuje aplikację w z różnych względów, a kod produkcyjny jest albo w Javie, albo w ogóle w Javie i w kotlinie, więc jak uczysz się Javy to później masz ten problem. Znaczy problem, a z drugiej strony zaleta, że uczysz się kilku języków programowania, bo w projekcie są zazwyczaj dwa lub trzy języki.
Jak wygląda szybkość programów w Javie?
A co powiesz o szybkości programów w Javie?
Właśnie ze względu na to, że jest tam ten JVM’en odpalony w tle to musimy mieć na uwadze to, że on tam działa i są takie fazy tego JVM'a, w którym aplikacja się zatrzymuje i tutaj najlepszym przykładem tego jest sytuacja, w której mamy napisanego Minecrafta. Minecraft jest właśnie napisany w Javie i on jest zresztą oparty o tego JVM’a i w JVM’ie mamy coś takiego, że żeby wyczyścić Garbage Collectorem te zużyte obiekty, zużytą pamięć to musimy na chwilę zatrzymać cały program. I w Minecrafcie to się odzwierciedla tym, że po prostu cała gra na chwilę pauzuję i to może być nieodczuwalne przez graczy. Chociaż na początku było. Później to zoptymalizowali właśnie, bo wychodziły nowe Garbage Collectory i tak dalej i to właśnie powoduje, że te programy czasami są wolniejsze, bo są na przykład problemy z tym, że JVM’em i z konfiguracją. A to jest dosyć ciężki temat, jeżeli chodzi o początkujących, jak to wszystko stuningować, więc trzeba mieć na uwadze cały czas tego JVM'a i to, że on może spowodować, że Java będzie wolna.
Chociaż coraz dalej, im dalej tym te Garbage Collectory radzą sobie z tym o wiele lepszy sposób i na przykład, jeżeli chodzi o Javę i to, że ona wolno wstaje, tak naprawdę wynika z tego, że korzystam na przykład z spring boota, który odpala taki kontener. Tutaj może nie będę wchodził jeszcze może mocno w szczegóły, ale chodzi o to, że po prostu samo uruchomienie aplikacji na spring boocie, na frameworku to jest z czystej aplikacji. To zazwyczaj trwa siedem sekund, więc samo odpalenie programu w porównaniu na przykład do Pythona, który od razu odpali program, który został zinterpretowany to można by powiedzieć, że Java jest wolna z tego względu.
OK. Coś za coś. Nigdy nie można mieć wszystkiego.
Dokładnie.
Jeżeli chcemy mieć super aplikacje szybkie, możemy napisać w C czy w C++, ale wtedy musimy więcej się namęczyć przy pisaniu kodu.
Dokładnie i później utrzymywać jeszcze trzeba ten kod.
Jak popularna jest Java?
Tak jest. Dobrze to jak już tak sobie poopowiadaliśmy o tym, jakie Java ma wady i zalety to może teraz powiedz nam proszę jak bardzo popularna jest Java.
I na to pytanie właśnie zaczerpnąłem ze statystyk z czegoś takiego jak. com. ro jest taka strona, która zbiera statystykę popularności języków i robi to pod wieloma aspektami, czyli na przykład ilość ofert pracy na rynku, ilość wyszukiwań tego języka w sieci czy rozwiązań, czy na przykład właśnie firm, które wykorzystują Javę w komercyjnych projektach lub na przykład ilość projektów na GitHubie. Jeżeli chodzi o maj 2022 to Java plasuje się na jednym z trzech pierwszych miejsc. Zaraz po Pythonie i C. Tylko bierzcie tutaj na uwagę, że to jest tylko ranking dla maja 2022. Niestety nie znalazłem rankingu takiego dla kilku lat wstecz, ale to pokazuje, że po prostu Java wciąż jest popularna i wciąż się rozwija i warto się nią zainteresować.
Dlaczego początkujący rzadziej wybierają Javę niż Pythona czy JavaScript?
OK. Dobrze. To w takim razie, skoro jest popularna to powiedz nam, proszę, dlaczego osoby, które zaczynają przygodę z programowaniem rzadziej wybierają Javę niż Pythona czy JavaScript? Jakbyś mógł uzupełnić tą informację, bo już trochę na nią odpowiedziałeś, ale jakbyśmy tak mieli konkretnie odpowiedzieć na to pytanie?
Tak. To moim zdaniem tak jest dlatego, że po prostu w tych dwóch językach, czyli w Pythonie i w JavaScripcie o wiele szybciej jesteśmy w stanie zobaczyć efekty i osoby, które zaczynają z programowaniem mieć ten problem, że muszą się uczyć składni języka, muszą się uczyć różnych API, Bibliotek i tak naprawdę to już jest bardzo dużo dla nich, a oni by chcieli zobaczyć jakieś efekty swojej pracy w końcu, więc jeżeli chodzi o Pythona i JavaScript to w Pythonie po prostu jesteśmy w stanie napisać dwie - trzy linijki i wyświetlić jakąś aplikację, która jest desktopowa, która już coś robi i coś widać.
Tak samo w JavaScripcie jesteśmy w stanie napisać kod i zobaczyć go zaraz w przeglądarce, czyli jeżeli chcemy napisać na przykład jakiś skrypt, który przenosi, bo zakładam, że jeżeli ktoś się uczy JavaScriptu to pewnie ten HTML, CSS jest w tym wszystkim i to jest najłatwiejszy sposób na start, jeżeli chodzi o rozpoczęcie przygody, że możemy sobie za pomocą tego Javascriptu napisać script, który przenosi i robi różne cuda na aplikacji webowej, czyli na przykład pierwsze stronki i myślę, że dlatego ludzie wybierają na początku raczej te dwa języki w porównaniu do Javy, bo w Javie trzeba się trochę napocić po to, żeby później finalnie zobaczyć tak jak już dyskutowaliśmy o tych end-pointach, że ktoś uderzy do naszego end-pointu i zobaczymy jeden napis na przykład: Hurra albo Hello World o wiele później i nie jest aż takie satysfakcjonujące jak latające kwadraciki za pomocą JavaScriptu, który napisaliśmy i HTML’ a.
Jaka jest przyszłość Javy i czy warto się jej uczyć?
OK. Podobała mi się odpowiedź, bo jeżeli powiedziałeś, że JavaScript jest łatwiejszy i przyjemniejszy to jestem za, ale też rozumiem, że tutaj spokojnie ta opcja z back-endowym rozwiązaniem, czyli Javą też niesie ze sobą duże korzyści i też jest tak jak wspomniałeś bardzo dużo firm, które w ogóle mają Javę, nie będą zmieniać Javy i będą w tym programować, więc te oferty pracy też będą się na pewno pojawiać i to też jest taka stabilna opcja, jeśli chodzi o ścieżkę programistyczną i właśnie powiedzmy o tej ścieżce, bo jaką Ty wróżysz przyszłość Javie? Warto się uczyć? Wspomniałeś, że tak. To jaka ta przyszłość. Co będzie za niedługo, co będzie za rok, za dwa? Może trochę dalej? Jak to widzisz?
Jeżeli miałbym zaczynać teraz z Javą to wciąż bym to robił ze względu na to, że ja zaczynałem cztery lata temu i wtedy też było takie zastanawianie się co jest lepsze? Ja oczywiście zaczynałem od frontendu i pewnie to ze względów oczywistych, że po prostu też mnie jarały różne efekty na ekranie, które mogłem zobaczyć, ale jeżeli chodzi o te cztery lata temu to było to dokładnie to samo, czyli czy Java się kończy? Jak to wygląda na komercyjnym rynku? I finalnie przez te cztery lata nie widzę tak naprawdę spadku zainteresowania tą Javą, więc podejrzewam, że przez kolejne cztery przynajmniej lata na spokojnie można się uczyć Javy.
Jeżeli ktoś się zastanawia nad tym to jak najbardziej. W szczególności z tego względu, że jest bardzo dużo materiałów, bardzo dużo mentorów dostępnych na rynku i wystarczy tak naprawdę mieć dobry plan, o którym może zaraz powiemy do tego, żeby gdzieś tam do tych podstaw dojść, do tego, żeby gdzieś złapać tą pierwszą pracę w Javie, a później jak już będziemy mieć tą pierwszą pracę w Javie, to się zastanawiać co dalej, bo tak naprawdę w pracy będziesz wykorzystywać te rzeczy, które teoretycznie są najbardziej aktualne, więc będziesz mieć szansę na to, żeby być zaktualizowanym na rynku pracy, więc nauka spring boota czy nowych frameworków, które będą wychodzić wokoło tej Javy, z całego tego systemu. To będzie dla Ciebie coś naturalne, więc tak naprawdę najważniejszym punktem jest dostanie się do tej pierwszej pracy i śledzenie aktualności, które są.
Jeżeli chcecie się uczyć programowania, to po prostu programujcie w języku, który Wam odpowiada, który Wam się podoba, a niekoniecznie trzeba myśleć o tym, co się najbardziej opłaca, bo w mojej ocenie, jak gdyby jeżeli tylko dany język nam odpowiada i bawi nas to znaczy, że pewnie będziemy umieć go coraz lepiej. Będzie nam się go dużo łatwiej uczyć i też znajdziemy tą pracę, więc nie sądzę, żeby wybieranie, jak gdyby języka tylko pod to, jaka tam praca będzie i jaka jest przyszłość to nie jest jakieś takie, bardzo istotne. Jak gdyby, jeżeli będzie mniej osób, które się będą uczyć danego języka, to też może być to plus akurat, bo będzie więcej ofert pracy do wyboru. Będzie trudniej znaleźć pracownika, więc jeżeli Wy znacie dany język to też wcale nie jest tak źle. Jak myślisz Bartku może też tak być?
Dokładnie. Jeszcze dopowiem, że bardzo często spotykam się z takim przekonaniem, że dużo osób żałuje tego, że na początku nie zaczęło od języka, w którym miało jakiegoś znajomego lub mentora, dlatego, że na przykład mieli znajomego, który programował w Javie lub JavaScripcie i zaczęli od czegoś totalnie innego, a mogli zacząć od właśnie tych języków po to, żeby cały czas móc na przykład rozmawiać czy się doradzać, otaczać się takimi osobami, które mogą pomóc w razie jakiegoś wypadku z Javą czy JavaScriptem, więc to jest takie coś. Tak bym to dopowiedział.
Jak szybko zmienia się język Java?
Jasne. Dobrze. To w takim razie powiedz nam proszę, jak szybko zmienia się język Java?
Z mojej perspektywy właśnie tych czterech lat jak ja pracuję, a pracowałem w Javie ósmej, w Javie jedenastej. Teraz jest Java siedemnaście i tak naprawdę między tymi wszystkimi wersjami Javy, czyli pomiędzy tam ósemką a jedenastką były też różne wersje, czyli dziewięć, tam dwanaście, trzynaście, czternaście i to były takie języki, które nie miały takiego długiego wsparcia od wydawców Javy, ale to nie znaczy, że one były gorsze, bo tak naprawdę ten Long - term support polega na tym, że po prostu dana firma daje wsparcie przez najbliższe kolejne na przykład trzy lata, że będą dawać tam aktualizację, będą dawać wsparcie i pomoc w danej wersji języka, więc jeżeli chodzi o Javę to teraz nowe wersy Javy wychodzą co około sześć miesięcy z tego co dobrze pamiętam. A najnowsza wersja, czyli ta Java siedemnaście z mojej perspektywy ten Long- term support to był czternasty września dwa tysiące dwudziesty pierwszy rok, więc stosunkowo niedawno, a Java jedenaście to był dwa tysiące osiemnasty rok, więc jak widzimy tutaj cały czas pracują, wszystko się tutaj rozwija, jeżeli chodzi o Javkę.
Ale jakby nie jest to takie bardzo duże zmiany. W sensie, jeżeli mamy tą wersję powiedzmy spełnioną jedenastą i nauczyliśmy się jej tak to określmy to te zmiany w kolejnych nie są takimi zmianami, które powodują, że wszystkiego musimy się uczyć od nowa.
Dokładnie i to też ma tutaj duże znaczenie, że Java jest trochę do tyłu, jeżeli chodzi o aktualizacje i wprowadzenie nowych ficzerów względem na przykład Kotlina, bo Kotlin ma już pewne funkcjonalności, bo jest o wiele szybciej rozwijany, a później Java na przykład korzysta z tych rzeczy i wprowadza. Tak na spokojnie oni to robią, więc mamy dużo czasu na to, żeby nauczyć się między jedną aktualizacją a drugą nowych ficzerów lub nawet już wcześniej poznaliśmy, bo kotlin je wcześniej wprowadził i tak naprawdę nowa wersja Javy korzysta z tego co już umiemy, więc bardzo szybko jesteśmy się w stanie zaktualizować w ciągu kilku tygodni tak naprawdę, jeżeli wychodzi coś nowego, jeżeli wychodzi nowa Java.
OK, a to bym Cię jeszcze tak popytał, jeśli chodzi o osoby, które zaczynają, szukają pierwszej pracy to czy jest tak, że na rekrutacji jest wspomniana albo powiedziane, że nasz projekt dotyczy Javy tej jedenaście i że Ty musisz to umieć czy raczej chodzi o to, żeby znać Javę a jaka to jest wersja i jaki to jest projekt już jest nieistotne?
To jest nieistotne. To są bardziej niuanse, bo jeżeli ktoś ma dobre podstawy programowania, nawet anglostyczne językowo, czyli na przykład pisał coś w Pythonie i zna dobre praktyki programowania algorytmów to zazwyczaj początkujące osoby nie mają tego problemu, że muszą wymieniać, jakie były nowe ficzery w Javie siedemnastej w porównaniu do Javy ósmej, więc jeżeli nauczysz się nawet Javy ósmej. Ja teraz nawet w aktualnych projektach niektórych, bo jest ich sporo, jeżeli chodzi o mikro serwisy, które rozwijam to też niektóre mają dalej Javę ósmą, więc jeżeli umiesz Javę ósmą nie mniejszą oczywiście. Pamiętajcie, że Java ósma to jest najmniejsza jaką się powinniście zaczynać uczyć. Później tak naprawdę to są tylko detale i raczej nikt nie powinien robić problemów o to, że ktoś czegoś tam nie wie dokładnie.
Jakie bazy danych są najczęściej używane z Javą?
OK. Dobra. To w takim razie idziemy dalej. Skoro back-end, skoro Java to pewnie musimy coś powiedzieć o bazie danych, więc jakie najczęściej są wykorzystywane i może coś więcej nam powiedz na ich temat, których warto się uczyć na początku, których może już obecnie nie warto. Słuchamy.
Dobrze. To na przestrzeni lat to było tak, że głównie SQL, bazy typu SQL, bo wiadomo, mamy kilka typów baz danych: nierelacyjne. Takie jak MongoDB’i i one tam nie mają slq’a a mamy takie SQL’owe jak na przykład Postgre’s, Oracle.
Oracle tu jest dobrym przykładem bazy danych, która od lat była kojarzona z Javą, bo to jest też firma, która miała duży wpływ na to, że Java istnieje i na przestrzeni lat teraz aktualnie ja widzę, że taką najbardziej popularną stroną, w którą idziemy, czyli w bazach danych, to są właśnie te no sqlowe, czyli na przykład baza MongoDB.
MongoDB jest bardzo, bardzo powszechna teraz jeżeli chodzi o aplikację spring, więc to na pewno bym polecał się nauczyć, ale oprócz tego takie bazy jak Postgre’s czy MySQL to są dwa kolejne wybory, jeżeli chodzi o bazy SQL i jest też taka baza, czyli baza danych która może działać bardzo szybko w pamięci programu. Jest bardzo często wykorzystywana do testów jednostkowych i to też jest baza sqlowa, więc tak naprawdę dalej SQL i no SQL bym się uczył na start z tego względu też, że SQL spowodował, wykorzystywanie bazy typu SQL spowodowało to, że powstały też różne frameworki, które wspierają właśnie pracę między Jawą a bazą danych i takim framewrokiem jest właśnie hibernate na przykład, który powoduje to, że o wiele łatwiej nam się skomunikować z tą bazą danych i utrzymywać to, co jest w bazie danych versus to co mamy aktualnie w aplikacji. Te wszystkie obiekty, więc to też jest bardzo popularne narzędzie i bardzo często na rozmowach rekrutacyjnych są pytania o tego hibernate ‘a, więc na pewno bazy SQL i no SQL, które wymieniłem, czyli MongoDB, Postgre’s, MySQL i nauka tego hibernate ’a to też jest coś co warto poruszyć.
To mnie trochę zaskoczyłeś muszę przyznać, bo MongoDB mocno mi się kojarzyło z JavaScriptem i nie przypuszczałem, że Java też tutaj mocno idzie w stronę MongoDB.
Tak ze względu na to, że właśnie nie ma tam schematu bazy danych, jest mega szybka i ona jest oparta o JavaScripta. Chyba to są jeżeli dobrze pamiętam, dokumenty, ale to już taki szczegół implementacyjny tego MongoDB.
Co trzeba umieć, żeby dostać pracę jako Junior Java Developer?
Jasne. Dobra. To w takim razie chyba jedno z ciekawszych pytań – Co muszę umieć, by otrzymać pracę jako Junior Java Developer?
To jest takie pytanie, którym ja się zajmuję od półtora roku, które bardzo często dostaję i tworzę materiały na te tematy. Jeżeli chciałbym na to bardzo szybko odpowiedzieć to co musisz umieć? Na pewno podstawy, bo większość rozmów rekrutacyjnych to i tak tylko. Może zacznijmy od tego, że na tą rozmowę rekrutacyjną czy tam do tego, żeby dostać się do procesu rekrutacyjnego, żeby dostać jakieś zadanie to musisz mieć pokazane to, że umiesz coś zrobić, czyli musisz mieć jakieś doświadczenie i najlepiej to doświadczenie zdobywa się w jaki sposób? Rozwiązując różne przykładowe zadania, czyli robimy mnóstwo zadań na takich stronach jak na przykład W3Schools czy, gdzie mamy przykładowe rozwiązanie danego zadania i rozwiązujemy bardzo dużo małych zadań po to, żeby później być w stanie stworzyć jakiś projekt większy lub tworzyć sobie mniejsze projekty po to, żeby zdobywać cały czas te doświadczenia i w ten sposób nabieramy tego doświadczenia. Uczymy się podstaw po to, żeby później móc w CV na przykład wpisać, że mamy doświadczenie w tworzeniu na przykład projektów w technologiach, które Wy drodzy pracodawcy oczekujecie, czyli na przykład właśnie Hibernate, jakiś Spring Boot, testy jednostkowe, Rest, różne bazy danych.
Także zaczynamy zawsze od podstaw, od rozwiązywania jak największej ilości zadań. Później tworzymy jakieś pierwsze projekty w czystej Javie i później tworzymy porządny projekt, który ma pokazać doświadczenie i to pokazuje, że jesteśmy dobrymi kandydatami.
Na przykład ja się spotykam właśnie z tym, że do CV ludzie wpisują listę rzeczy, które potrafią, a tak naprawdę ta lista rzeczy to są jakieś technologie ze studiów, które gdzieś tam coś słyszeli albo przykład Bootcampie gdzieś coś słyszeli albo z jakiegoś tutoriala przepisywali kod i to wpisują do CV, więc nie tędy droga, więc jeżeli na tym etapie Cię, to dziwi, że takie rzeczy mówię to zapraszam, żeby to kontynuować gdzieś tam na java, żeby zobaczyć o co chodzi dokładniej, więc jeżeli chodzi te technologie, to one się oczywiście zmieniają. Ja zawsze sugeruję, żeby patrzeć na oferty pracy jakie są i co tam dokładnie jest wypisane i w kontekście tych ofert pracy zebrać sobie technologie.
Kiedyś poczyniłem wpis na swoim blogu na javaready/blog, gdzie mamy wypisane właśnie jakie to są te konkretne podstawy, które trzeba posiąść takie jak właśnie Java, SQL, algorytmy i złożoności obliczeniowe, struktury danych, właśnie bazy danych rest w ogóle całe dobre praktyki programowania obiektowego, czyli wzorce projektowe, czysty kod, taki akronim jak Solid. To są też dobre praktyki, jeżeli chodzi o pisanie kodu obiektowego. Właśnie git to też w JavaScripcie na pewno wykorzystujecie jak najwięcej. Właśnie testy jednostkowe czy integracyjne Marvell i takie zadania logiczne i to są całe te podstawy i gdzieś tam jeszcze na pewno architektura podstawowa, jeżeli chodzi o projekty, żeby wiedzieć jak zaprojektować to trzeba znać się trochę na tej architekturze w takim stopniu juniorskim, więc to są podstawy.
Tak naprawdę 70%. Jeżeli tego nie potrafisz, to nie ma co iść do tych 30% pozostałych, bo te 30% i oczywiście dyskutujemy cały czas tutaj o tym jak zdobyć tą pierwszą pracę, więc te podstawy to jest must have. To musisz umieć po to, żeby później na rozmowach rekrutacyjnych być w stanie się obronić z różnych zagadnień Javy czy na przykład właśnie z kolekcji jak działają konkretne kolekcje, bo o to też pytają czy na przykład jaka jest różnica między. Znaczy na przykład jak działa, jak działa hash mapa, więc cała ta składnia Javy, biblioteki, które są wykorzystywane będą Cię pytać, ale tu jest pewien taki trochę paradoks, o którym już trochę wcześniej wspomniałem, że żeby w ogóle dostać się na rozmowę rekrutacyjną czy dostać zaproszenie do rozwiązywania zadań rekrutacyjnych to trzeba doświadczenie pokazać względem innych kandydatów. Jeżeli nigdy się nigdzie nie pracowało, to trzeba jakoś to doświadczenie pokazać, a projekty są najlepsze i wtedy dostajesz zaproszenie do procesu rekrutacyjnego, na którym właśnie 70% to podstawy, a 30% to cała otoczka inna, czyli frameworki takie, jak jeżeli już przejdziesz te 70% czyli wiesz co jest Java, nie wymiękłeś na żadnych pytaniach to jesteś na dobrej drodze, bo wiele osób też nie wymięka na tym etapie i musisz konkurować.
Teraz dokładamy kolejne 30%, czyli znajomości takiej otoczki pracowej ja to mówię, w którą właśnie ja przedstawiam u siebie w kursie, że chcemy pokazać, że osoba, która nigdy nigdzie nie pracowała ma jakąś świadomość o tym, jak wygląda praca w firmie i to jest właśnie wiedza komercyjna. To jest taka otoczka pracowa, czyli na przykład metodyka pracy w Scramie bez znajomości takich technologii już trochę powiedziałbym bardziej nadprogramowych niż podstawy, czyli docker, właśnie spring boot, Hibernate, znajomość czegoś takiego jak, czyli domain driven design, znajomości takich narzędzi jak GitHub nawet jak się tym posługiwać, jak odbierać jak robić Questy, jak w ogóle działa całe i CD ’i. Na czym polega Jenkins to jest cała taka otoczka. Ja tutaj starałem się to wszystko mocno skrócić, ale i tak wyszło bardzo dużo, więc jak widzicie jest to obszerny temat - Co trzeba umieć?
I jakby ostatni etap to trzeba umieć się sprzedać tak naprawdę, czyli taka marka osobista ma też bardzo duże znaczenie, bo jest bardzo dużo kandydatów, czy jeżeli chodzi o jakiś profil na linkedinie, na którym będą do Ciebie pisać firmy, żeby Cię zatrudnić lub Ty będziesz pisać do kogoś lub szukać ofert pracy to musisz mieć to bardzo dobrze ustawione. Wszystko musi być pokazane, że masz doświadczenie, musisz mieć dobre CV.
Musisz też rozwiązywać jak najwięcej takich typowych zadań rekrutacyjnych z tego względu, że one są właśnie typowe, czyli nie są takie zazwyczaj zadania, że o napisz mi tutaj serwis, czyli nie to co robisz na co dzień tylko bardziej takie zadania, żeby odsiać osoby, bo jakoś trzeba porównać te wszystkie osoby. Jeżeli mówimy, że te osoby mają podstawy to nie możemy im dawać jakiś zaawansowanych, trudnych rzeczy, więc dajemy im bardziej takie zagwozdki logiczne do rozwiązania, na przykład ciąg Fibonacciego jak można napisać Javie, więc to są takie rzeczy, które mogą Ci pomóc. Znaczy na pewno Ci pomogą zdobyć tą pierwszą pracę, tylko trzeba to wszystko w odpowiednich krokach ułożyć, mieć odpowiedni na to plan i ja to już gdzieś tam przez półtora roku ze swoimi klientami trochę wypracowałem, więc wiem, jak to wygląda i jeżeli to Cię przytłoczyło to zapraszam do siebie i będziemy kontynuować ten temat.
Jak połączyć Javę z JavaScriptem?
Jasne. To jeszcze będziemy mówić, że zapraszamy na Twoją stronę. Tam można znaleźć wiele ciekawych informacji. Między nimi też właśnie podcast, w którym opowiadasz, jak gdyby o tych wszystkich rzeczach, a ja bym się Ciebie zapytał o JavaScript, bo tuta już sobie trochę o nim mówiliśmy. To jak połączyć te dwie technologie, dwa języki Javy i JavaScript? Jak to wygląda?
Takim najlepszym sposobem moim zdaniem teraz, bo ja też umiem trochę programować właśnie w front-endzie, w trochę programowałem swego czasu i też, jeżeli tworzyłem bloga swojego to tworzyłem i Front-end i Back-end i musiałem to jakoś połączyć, więc taka współpraca podstawowa to jest w ogóle znajomość tego, jak uruchomić to na jakimś serwerze, żeby to mogło ze sobą komunikować. To jest chyba największy problem osób, które gdzieś tam zakodzą projekt front-endowy, zakodzą projekt backendowy, ale jak to teraz połączyć? Czyli Twoja aplikacja wystawia end-pointy. To już o tym mówiliśmy, że na przykład wyświetli mi te dane na front-endzie. Tylko że front-end wyświetla to w taki ładny sposób, a nie tylko tekstem i żeby to połączyć to back-end musi wystawiać jakiś end-point, po którym front-end się komunikuje z tym back-endem.
Oczywiście tam dochodzi różna autoryzacja bo nie wszystkie end-pointy chcemy wystawiać dla wszystkich, więc tutaj możemy to ograć na przykład czymś takim co jest bardzo popularne, czyli dwójką, że aplikacja front-endowa wysyła różne autoryzacyjne tokeny na przykład i dzięki temu te dwie aplikacje mogą się komunikować ale żeby to zainstalować na jakimś serwerze to bardzo często wykorzystuje się coś takiego jak Docker, bo Docker potrafi wszystko w jednej paczce wrzucić, odpalić dwa kontenery, jeden kontener z frontendem, drugi kontener z back-endem. Możemy to wszystko skonfigurować sieciowo i to też jest de facto powoli robota trochę back-endowców.
To nie jest tak, że jak idziesz programować w Javie, to będziesz programować tylko kodzik. Będziesz też mieć pytania o na przykład sieć, czyli jak działa protokół http, https, jak to wszystko zabezpieczać i tak dalej, więc mogą współpracować frontem z back-endem właśnie w ten sposób, że wystawiają end-pointy, a jeżeli mamy na przykład dwóch programistów niezależnych to warto ustalić jakiś kontrakt między sobą, że na przykład na tym end-poincie będą dane o użytkowniku, na tym end-poincie będą dane o postach tego użytkownika i tak dalej, więc te kontrakty też są bardzo ważne, bo jeżeli ktoś złamie kontrakt, to znaczy, że na przykład aplikacja front-endowa może się nagle wywalać, więc kontrakt to pamiętajcie jest rzecz święta.
Jeżeli gdzieś tam się umawiacie na kontrakt, jak ma wyglądać odpowiedź, jak ma wyglądać zapytanie, jak ma wyglądać url to zawsze się tego trzeba trzymać, bo później mogą wychodzić różne smaczki i to tak myślę, że tak to współpracuje z back-endem.
Jak dobrze trzeba znać Javę, żeby zrealizować pierwsze zlecenie komercyjne?
Jasne. OK. Dobrze to w takim razie kolejne trudne pytanie. Tak mi się wydaje. Jak dobrze musimy znać Javę, aby móc zrealizować swoje pierwsze zlecenie komercyjne?
To właśnie zależy jak to dokładne zlecenie komercyjne by wyglądało, bo zazwyczaj zlecenie komercyjne polega na tym, żeby zrobić wszystko od zera, ale jeżeli byśmy byli częścią zespołu na przykład, że mamy front-endowcowca i back-endowca to na pewno musimy znać spring boota. To jest coś, co dzisiaj jest po prostu must hav’em, jeżeli chodzi o Javę. A jeżeli chodzi o samą Javę to tak jak już mówiłem wcześniej te wszystkie podstawy, które omówiliśmy, czyli bazy danych, komunikacja chwil z bazami danych z perspektywy Javy, czyli Hibernat na przykład i ogólnie komunikacja czyli jak wystawiać end-pointy to są takie rzeczy, więc na pewno trzeba znać dobrze spirng boota jak go uruchomić.
Na pewno trzeba znać dockera do tego wszystkiego a Java to swoją drogą, bo tak naprawdę dopiero później to się wszystko dzieje to co jest w tej aplikacji czy w środeczku, czyli to już zależy od skomplikowania naszego problemu biznesowego, czyli czy musimy napisać sklep internetowy, czy musimy napisać aplikację dla osób, które pracują w szpitalu i to musi być jakaś super wydajna aplikacja lub taka, która ma odpowiednie zabezpieczenia, więc mamy coś takiego właśnie w spring boocie. Znaczy ogólnie w springu na przykład Spring Security, czyli bardzo dużo takich bibliotek, które wspomagają właśnie takie typowe problemy właśnie jak załatwianie spraw z Security, z komunikacją z frontendem, czyli wystawienie tych end-pointów, z komunikacją z bazą danych na przykład więc na pewno spring boot i wszystkie biblioteki springa oprócz spring boota oczywiście trzeba znać w taki sposób, że potrafisz po prostu zrealizować projekt i tak jak mówiłem wcześniej o tym porządnym projekcie do CV to właśnie jeżeli potrafisz stworzyć taki porządny projekt do tego CV, czyli masz te technologie komercyjne, o których też wcześniej mówiłem to jesteś w stanie zrealizować pierwsze zlecenie komercyjne. Może nie samodzielnie, a może ktoś tam z zespołu jest, jakoś Cię wesprzeć na początku, ale jesteś w stanie to zrealizować na pewno wtedy.
To może jeszcze dopytam, bo nie było to tak jasno powiedziane, ale jeżeli na przykład mamy PHP’a, to w zasadzie są serwery do kupienia. Po prostu wrzucamy tam pliki i to działa. Jak to jest w Javie? Czy są też takie usługi, gdzie w zasadzie już jest on skonfigurowany i możemy tam wrzucić powiedzmy swoje pliki i to będzie działać czy jednak to jest część pracy programisty Javy, który musi skonfigurować sobie taki jakby serwer. Możemy to zrobić za pomocą na przykład dockera, gdzie wrzucamy sobie po prostu plik konfiguracyjny i jest, ale czy można to jakoś prościej zrobić? Są jakieś gotowe rozwiązania czy raczej nie?
Tak. Teraz najbardziej popularnymi są właśnie takie rozwiązania chmurowe. Miałem kontakt właśnie z od Amazona, że po prostu konfiguruje się tam na, czyli na stronie internetowej - Jaki chcesz mieć serwer? W jakiej lokalizacji? Jaka aplikacja będzie tam wgrywana? Czy to będzie właśnie spring boot? Więc jest to wsparcie. Do tego masz też wsparcie w taki sposób, że są tam odpalane wszystkie, czyli te, czyli na przykład sprawdzanie czy ta aplikacja w ogóle działa przez to, że odpalamy testy, które zostały napisane w tej aplikacji przez Ciebie i finalnie wystarczy tak naprawdę wrzucić tam swoje pliki tak jak mówisz czy podpiąć pod repozytorium w GitHubie i to po prostu każdy push później jest z gita powoduje to, że ta aplikacja się na przykład przebuduje i wrzuci na produkcję dla innych klientów, więc jest to bardzo proste teraz jeżeli chodzi o te rozwiązania chmurowe.
OK. To ów, bo tak to zabrzmiało trochę bardzo skomplikowane jak tak wcześniej mówiłeś, co trzeba zrobić, żeby móc uruchomić w ogóle taką aplikację?
Tak. To właśnie to jest ten problem, że skupiamy się na Javie, ale tak naprawdę spring boot bardzo dużo ułatwia, tylko że Javę trzeba przerobić. To jest taka rzecz, którą musisz przerobić po to, żeby później spijać piankę i rozumieć, jak działa Spring, Spring boot i te wszystkie dogodności, które teraz w 2022 roku mamy, więc tak to jest.
Jakie są popularne frameworki dla Javy?
Dobra. To jakby już trochę wspomniałeś w zasadzie, ale mam pytanie, więc może będziesz chciał je uzupełnić - Jakie są popularne frameworki dla Javy i do czego możemy je wykorzystywać?
To tak jak mówiłem właśnie spring i Spring ma takie biblioteki właśnie jak Spring boot, czyli aplikacja, która pozwala nam nie martwić się o wszystkie jakieś konfiguracje, takie typowe, czyli instalujemy tego spring boota obok springa i możemy sobie tworzyć w bardzo szybki i prosty sposób aplikacje webowe, które są zabezpieczone właśnie tym na przykład komunikują się z bazą danych. Mają różne ficzery typu zlecanie jakiś zadań, które mają się na przykład wykonać za tydzień lub za 5 minut, albo na przykład wysłać jakiegoś maila, więc takie wsparcie do takich typowych rozwiązań właśnie na przykład do wysyłki maili to wszystko jest w tym spring boocie i to są takie najbardziej popularne frameworki.
Na pewno jeszcze takim popularnym frameworkiem do testowania aplikacji jest piątka w perspektywie Javy. On też bardzo dużo upraszcza, bo jesteśmy w stanie tak naprawdę dobry projekt, który chcemy utrzymywać przez więcej niż pół roku, powinien mieć testy i w tym właśnie celu na przykład powstał piątka, który pozwala nam naszą aplikację przetestować wzdłuż i wszerz, jeżeli chodzi o testy jednostkowe, ale też Spring boot ma wsparcie dla testów integracyjnych, czyli jesteśmy w stanie zobaczyć czy nasza aplikacja przyjmuje na przykład zapytania na te end-pointy, które wystawiliśmy, więc to wszystko tutaj w tej Javie. Szczerze to są takie dwa główne frameworki, które chciałem wspomnieć.
OK dobra. To może jeszcze na chwilę dopytam o te testy jednostkowe, bo w zasadzie, jeśli chodzi o Junior JavaScript Developera to raczej testy jednostkowe są czymś takim dodatkowym co jest Cię w stanie wyróżnić na tle konkurencji. W przypadku Javy jest to coś co musisz umieć czy to jest też jakaś taka rzecz dodatkowa, którą warto znać? To pozwoli Cię wyróżnić na tle innych?
Znaczy mam takie wrażenie, że to jest dosyć prosta rzecz do nauczenia, więc jeżeli chodzi o taką pierwszą pracę to napisanie jednego testu czy dwóch bardzo mocno właśnie tak, jak powiedziałeś wyróżnia tak jednego kandydata od drugiego, więc jeżeli mamy poświęcić jakiś czas na to, żeby się nauczyć napisać jeden test jednostkowy czy dwa czy poznać jakieś przynajmniej dobre praktyki, żeby kojarzyć, co to są te testy? Co to jest właśnie Unit? Jak możemy to zdefiniować u nas w projekcie, że na przykład jedna klasa to wcale nie musi być Unit to może być cały moduł. Tu już nie wchodzę w szczegóły, ale tak jak mówię, że jest bardziej wyróżnienie się na rynku, mimo że teraz coraz częściej słyszę, że pytają na rozmowach rekrutacyjnych rekruterzy o to, czy znasz testy? Jeżeli tak, to co z tym robiłeś? Jakie znasz frameworki? Jak je oceniasz i to bardziej w ten deseń jako taka dobra praktyka, jako taka rzecz, której raczej nauczą w tej pracy.
Jakie popularne rozwiązania powstały w Javie?
OK dobra. To kolejne pytanko - Jakie tutaj popularne rozwiązania mamy, jeśli chodzi o Javę? Jakiś czas temu rozmawiałem na temat PHP’a i tutaj mamy dość popularnego wordpressa czy prestashop, a w Javie jakie znajdziemy odpowiedniki?
To tutaj na pewno taką rzeczą, która pomaga tworzyć jakieś aplikacje to jest właśnie Android i całe to środowisko pracy, w którym tworzy się aplikację dla systemu mobilnego Android, czyli Android studio. To zostało napisane w Javie, więc jeżeli ktoś pisze aplikacje mobilne to może skorzystać sobie z dobrodziejstw i z systemu Android, bo to jest w Javie i tego systemu, w którym pisze się, czyli w tym tak naprawdę IDE, bo mamy różne idea. Na przykład właśnie w JavaScripcie macie chyba najbardziej popularne. To właśnie kod. W Javie mamy do takich pisania takich aplikacji webowych, a do pisania aplikacji w Androidzie w powstał właśnie w Javie.
Powstało takie środowisko, które się nazywa Android Studio, które pozwala nam na przykład wyświetlać na emulatorze jak będzie wyglądać aplikacja bez konieczności posiadania takiego telefonu przy sobie, żeby po prostu sprawdzić, czy wszystko się dobrze wyświetla i tak dalej, więc to jest na pewno takie chyba najbardziej popularne rozwiązanie, które przyczynia się do tego, żeby tworzyć jakieś aplikacje, ale oprócz tego to na pewno mamy coś takiego to, co wszyscy znają, czyli Netflix.
Netflix bardzo mocno korzysta w swoich mikro serwisach, czyli ogólnie tworzenie mikro serwisów. Jeżeli ktoś chciałby stworzyć jakąś firmę opartą o mikro serwisy, czyli o takie bardzo małe serwisy, w których mamy mnóstwo zespołów i chcemy to wszystko jakoś pożenić, żeby to nie wybuchło, że tysiąc osób nagle pracuje nad jednym projektem to mikro serwisy są właśnie rozwiązaniem na to i Netflix z tego jak najbardziej korzysta do tej komunikacji między mikro serwisami i to też staje się pewnego rodzaju takim frameworkiem, bo oni też wypuszczają różne biblioteki do tego, żeby móc w łatwy sposób się integrować w mikro serwisach i tworzyć właśnie drugiego Netfliksa na przykład i tak jeszcze tutaj dorzucę właśnie ten Minercraft, o którym mówiliśmy to jako gierka, taka raczej zajawka i na przykład Spotify też jest taką aplikacją, która korzysta z Javy, więc możecie sobie napisać drugiego Spotify’a.
Jak uczyć się Javy od zera?
To w takim razie jak już mamy tyle rzeczy, jeśli chodzi o Javę, tak często jest wykorzystywana to myślę, że już spora część osób, które będą słuchać tego podcastu chciałoby się nauczyć w końcu tej Javy, więc jaką drogę nauki polecisz osobie, która w ogóle nie miała styczności z programowaniem?
To przede wszystkim ustalenie planu, sprawdzanie w ogóle siebie czy ta Java nam odpowiada, czy chcemy na pewno iść w back-end, czy może nie chcemy zacząć sobie od frontendu z tego względu, że łatwiej widać te efekty, chociaż w Javie też jest pewnego rodzaju rozwiązanie, o którym zaraz powiem jak widać, jak można zobaczyć od razu efekty, jeżeli na przykład mamy trudniejsze dni w nauce, tego, że nie widzimy efektów działania Javy, więc na początku jest na pewno ustalenie planu, czyli bardzo dużo osób już zaczynało do tego, żeby dojść do tej pierwszej pracy i nie miało nigdy styczności, więc warto znaleźć takie osoby, ale tak naprawdę nie musisz ich szukać, bo ja właśnie wychodzę naprzeciw i tworzę taki krok po kroku, plany jak od zera do junior dewelopera można dojść, więc ten plan masz tak naprawdę za darmo. Jeżeli się nie znajdziesz w sieci i właśnie też oprócz tego, że są te kroki, bo tak nauka podstaw Javy to jest jeden z tych pierwszych kroków. Później nauka baz danych po to, żeby wiedzieć, jak w ogóle tą Javę połączyć z bazami danych i tak dalej. To są kroki, które trzeba wykonać, ale bardzo często jest tak, że dużo osób sobie odpuszcza na którymś z kroków z tego względu, że po prostu za bardzo wchodzą w temat, a nie muszą tego robić.
Jeżeli chodzi o zdobycie pierwszej pracy to bardzo często właśnie wystarczy podstawowa znajomość danych zagadnień, a nie na przykład wchodzenie w sqla i poznawanie jak najwięcej ilości tych obiektów, które tam są i później po to i przez to na przykład rezygnowania, więc to jest taka nauczka, żeby po prostu nie wystawiać sobie, nie ustawiać sobie takiej drogi, że musisz wszystko umieć perfecto i musisz na każdym kroku poświęcić na przykład 2 - 3 miesiące, żeby poznać jak najbardziej SQL bo później masz takie uczucie, że później będzie ci wstyd na rozmowie rekrutacyjnej, że się z czegoś nie obronisz i jakby skracając tą drogę, to najważniejsze jest właśnie dostawać się na rozmowy rekrutacyjne.
Jeżeli już mamy te podstawy, mamy już porządny projekt w CV, bo to też jest bardzo ważne. Dostajemy zadania rekrutacyjne, czyli to jest już sukces, jeżeli dostajemy zadania rekrutacyjne to jest najlepsze miejsce, bo jest taki poligon doświadczalny, w którym sprawdzamy się, jaką aktualnie mamy wartość na rynku tak naprawdę i czy ktoś chce nas zatrudnić, więc jeżeli będziemy aplikować do 15, 20, 30 firm, będziemy wysyłać CV’iki i też wysyłanie CV to też jest odrębny temat. To jest odrębny krok na tej drodze, bo to też można robić dobrze lub źle. Ja nawet kiedyś zrobiłem webinar, na którym porównywałem CV osób, które dostają pracę, a które nie dostają pracy, bo to są już takie podobne błędy, które ludzie popełniają i takim protipem teraz takim na szybko by było, żeby zawsze, jeżeli wysyłasz jakieś CV to robić to w kontekście danej oferty pracy, żeby nie robić tak, że wysyłasz jedno CV. Najlepiej w ogóle w języku polskim do 30 firm z czego 15 to było w ogóle anglojęzycznych i oni chcieli po angielsku To to jest takie przerysowane, ale czasami się to zdarza niestety, więc każdy z tych kroków na tej drodze, o którym teraz mówiłem w bardzo krótkim stopniu opowiedziałem jest pewna doza dobrych praktyk, które ja właśnie przez 1,5 roku poznawałem z różnymi osobami, którym się udawało, którym się nie udawało, ale później coś zmienialiśmy i się udało zdobyć tą pierwszą pracę, więc najważniejsze dojść do rozmów rekrutacyjnych, bo później i tak będziesz mieć stresa.
Te pierwsze rozmowy rekrutacyjne zawsze są takie, że trochę trzeba je potraktować znowu jak taki poligon, bo będziesz przepytywany lub przepytywana przez kogoś, kto jest doświadczony. Będziesz się czuć na celowniku i to jest totalnie niepotrzebne, ale to trzeba przejść po prostu.
Ja na przykład na swojej pierwszej rozmowie rekrutacyjnej poszedłem tam w garniaku w ogóle. To była rozmowa de facto na front-end chyba i ja tam poszedłem właśnie w garniaku. Dostałem mnóstwo pytań o takie podstawy tak naprawdę, ale ja w praktyce potrafiłem je wykorzystać. Nie potrafiłem ich totalnie wytłumaczyć i to też jest taka rzecz, którą na tych rozmowach rekrutacyjnych musisz doświadczyć. Musisz doświadczyć tego, żeby zrozumieć, że kurczę, dobra. Faktycznie muszę się trochę nauczyć takiej składnej odpowiedzi na to pytanie, bo jednak rozmowy rekrutacyjne zazwyczaj w większości przypadków sprowadzają się do tego, że musisz dobrze się wyrazić, dobrze zrozumieć dany temat. Ja, nie mówię tutaj o nauce na pamięć rzeczywiście typowych pytań, tylko po prostu przeczytanie, znalezienie w internecie, bo bardzo dużo osób umieszcza.
Na przykład u mnie w kursie też jest taki specjalny plik, gdzie mamy typowe pytania, typowe zadania, typowe rozwiązania tych zadań i tak dalej, więc wszyscy się dzielą. Oczywiście to zmieniamy, to jest wszystko legalne. Zmieniamy te dane firm i treści zadań, ale po prostu tego typu zadania, jeżeli nie przerobisz ich wcześniej, to dopiero na rozmowach rekrutacyjnych spotkasz się z nimi i to też jest dobre, bo to jest końcówka drogi tak naprawdę, na której dostajesz feedback od rynku pracy, który Ci mówi, że jeszcze musisz trochę podszkolić SQL, musisz trochę jeszcze tą Javę, tutaj tę kolekcję musisz poćwiczyć.
Może jeszcze tutaj dodam, że jeżeli masz te pytania to warto po prostu sobie je przerobić w taki sposób, że wziąć to pytanie i odpowiedzieć na głos, jakbyś Ty odpowiedział rekruterowi. Jeżeli on faktycznie Ci by zadał to pytanie, bo to, że my mamy pytania i odpowiedź i sobie ją przeczytamy, to jest inna rzecz, a inaczej jakbyśmy się wysławiali, więc warto sobie to przetestować, a w ogóle najlepiej to znaleźć kolegę, z którym na zmianę sobie zadajecie te pytania i odpowiadacie, bo wtedy faktycznie testujesz jakbyś to powiedział, bo to co Ty myślisz, że byś powiedział, a to co powiesz to są dwie różne rzeczy często.
Tak, dokładnie.
Jakie są dalsze kroki do znalezienia pracy?
I co mamy tutaj jeszcze dalej, jeśli chodzi o właśnie dalsze kroki do znalezienia pracy?
To tak. To już jak jesteśmy na tych rozmowach rekrutacyjnych, dostaliśmy feedbacki to w najlepszym przypadku dostałem oferty pracy. Tutaj jest też kolejna kwestia, czyli jaką firmę wybrać, żeby się też nie wkopać, żeby mieć tam mentora więc to też jest taki powiedziałbym już taki fajny punkt, ale też trzeba na nim uważać.
Tutaj na pewno bardzo dużo czasu się poświęciło na te poprzednie kroki, na przykład 6 miesięcy, 7 miesięcy. To ja znam takie osoby właśnie z którymi ja współpracowałem, które zaczynały od podstaw Javy nie znając na przykład dobrze tego języka, to udawało im się dojść i dostawali oferty pracy.
Jeżeli dobrze tą drogę wypracowałem przez te 1,5 roku wykonywali i walidowali i zbierali feedback na każdym z tych kroków i jeżeli chodzi o takie materiały, które mógłbym podzielić się, takie typowe, sprawdzone materiały, takie must have’y to na pewno jest taka książka,,Algorytmy ilustrowane”. Przewodnik. To też jest anglostyczna językowo. Każdy może ją czytać, ale to jest trochę takie uzupełnienie studiów, a dla osób, które nie były na studiach to jest tak naprawdę swego rodzaju trochę takie zbawienie, bo bardzo często na rozmowach rekrutacyjnych, tak jak już mówiłem są pytania o podstawy i algorytmy na przykład i struktury danych, czyli takie rzeczy, które w każdym języku mają zastosowanie, czyli złożoności obliczeniowe, złożoności pamięciowe, notacja dużego o na przykład, dlaczego jakieś algorytmy sortowania bąbelkowego działają wolniej lub szybciej od innego sortowania i tak dalej, że w ogóle są takie algorytmy już wypracowane to warto posiąść tą książkę, bo później na rozmowach rekrutacyjnych na pewno będą pytania czy rozumiesz jak działa jakiś algorytm lub dlaczego Twoje rozwiązanie czy jak napisać Twoje rozwiązanie, które tu widzimy drogi kandydacie na Junior Java Dewelopera lub Java script developera. Dlaczego można by było je napisać w lepszy sposób?
I tutaj musi właśnie wyjść Twoja świadomość tego, że nie tylko trzeba rozwiązać zadanie, ale rozwiązać je w jak najbardziej efektywny na przykład pod kątem złożoności obliczeniowej czy złożoności czasowej w czasie, więc tutaj taka książka na pewno się przyda i też taki must have, jeżeli chcesz zacząć i przejść tą drogę, taki fajny sposób to czysty kod. Książka. Też bardzo polecam i te wszystkie kroki, o których tutaj mówiłem o tej drodze. Ja opisuję bardzo dokładnie na swoim newsletterze na javaready.pl, więc jeżeli chcesz dowiedzieć się jak konkretnie i jakie materiały, jakie kroki od zera do junior Java dewelopera przerobić to zapraszam tam właśnie na to, żeby się zapisać, co sobotę jest mail.
Jak uczyć się Javy, znając już inny język programowania?
Dobrze, to mamy te informacje, jak ktoś chce w ogóle zacząć od jakiegoś języka programowania, a jak to jest, jeżeli ktoś by chciał się nauczyć Javy, ale już programował w innym języku. To masz na to pomysł jak można się nauczyć wtedy w efektywny sposób Javy?
Tak. Ja jestem ogólnie fanem tego, żeby jak najwięcej w praktyce się uczyć i w razie potrzeby doczytywać. Czyli jeżeli umiesz programować w jakimś języku to zakładam, że umiesz, rozumiesz pewne podobieństwa między tym językiem a Javą czyli wiesz że są if’y, wiesz, że są fory, wiesz że są jakieś klasy i teraz tak naprawdę najważniejszym by było stworzenie projektu, który działa, który możesz pokazać przed rekruterami i żeby się nauczyć tego języka to to będzie też dla Ciebie idealny dowód, że rozwiązujesz jakiś problem na przykład życiowy, że chcesz dla swojej dziewczyny czy mamy czy taty zrobić jakiś projekt, który ułatwi im życie i chcesz to zrobić w Javie, więc jeżeli uda Ci się to zrobić to masz wtedy takie przeświadczenie, że umiesz już programować, a takimi sprawdzonymi sposobami i sprawdzonymi miejscami, które pozwolą Ci jak najszybciej wywindować tą umiejętność programowania w Javie właśnie w sposób tego że dzielisz praktykę i teorię.
Ja lubię to dzielić skali, że 70% swojego czasu, który siedzisz i się uczysz to powinna być praktyka a 30% to powinna być teoria z tego względu że tak naprawdę w praktyce się najwięcej uczymy, najwięcej zapamiętujemy. Jest tam właśnie taka piramida nauczania się, że im więcej faktycznie robisz z danym problemem, tym więcej zapamiętujesz i rozumiesz i takim miejscem jest na przykład. Taka strona, gdzie jest właśnie przeplatanie między praktyką a teorią. Masz później zadania do wykonania i tam jest właśnie Java. To bardzo polecam i też taka strona jak. Tam są takie zadania, do których masz treść, przykładowe rozwiązanie. Później na rozmowach rekrutacyjnych też to się pokrywa. Bardzo często te problemy, które są tam do rozwiązania i też ostatnio taka rzecz to problem. Też polecam. Też ma bardzo dużo zadań i to też jest taki newsletter, który mogę polecić, jeżeli ktoś chce codziennie rozwiązywać sobie jakieś zadanie, jakiś problem programistyczny czy to izir czy to medium czy to hard.
Ja też skorzystałem z tego i tak ogólnie otaczanie się tak naprawdę tym językiem.
Jeżeli chcemy się go nauczyć, też są takie aplikacje jak enki na telefon darmowe, więc tam też masz bardzo dużo takich pytań, testów a, b, c, d po to żeby jak najlepiej zrozumieć składnie Javy, całą bibliotekę i tak naprawdę bardzo dużo się pokrywa. Jeżeli umiesz jeden język, to Java nie będzie trudna, a w szczególności, jeżeli to jest C++ to wtedy masz łagodne przejście i tak to wygląda.
Jaką książkę polecić osobie, która chce programować w Javie?
Dobrze. To tak na koniec pytanie, jaką książkę polecić osobie, która chce programować w języku Java?
Jedną książkę by było ciężko polecić i to też zależy, bo nie zawsze też polecam książki na start, żeby się nauczyć. Raczej bym polecał właśnie zacząć od prostych zadań, w których nie musisz otwierać książki, nie musisz się zmuszać, nie musisz tam planować tego wszystkiego, tylko odpalasz stronę W3Schools na przykład. Tam są bardzo proste zadania z przykładowymi rozwiązaniami i możesz wpisać ten kod już nawet w takim edytorze online i jeżeli to Ci się spodoba i masz tu jakieś problemy, na przykład chcesz się dowiedzieć co robi dana funkcja na przykład, dlaczego tu mi się wyświetla na ekranie tekst to wtedy faktycznie książka taka jak na przykład Java to jest coś, co polecam. Na pewno alternatywnie do tego Java podstawy od Horst Mana. Podlinkujemy zapewne i to są też podstawy i tam masz całą składnię Javy od if’ów przez fory, więc to na pewno Ci, jeżeli chodzi o książki, to mogę polecić.
Gdzie można znaleźć Bartka w sieci?
OK. Dobra. To już ostatnie pytanie dzisiaj ode mnie, gdzie możemy Cię znaleźć w sieci? Już parę razy padło, ale może podsumujmy sobie wszystko, żeby było w jednym miejscu.
Dobra. To mnie można znaleźć właśnie głównie na javaready.pl. Tam zapraszam do zapisania się właśnie do tego jeszcze newslettera, gdzie mówię od zera do Junior Java Dewelopera jakie kroki wykonać. Oprócz tego udzielam się też na swojej grupie na Facebooku, gdzie mamy już prawie tysiąc osób. Jak zostać Junior java developerem. Też tam serdecznie zapraszam.
Na pewno zapraszam też do swojego kursu Junior Java ready. Teraz aktualnie w czerwcu będzie otwarcie tego kursu, więc na javaready.pl/ kurs możecie zobaczyć, jaka jest oferta tego wszystkiego, jak ja mogę Ci pomóc zdobyć pierwszą pracę w Javie.
Jeżeli masz podstawy programowania to oczywiście podkreślam to, że nie uczę od podstaw, tylko uczę już osoby, które jakieś podstawy mają i chcą zdobyć tą pierwszą pracę. Na przykład wydały jakieś pieniądze na Bootcampy i coś nie poszło, albo na przykład są na studiach i czują, że te studia trochę nie prowadzą do tego, żeby zdobyć tą pierwszą pracę, bo sam byłem kiedyś na tym etapie, że moja pierwsza praca w Javie to było takie zderzenie z rzeczywistością między studiami a światem komercyjnym. Czego tak naprawdę się uczyć i właśnie ten kurs to wszystko zawiera i ostatnie miejsce to mój blog, czyli javaready.pl/blog. Jeżeli ktoś chce sobie poczytać więcej o mnie, poczytać na przykład takie wpisy jak 12 ekspertów Javy ułożyłoby swoją drogę od zera do Junior Java Developera to serdecznie zapraszam i to tyle. Tam możecie mnie znaleźć.
To zapraszamy na odwiedzenie wszystkich tych miejsc, a ja Bartku bardzo Ci dziękuję za tą rozmowę i podzielenie się z nami swoimi doświadczeniami.
Ja też bardzo dziękuję za zaproszenie. Bardzo fajnie mi się rozmawiało. Życzę powodzenia dalej z podcastem i do usłyszenia.
Dzięki. Do usłyszenia. Cześć.





