Ta strona wykorzystuje pliki cookie w celu prezentacji dopasowanych dla Ciebie treści. Możesz włączyć/wyłączyć obsługę plików cookies w swojej przeglądarce.

Dowiedz się więcej
Jak uczyć się Javy?

Jak uczyć się Javy?

Opublikowano  przez Marek Zoellner

Czym jest Java? Od czego zacząć naukę tego języka? Co powinien umieć Java Junior Developer? Na co zwracać największą uwagę, a czego unikać? O tym opowiadamy w kolejnym webinarze, który prowadził tradycyjnie Maciek Olaczek.

Najpierw kilka słów wprowadzenia na temat Kodilli. Gdyby ktoś nie wiedział, czym jest Kodilla, to jest mi bardzo miło powiedzieć, że jesteśmy najchętniej wybieraną szkołą programowania, według Instytutu Badań Rynku i Opinii DRB. Mamy dwie główne ścieżki. Jedna to Webdeveloper, druga to Java (o której sobie dzisiaj powiemy). Obydwie od podstaw. Jest jeszcze bootcamp frontendowy, ale on z webdevelopmentem jest mocno związany.

Nauka z nami odbywa się pod opieką i z pomocą Mentorów, czyli doświadczonych w danych technologiach programistów. W formie bootcampów online, czyli takich intensywnych szkoleń nastawionych na praktyczne zdobywanie wiedzy. Online, czyli uczycie się wtedy, kiedy macie na to siłę, chęć, czas i ochotę. Nie musicie gdzieś tam dojeżdżać, żeby realizować nasze szkolenie, uczycie się od siebie z domu logując się na naszą platformę.

Udostępniamy również testy predyspozycji, którymi warto się zainteresować, jeżeli jeszcze tego nie robiliście. Na rozwiązanie takiego testu potrzebujecie około 20 minut w skupieniu. Test znajdziecie pod linkiem poniżej, a na razie chciałem tą uwagę skupić waszą na sobie :)

Darmowy test predyspozycji

Dodam jeszcze, że zwieńczeniem naszych najdłuższych ścieżek szkoleniowych jest opcjonalny Program Gwarancja Pracy , rozszerzone wsparcie HR-owe. Jeżeli nie udałoby się Wam kończąc nasze szkolenie i korzystając z tego programu, ze wsparcia naszych konsultantów HR-owych znaleźć zatrudnienia, to my zwracamy środki za takie szkolenie, wszelkie środki które nam na jego poczet wpłaciliście.

A teraz przejdźmy do clue naszego dzisiejszego spotkania. Pierwsze co mieliśmy poruszyć to od czego tak naprawdę zacząć naukę Javy i ja bym tutaj chciał powiedzieć o takiej rzeczy, która dla jednych z was może się wydać oczywista, nie dla każdego ona oczywista będzie, bo mamy tutaj osoby raczej początkujące, ale jednak na różnym etapie gdzieś tam swojej przygody, swojego researchu dotyczącego programowania. I chciałabym wam powiedzieć przede wszystkim, że Java ma wersję, zresztą jak każdy inny język programowania. Natomiast w przypadku Javy ostatnimi czasy się tu troszkę pozmieniało i ja bym powiedział, że ostatnio ta Java ma nawet tych wersji całkiem sporo. O co tutaj chodzi? Przede wszystkim musicie wiedzieć, że ucząc się różnych technologii niejako związanych z programowaniem niejako skazujecie się na to, że non stop będziecie się kształcić dalej, bo one się zmieniają, pojawiają się nowe funkcjonalności, pewne są gdzieś tam usuwane i również pracodawcy tworzą projekty w oparciu o różne wersje danego języka, danej technologii, danej biblioteki.

Jeżeli chodzi o Javę to tutaj taką istotną zmianą tak naprawdę która zadziała się na przełomie 2018 i 2019 jest zmieniony jakby cykl publikowania kolejnych wersji Javy przez firmę Oracle, która jest, która w zasadzie odpowiada za rozwój Javy. To co tutaj widzicie to taki rozrysowany timeline, kurcze brakuje mi polskiego słowa. Generalnie rozrysowana ścieżka jak w kolejnych latach będą przedstawiać się kolejne wersje Javy i to na co warto zwrócić uwagę to to, że przy niektórych z nich jest taki dopisek LTS, LTS czyli Long Time Support, chodzi tutaj o to, jak długo dana wersja jest wspierana przez twórcę czy to w tej wersji darmowej, czy przez różne rozszerzone programy wsparcia. I tak jak kiedyś Java, która już naprawdę wiele, wiele lat istnieje na rynku i jest wiele, wiele lat rozwijana, o czym zresztą sobie powiemy, bardzo długo czekała na kolejne wersje Javy tak teraz nieco została zmieniona polityka, a propos tego kiedy te wersje się pojawiają. One pojawiają się gęściej, natomiast gro z nich z tego co widzicie nie ma tego dopisku LTS, czyli tak zwanego Long Time Support i one niejako są wypuszczane po to, żeby pewne rzeczy gdzieś tam testować już w faktycznie warunkach produkcyjnych.

Natomiast tak naprawdę zdecydowana większość firm, która tworzy oprogramowaniu w oparciu o Javę, zwraca się tylko i wyłącznie w kierunku tych wersji z rozszerzonym długim supportem. I to jest na przykład odpowiedź na pytanie dlaczego my nigdy nie uczyliśmy Javy w wersji 9 czy 10, bo tak naprawdę zanim ktokolwiek, kto zaczyna naukę Javy, opanowałby Javę w wersji 9, już na rynku pojawiła się Java w wersji 10, która za chwilę od razu, w zasadzie po 3 miesiącach została zastąpiona przez Javę w wersji 11, która dopiero jest tym sensownym kierunkiem, w którym warto iść, na który warto patrzeć i tego trzeba mieć świadomość. To dotyczy nie tylko Javy, ale też innych technologii że nie zawsze, co myślę jest taką ogólną poradą, ale myślę bardzo istotną w tym kontekście nauki programowania, nie zawsze pożądane jest, żeby gdzieś tam rzucać się na takie totalne nowości, bo musimy wiedzieć w jaki sposób funkcjonuje rynek, w jaki sposób rynek adaptuje te technologie, jak to wszystko wygląda.

W przypadku Javy w takim ogromnym skrócie możemy powiedzieć, że sensowne gdzieś tam są te LTS-y, przy czym ja tutaj mocno ten temat spłaszczam. Natomiast no w przypadku innych języków też trzeba brać pod uwagę, że nie zawsze to co gdzieś tam wyczytamy na szybko, że pojawiła się nowość, to nie zawsze oznacza, że powinniśmy w tym kierunku iść, tego od razu się uczyć, bo zaraz się może pojawić inna wersja, a gdzieś tam tak naprawdę na rynku mało kto będzie tego wymagał. I w tym momencie jesteśmy w takiej ciekawej sytuacji, ponieważ od kilku miesięcy na rynku mamy Javę 11, która będzie długo wspierana i mamy też Javę 8, która będzie generalnie rzecz biorąc wspierana do tego samego momentu co Java w wersji 11, w tej oczywiście płatnej wersji oferowanej przez support Oracle. I co nam to mówi? Mówi nam to to, albo jeszcze wcześniej się cofnijmy. Trzeba by zauważyć, że tak naprawdę do tego momentu zdecydowana większość projektów jest tworzona w Javie w wersji 8 i pewnie jeszcze trochę to potrwa, natomiast Java 11 to jest ten kierunek w którym warto zmierzać się w perspektywie kilku lat i ona będzie kolejnym takim mocnym punktem który będzie na tym rynku funkcjonować.

Natomiast na ten moment nie ma specjalnie osób gdzieś z doświadczeniem z Javą 11, to są tylko osoby, które z Javy 8 mogą się przesiadać na Javę 11 i pewne rzeczy już tam potrafić zrobić. Ewentualnie do kwestii przejścia z 8 na 11 jeszcze sobie więcej porozmawiamy. Natomiast jeżeli jeszcze chodzi o to wykorzystywanie konkretnych wersji Javy to na potwierdzenie moich słów pokażę wam tutaj takie zestawienie, które co prawda zostało sporządzone na początku ubiegłego roku. W tym momencie […] pracuje nad ankietą wśród programistów, dokładnie teraz jak sobie rozmawiamy nad aktualizacją tej ankiety. I tutaj z 17 krajów developerzy którzy programują w Javie mówili o tym z jakich wersji Javy korzystają. No jak widzicie Java 8 jako ten LTS na tamten moment najbardziej aktualny zdecydowanie większość rynku posiada. W Javie 9 było to 18%, w Javie 10 na czas tego badania tak naprawdę to się spięło z premierą tej Javy 10, a za chwileczkę pojawiła się Java 11. I myślę, że wyniki gdzieś tutaj procentowe dla tego badania, które zakończy się gdzieś pewnie w lutym, marcu będą generalnie trochę podobne.

Oczywiście pojawi się tutaj Java 11, natomiast dalej większość projektów będzie w Javie 8, co wynika z pewnej specyfiki Javy, ale do tego sobie jeszcze dojdziemy. Poza samą kwestią języka jako takiego warto sobie powiedzieć, że z Javą tak naprawdę można pójść w wiele stron. Bo co można zrobić w Javie? W Javie możemy tworzyć aplikacje korporacyjne. Możemy tworzyć w Android Studio, które jest oparte na Javie, aplikacje na Androida, niektórzy mówią, że to jest taka druga młodość Javy i tak naprawdę na wiele, wiele innych urządzeń Java jest takim językiem, który gdzieś tam oryginalnie został zaprojektowany z taką myślą żeby można go było uruchomić w różnych ekosystemach. Część z was, to może trochę przesadzam, ale część z was gdzieś pamięta odtwarzacze DVD, to nie jest odległa przestrzeń w czasie. I kiedyś twórcy Javy chwalili się tym, że tak naprawdę 100% odtwarzaczy DVD ma oprogramowanie napisane w Javie właśnie.

Oczywiście w Javie można też, albo korzystają z narzędzi opartych na Javie można też tworzyć tak zwane testy automatyczne, ale to jest temat dla doświadczonych w tej dziedzinie osób. I oczywiście aplikacje internetowe łącząc je gdzieś tam za pośrednictwem JavaScriptu z tą warstwą front endową widzialną dla użytkowników.

To, co jest bardzo istotne z punktu widzenia myślę waszego, czyli tak naprawdę gdzie tej pracy jest w Javie najwięcej? No nie ma co się oszukiwać, myślę, że spokojnie 8 na 10 ofert pracy, a może nawet 9 na 10 ofert pracy będzie dotyczyło gdzieś tam aplikacji korporacyjnych, systemów bankowych, gdzieś tam dla firm ubezpieczeniowych, ewentualnie no nie wiem, jedna z tanich linii lotniczych ma również back end swojej aplikacji, całej w zasadzie obsługi kupna biletów napisana w Javie, także ogromne, ogromne przedsięwzięcia właśnie w tej Javie się realizuje. O tym warto wiedzieć, to sobie warto odnotować, jeżeli myślicie o pójściu w tym kierunku, bo prawdopodobnie w takiej sporej organizacji byście się znaleźli. Natomiast to co jeszcze chciałbym zaznaczyć to fakt, że dzisiaj tak naprawdę odchodzi się od takich aplikacji, kiedyś klasycznych, stricte desktopowych, uruchamianych gdzieś tam na komputerze, większość rzeczy dzieje się w tak zwanym Webie, w internecie po prostu. i kiedy znowu, odwołamy się do badania przeprowadzanego przez JetBrains wśród programistów z pytaniem jakich frameworków webowych ci programiści wykorzystują, to tutaj nie trudno zauważyć, że pojawia nam się i zżera w zasadzie całą resztę Spring w dwóch pozycjach tutaj, a to dlatego że Spring jest taką specyficzną biblioteką, w zasadzie specyficznym frameworkiem modułowym, naprawdę ogromna, ogromne zagadnienie jeżeli chodzi o Springa jako takiego. I tutaj dwa z jego modułów zdecydowanie królują. Więc jeżeli wiemy, że uczymy się Javy i stawiamy na Javę webową, bo tutaj jest największe gdzieś tam pole, jeżeli chodzi o kwestię zatrudnienia to od razu widzimy jakie technologie zaraz za tym powinny iść, co powinniśmy opanować. I w tym momencie chciałbym też zwrócić uwagę na to, że gdzieś tam przeglądając, bo siłą rzeczy wiemy jak wygląda gdzieś tam rynek szkoleniowych, różne materiały edukacyjne, które możecie znaleźć, zakupić czy też po prostu korzystać z nich w sposób darmowy.

Czasem mogą się tam pojawiać takie rzeczy jak na przykład Swing, Java FX, JSP, czy […] i teraz tak, ja naprawdę nie wiem dlaczego w wielu miejscach jeszcze mówi się o tym, że warto tych tematów się uczyć, ponieważ jeżeli chodzi o Swinga i Javę FX to są tak naprawdę… elementy Javy stworzone do … właśnie, przemyślane do tworzenia graficznych interfejsów ale w aplikacjach desktopowych, z których od dzisiaj już raczej się odchodzi, trzymamy wszystko w sieci. Druga sprawa jest taka, że jeżeli cofniemy się do tego, że Java 11 zaraz jest tą sensowną, do której powinniśmy gdzieś tam zmierzać w perspektywie najbliższych lat, to na przykład Java FX już w tak zwanym JDK ściąganym ze strony Oracle nie występuje. Możemy go sobie gdzieś tam dociągnąć jeżeli chcemy, ale już samo Oracle stwierdziło, że tak mało projektów z tego korzysta, że gdzieś tam w standardzie tego nie ma sensu dorzucać.

I kolejna sprawa JSP Servlety to też są zdecydowane tematy od których się odchodzi we współczesnym programowaniu, a to dlatego że ma to pewną wadę i jest w pewien oczywisty sposób nie wydajny. Kiedyś do aplikacji Javowych podchodziło się w taki sposób, że nawet jeżeli byliśmy w stanie sobie napisać z wykorzystaniem różnych właśnie tego rodzaju technologii warstwę frontendową, czyli to co użytkownik widzi, a nie tylko ten backend, logika aplikacji, to co się gdzieś tam dzieje pod spodem, to tak naprawdę ten kod był w jednym miejscu, on musiał być każdorazowo kompilowany jeżeli coś się zmieniło. I teraz tak, myślę, że łatwo jest sobie wyobrazić, że takie rzeczy natury estetycznej powiedziałbym w aplikacji dosyć często chcemy modyfikować, coś nie wygląda jak byśmy tego chcieli, mamy jakąś inną wizję. I teraz to każdorazowo wymagało od początku kompilacji całości kodu, który tak naprawdę powstał dla tej aplikacji. I to mogło trwać godzinami tylko dlatego że stwierdziliśmy sobie, że na tej warstwie front endowej gdzieś tam coś przesuniemy z tego miejsca do innego, także nie miało to kompletnie sensu, dzisiaj to nie ma kompletnie sensu, osobnie tworzymy back end, a osobno podpinamy do tego front end. Tak? Aplikacja gdzieś tam tak zwana restowana.

Czyli przez api łączy się z warstwą frontendową i one po prostu wymieniają między sobą informacje, ta warstwa frontendowa z warstwą backendową. No nie ma sensu, żeby dzisiaj tak naprawdę z wykorzystaniem tego tworzyć kod i tworzyć interfejsy użytkownika. To tak trochę już zalatuje tak zwanym Legacy Code, tak? czyli ktoś kiedyś to napisał, a dzisiaj generalnie nie chcielibyśmy się tym w ogóle zajmować, bo jest to po prostu nie wydajne. Kolejna z rzeczy, która myślę jest dosyć istotna i gdzieś tam może się wam w głowie pojawić w momencie kiedy zastanawiacie się nad Javą to takie pytanie, czy ten język programowania jest trudny. I gdyby chcieć sobie na to odpowiedzieć tak naprawdę pokrótce i jednym słowem, to myślę że odpowiedziałbym wprost, że tak. On może się wydawać relatywnie trudny, natomiast jest tutaj pewne ale.

Mianowicie te trudności, które są z Javą gdzieś tam związane, one raczej nie dotyczą tych sfer, o których wy możecie myśleć w momencie kiedy jesteście osobami początkującymi, czyli gdzieś tam tematy związane z samą składnią języka, jak pewne rzeczy się tworzy, jak je się pisze, mówiąc wprost o samej składni, one moim zdaniem specjalnie nie odbiegają od innych języków wysokopoziomowych, natomiast są tutaj pewne różnice, są pewne niuanse, które Java nam narzuca, tylko mówiąc absolutnie szczere to są takie rzeczy, które nawet jeżeli będą trudniejsze w swoim charakterze od jakiegoś innego języka, który pewnych ram na was nie narzuca, to z jednej strony to wam wyjdzie na dobre, bo od razu was uczy dobrych praktyk, Java w pewnym sensie tego wymaga już na samym starcie, a druga sprawa jest taka, że to są tematy tak naprawdę na pierwsze kilkanaście kilkadziesiąt nauki, bo składnia to jest tak naprawdę sama podstawa. Większość tych problemów związanych z Javą wynika raczej z tego gdzie ten język jest wykorzystywany.

Ustaliliśmy sobie obszar korporacyjny, wielkie aplikacje nad którymi pracuje wiele osób jednocześnie. One poza tym, że dzisiaj zostały gdzieś tam napisane przez X programistów to skoro gro programistów na to pracowało, koszt wytworzenia tego oprogramowania był spory, w związku z tym raczej firmy nie są chętne do tego, żeby gdzieś tam super na hura przepisywać jakieś rozwiązania, tworzyć je całkowicie od nowa, aplikacje się rozwija i utrzymuje kolejnymi latami. Zresztą systemy bankowe to w ogóle z tego słynął. Są takie języki, które dzisiaj się wykorzystuje tylko i wyłącznie tam, bo 20-30 lat temu coś zostało napisane i bardziej się opłaca to utrzymywać niż przepisać od początku w innym rozwiązaniu dlatego że to są ogromne, ogromne kobyły gdzieś tam mówiąc w cudzysłowie. Być może część z was słyszała o takim języku jak Cobol to chociażby jest taki przykład takiego języka. I w tak dużych organizacjach, w tak dużych projektach, z jednej strony jest miejsce dla wszystkich, dla tych najbardziej doświadczonych, dla architektów systemów, dla tak zwanych seniorów, czyli dla osób, które mają spore doświadczenia w danym języku, danej technologii. Dla wewnętrznych trenerów, którzy uczą pewnych funkcjonalności w swoich zespołach, dla analityków, którzy współpracują zarówno z tą stroną biznesową po stronie klienta, jak i z działami IT. Tak? ale również dla młodszych programistów, którzy otrzymują pewne zadania również do realizacji.

To z kolei wiąże się tak naprawdę ze stałą rekrutacją i ciągłym wdrażaniem nowych pracowników. I to może być problem, bo to wymaga naprawdę wysokiej kultury pracy, od tych organizacji, które non stop wdrażają nowych pracowników, bo musicie wiedzieć, że tutaj też proces wytwórczy oprogramowania trwa, jeżeli mówimy o aplikacjach bankowych. Ja sam rozmawiając ze znajomymi, którzy pracują no w tym wypadku w banku, nie będę mówił w jakim, ale była taka sytuacja z pierwszej ręki, gdzie przez pół roku pracy dla banku programista, który zdecydował, że zmienia pracę, dopiero po dwóch latach gdzieś tam już będąc w innej organizacji usłyszał o tym, że te jego zmiany nad którymi on rozpoczynał pracę dzisiaj gdzieś tam finalnie się w tej aplikacji pojawiły.

Także takie rzeczy też się gdzieś tam dzieją i o tym też musicie wiedzieć. Jeżeli chcecie zmieniać świat tutaj, teraz, szybko, tworzyć jakieś przełomowe rzeczy, to pewnie nie w korporacji i pewnie nie w Javie, tutaj wszystko idzie troszkę wolniej, w taki sposób bardzo ustrukturyzowany, ale to po prostu jest specyfika tych projektów. Technologie wspomagające dla Javy, no generalnie rzecz biorąc z racji tego, gdzie są wykorzystywane też są bardzo drogie.

Oczywiście można sobie dobierać bazę danych, serwery i tak dalej. W takich miejscach, gdzie nie będzie to kosztowało tak zwanych milionów monet, ale w tych rozwiązaniach komercyjnych, to są rzeczy, które są naprawdę drogie w utrzymaniu. I z tym wszystkim, o czym sobie powiedzieliśmy do tej pory wiąże się również to, że sama kontrola wersji oprogramowania i sposób wprowadzania zmian oczywiście musi być odpowiednio nadzorowany. Tych problemów można by wymieniać wiele, wiele więcej, ale jak już pewnie sami zauważyliście większość z nich tak naprawdę nie dotyczy programowania sensu stricte, a już na pewno nie tego co gdzieś tam na początku osobom, które tak naprawdę zaczynają swoją przygodę z programowaniem powinno spędzać sen z powiek. To nie są tematy, którymi wy jako Juniorzy gdzieś tam będziecie się przejmować. Co do samego programowania to tak jak już mówiłem nie ma tu specjalnej różnicy, jeżeli chodzi o gdzieś tam stopień skomplikowania tego zagadnienia w Javie, tudzież w innym języku. Kwestia składni to naprawdę jest temat który jest samym początkiem nauki. I tak naprawdę rozmawiałem z wieloma gdzieś tam osobami z różnych firm, z wieloma programistami, też prowadziłam wspólne webinary i zapadło mi w pamięć takie zdanie, które powiedział Szymon Pawlak z PGS Software gdzieś tam na pytanie właśnie od jednego z uczestników na jaką technologię powinienem postawić, która jest gdzieś tam łatwiejsza do nauki. On powiedział, że to w zasadzie nie ma znaczenia w jaką technologię zaczniemy się wgryzać, to grunt, żeby zabrać się za to w odpowiedni sposób i mieć do tego motywację, bo to nie jest tak, że po 15, 20, czy 50 godzinach będziecie gotowi do tego, żeby podjąć prace i podjąć się komercyjnych projektów, tylko na to trzeba poświęcić o wiele więcej, no ale oczywiście ten wybór powinien być jak najbardziej świadomy i powinniście wiedzieć o tym, że jeżeli już bierzecie się za Javę to gdzie później prawdopodobnie traficie do pracy, nad jakimi projektami będziecie pracować, w jakich technologiach, żeby uczyć się konkretnych bibliotek, frameworków i żeby nie być rozczarowanym, że poświęciliście X czasu na naukę, a potem trafiliście do korporacji uciec.

Także research trzeba zrobić, ale gdzieś tam koniec końców ten język programowania, który chcecie sobie wybrać, moim zdaniem powinien być bardziej wybrany na bazie tego co chcecie tworzyć i gdzie chcecie tworzyć a nie gdzieś tam na bazie tego, że ktoś powiedział, że coś jest łatwiejsze, albo trudniejsze, bo to jest jeszcze kolejny temat, a co to znaczy, że język programowania jest łatwy, albo trudny. Generalnie rzecz biorąc patrząc z perspektywy czasu to dzisiaj te języki webowe w zasadzie wszystkie, z których dzisiaj korzystamy są o niebo łatwiejsze niż te, w których pisano 20 lat temu, także relatywnie rzecz biorąc i tak dzisiejsi programiści jeżeli nie zajmują się tam językami niskopoziomowymi z jakiejś tam specyfiki, a jednak większość rzeczy tworzy się webowo, to tego nie robią, to tego życia nie mają aż tak trudnego. Okej, powstaje pytanie co musi umieć junior java developer, żeby potencjalny pracodawca był zainteresowany jego zatrudnieniem. Tutaj musicie wiedzieć, że my zanim ułożyliśmy nasz program szkoleniowy, poświęciliśmy wiele, wiele godzin na dyskusję, ale nie taką wewnętrzną, tylko wychodząc dalej, do firm, które programistów Java po prostu zatrudniają. Rozmawialiśmy z osobami na stanowiskach kierowniczych, z project managerami, architektami systemu i również z programistami, którzy javą się zajmują na temat tego jak mniej więcej powinien wyglądać taki modelowy junior, jak powinna wyglądać jego wiedza, którego chcieliby widzieć w swoim zespole, który pomógłby im w rozwoju programowania, a jednocześnie mógłby czerpać wiedzę od nich. Na tej podstawie sporządziliśmy listę, która potem była bardziej konkretnie rozpisywana, natomiast mówiąc hasłowo to oczywiście taki junior developer musi rozumieć ideę programowania obiektowego.

To jest moim zdaniem taka rzecz, którą tak naprawdę w 100% można zrozumieć dopiero w momencie kiedy stworzy się jakiś kod właśnie zorientowany obiektowo i będziemy wiedzieli jak z tych obiektów klas i metod korzystać. Oczywiście składnia Javy, składnia języka jest tutaj niezbędna i na te dwie pierwsze rzeczy tak naprawdę około 40 godzin gdzieś tam sobie poświęcamy. Potem dochodzą takie tematy jak struktury danych, wzorce projektowe, żeby w przypadku pewnych znanych problemów nie wymyślać koła na nowo, korzystamy z pewnych wzorców projektowych. Framework odpowiedni który rozwija nam umiejętności, przepraszam nasze tak, ale rozwija możliwości tego co piszemy. I oczywiście znajomość baz danych. I to co nas dosyć mocno zaskoczyło to były tematy, które poruszały osoby związane raczej z zarządzaniem zespołami, które zwracały uwagę na to, że studenci, bo większość osób, która do nich gdzieś tam trafia to byli studenci, absolwenci uczelni wyższych, o ile z tych kwestii stricte technicznych twardych nie miało większych problemów, czyli opanowany był gdzieś tam ten materiał, to samo środowisko programistyczne i wprost tak jak tutaj napisałem zrozumiałym językiem obsługa aplikacji, w której piszemy kod, tak zwanego IDE, który nam może przyspieszyć tą pracę zdecydowanie była na naprawdę marnym poziomie, te osoby nie znały pewnych możliwości tego oprogramowania i przez to nie były wydajne.

To są takie absolutne podstawy. No i my oczywiście staraliśmy się to przełożyć na praktyczne, jak najbardziej praktyczne umiejętności. No i na tej bazie rozpisaliśmy program naszego szkolenia na 6 albo na 9 miesięcy. Tam dochodzą dodatkowe projekty praktyczne. I teraz tak, ja przejdę krok po kroku po tym czego my uczymy. Natomiast nie robię tego tylko dlatego żeby gdzieś tam pokazać, że tylko nauka z nami ma sens, bo to oczywiście nie jest prawda, można się uczyć w różny sposób, ale nawet jeżeli chcecie się uczyć sami, to jednak ta ścieżka jest głęboko przemyślana, ustrukturyzowana i odpowiada temu, czego wymagają pracodawcy, dlatego chciałbym żebyście nawet jeżeli chcecie uczyć się gdzieś tam sami korzystając z innych materiałów w pewnym sensie się na tym wzorowali. Ona poniekąd jest rozpisana w naszym informatorze, ale tak jak mówiłem ja tutaj myślę, że w niektórych miejscach wejdę bardziej w szczegóły, niż jest to opisane w samym informatorze.

Zanim zaczynamy kurs z Javy z mentorem na takim ustrukturyzowanym bootcampie my udostępniamy dla was do zrealizowania tak zwany prework, czyli takie materiały wstępne i myślę, że około tydzień, 15-20 godzin spokojnie powinien wam wystarczyć na to, żeby opanować takie absolutne podstawy składni we własnym zakresie. Poznajecie pojęcie co to w ogóle jest zmienna, co to jest tablica, co to są instrukcje warunkowe w Javie, a w zasadzie nie tylko w Javie, tylko w ogóle w językach programowania. Mówimy tutaj sobie co to jest obiektowość na razie bym powiedział tak na sucho, bo generalnie rzecz biorąc, gdyby wam rzucać definicję polimorfizmu, czy enkapsulacji to tak sobie przeczytacie, okej, spoko, ale to trzeba przejść w praktyce. No i oczywiście co to jest kompilacja, czyli w którym momencie ten kod, który my tutaj sobie piszemy, który dla was jeszcze nie jest zrozumiały, ale generalnie rzecz biorąc w miarę jest zrozumiały dla człowieka.

Tłumaczony jest na język maszynowy, że tak to powiem w uproszczeniu i komputer wie co z tym naszym kodem zrobić. W pierwszym tygodniu tak naprawdę pokazujemy i niejako ratujemy wasze pierwsze linijki kodu, które napisaliście w preworku przed falą tak zwanych if-ów, czyli instrukcji warunkowych. I pokazujemy, że o ile podejście strukturalne gdzieś tam kiedyś królowało, dzisiaj piszemy raczej w sposób obiektowy i na przykładzie pokazujemy różnice, że pewne rzeczy można zrobić w tym przypadku szybciej, bardziej zwinnie i pewne odpowiedzialności klas i metod pozwalają nam pracować nad kodem bardziej wydajnym. Tutaj pokazują się te trudne słówka o których mówiłem przed chwileczką związane wprost z podejściem obiektowym. Mówimy też o czymś takim, co zwane jest klasą abstrakcyjną. I to jest generalnie rzecz, którą zajmujecie się w pierwszym tygodniu. Ja tutaj zaznaczam, że każdy tydzień mniej więcej, 15-20 godzin nauki powinien wam zająć, żeby ten materiał opanować. W drugim tygodniu zaczynamy uczyć się trochę więcej w tej Javie robić, mówimy sobie o pętli, for, coś co się może wykonywać w jakimś tam czasie, mówimy sobie o kolekcjach, czyli o zbiorach obiektów tego samego typu, znowu odwołanie do obiektowości, mogą to być listy, mogą to być mapy, mówimy też sobie o tak zwanej notacji Big O, która tak naprawdę służy do wyboru odpowiedniego algorytmu, biorąc pod uwagę ile mamy danych gdzieś tam wejściu i w jaki sposób chcielibyśmy je przeanalizować, który z algorytmów może być bardziej wydajny.

Mówimy też sobie o takim rozwiązaniu, który pozwala nam przypisać jakby wprost pewne rzeczy związane z typami prymitywnymi do odpowiadających im obiektów, czyli gdzieś tam ratujemy znowu to programowanie strukturalne i przechodzimy do obiektowości. Jesteśmy dopiero w drugim tygodniu, a generalnie program szkolenia ma 6 miesięcy, także troszkę przyspieszę kolejne tematy. I tutaj na przykład dwa tygodnie wspólne, zaczynamy działać na kolekcjach, czyli na tych zbiorach obiektów tak? Mówimy sobie o pewnych interfejsach, mówimy sobie o wykorzystaniu pętli for, czy while na kolekcjach, o pewnych pomiarach na tych kolekcjach. Mówimy sobie o temacie, który możecie znać ze studiów, jeżeli gdzieś tam… w zasadzie szeroko, szeroko się pojawiają kwestie kolejkowania, bo to i wszystko co jest związane z informatyką i też gdzieś przy okazji tematów z ekonomią również, bo tam czasem pojawiają się kwestie gdzieś tam liczenia czegoś. Takie rzeczy jak kolejki fifo, tudzież lifo tak? czyli First in first out. Pierwsze co się pojawiło to pierwsze powinno zostać obsłużone, albo wręcz przeciwnie tworzymy sobie taki stos, jak gdzieś książki w jakimś tam pudełku, to co jest na samej górze to co przyszło ostatnie pierwsze powinno opuścić daną funkcję i gdzieś tam zwrócić swój wynik. Idąc dalej, w drugim miesiącu, bo dopiero przerobiliśmy pierwszy miesiąc, zaczynamy szerzej sobie mówić o takich narzędziach developerskich, które na co dzień są wam niezbędne i pomagają współpracować w grupie, ale tak naprawdę też w waszej indywidualnej pracy są wam niezbędne, mówimy o tak zwanym IDE o całym środowisku, o tym czego czasem, z czym czasem mają problem studenci, mówimy o takich rzeczach jak terminal, jak repozytorium, jak system kontroli wersji, to są takie rzeczy, które są oczywiście niezbędne. Wprowadzamy też tematykę związaną z testowaniem, ale też takim podejściem do programowania ono nazywa się test driven development, czyli zanim faktycznie napiszemy jakąś funkcjonalność w naszej aplikacji to my tworzymy test, który sprawdza czy ta funkcjonalność działa.

Może się wydawać to dziwne, ale tak naprawdę to zwiększa efektywność pracy, wierzcie mi, możecie sobie na ten temat gdzieś tam więcej przeczytać. Tutaj też pojawia się obsługa błędów, wyjątków. I oczywiście pewne dobre praktyki jak najszybciej trzeba sobie wpajać, idea czystego kodu, dlaczego to jest istotne, tak zwany solid code, także to są kolejne zagadnienia o których warto wiedzieć. Trzeci miesiąc na półmetku wprowadzamy framework, kiedy już sporo rzeczy w czystej Javie jesteśmy w stanie wprowadzić, Spring, który oczywiście jest modułowy, wprowadzamy tak zwany model MVC, wzorce projektowe, to są rzeczy o które na pewno będziecie pytani na rozmowach rekrutacyjnych i oczywiście bazy danych, bez danych na backendzie sobie za wiele nie zdziałamy, bo ciągle musimy się do tych baz danych odwoływać, pewne rzeczy na danych wykonywać.

Oczywiście z Javą łączymy sobie relacyjną bazę, MySQL, czy w ogóle SQL jako taki, tworzenie i modyfikacja obiektów, zapytania, komunikacja w ogóle z bazą danych i też takie rzeczy które w praktyce w korporacyjnym środowisku są wykorzystywane jak tak zwane biny, które pozwalają pisać już takie naprawdę złożone aplikacje. Widzę, że pojawiają się pytania, ja oczywiście za chwileczkę też na nie odpowiem. Ale skoczmy do czwartego miesiąca, kolejne rzeczy, które powinniśmy wiedzieć, mapowanie ORM, czyli obiektowo relacyjne, utrwalamy sobie obiekty, które są gdzieś tam w aplikacji javovej w bazie danych. Z tym bardzo często łączony jest Hybernet, taka najpopularniejsza biblioteka służąca właśnie do mapowania bazy, znowu Spring, walidacja danych w obszarze naszej aplikacji, tworzenie też widoku aplikacji, wprowadzamy takie absolutne podstawy warstwy frontendowej, żebyście byli w stanie zaprezentować użytkownikowi te aplikacje i oczywiście zadziałać na tym co ten użytkownik tam z nią finalnie zrobi, a do tego wszystkiego jest nam potrzebne tak zwane restowe api, umiejętność komunikacji z Api, czyli takiego mówiąc wprost intefejsu programowania aplikacji, który pozwala na wymianę informacji między na przykład waszą aplikacją, a gdzieś tam jakąś zupełnie inną.

Często z Api, z różnych api zewnętrznych pobiera się jakieś dane, w jaki sposób się je przetwarza i wyświetla we własnej aplikacji. No nie wiem, gdzieś tam z Wikipedii możecie z jej api pobrać listę krajów, ich stolic i tak dalej, coś tam sobie robicie, wrzucacie to do siebie do aplikacji, nie musicie tego trzymać u siebie, odwołujecie się do innych źródeł danych. Bardzo praktyczne podejście i generalnie bez tego dzisiaj się tak naprawdę programować nie da. I piąty i szósty miesiąc, zobaczcie, tak naprawdę dopiero tutaj przygotowujemy aplikację do tak zwanego deploymentu, czyli gdzieś tam do upublicznienia jej powiedzmy sobie w środowisku produkcyjnym tak? To jest ten deployment, tutaj pojawiają się takie rzeczy Shell, jak Tomcat, umieszczamy aplikację na Herocu, łączymy to z frontendem i pokazujemy całemu światu co stworzyliśmy. I mówimy sobie o takiej bardzo ważnej rzeczy, która tak naprawdę następuje u każdego programisty w każdej aplikacji a mianowicie tak zwana refakturyzacja kodu w skrócie refactor, bo generalnie musicie wiedzieć, że każdorazowo, niezależnie od tego jak bardzo byście się starali pisząc dany kod, będzie tak, że jeżeli wrócicie do niego po kilku miesiącach, albo jeszcze latach, to zawsze pomyślicie sobie kurcze czemu ja to tak napisałem.

Jeszcze super będzie jak będziecie wiedzieć co ten kod wykonuje, to znaczy, że go napisaliście całkiem nieźle, ale zawsze jest coś takiego, że kurde, czemu ja wtedy nie wiedziałem, że mogłem to zrobić w inny sposób, albo pojawiła się jakaś nowa technologia wspomagająca powiedzmy sobie, nowa biblioteka, jakaś nowa funkcjonalność we frameworku, która daną funkcjonalność obsłużyłaby lepiej, szybciej, no generalnie stwierdzilibyście, że wypadałoby to napisać od nowa, inaczej bo tak byłoby lepiej i to jest właśnie refaktoryzacja kodu, na to też wam zwracamy uwagę. Mówimy też o testach integracyjnych w ramach waszych aplikacji, obsługa poczty przez waszą aplikację i znowu dochodzą pewne kolejne wzorce projektowe. I tak naprawdę teraz jesteście na tym etapie takiej skumulowanej wiedzy, która pozwala wam wkroczyć jako Junior po intensywnych 6 miesiącach do faktycznego projektu, no i oczywiście dalej się ucząc tak naprawdę na tych pierwszych projektach komercyjnych poszukiwać pracy w obszarze IT. I na to wszystko co tutaj robiliśmy składa się mniej więcej biorąc pod uwagę średnią wśród naszych kursantów jak im te moduły czasowo wychodzą, 480 godzin nauki, z których zdecydowana większość ta praktyka no oczywiście gdzieś tam po wcześniejszym zaznajomieniu się z niezbędnymi materiałami teoretycznymi.

Lub opcjonalnie, jeżeli już odwołujemy się wprost do naszej oferty, w tak zwanej wersji plus naszego bootcampu, gdzie dochodzą 3 miesiące projektowe. Pierwszy projekt po 2 miesiącach nauki, potem 2 miesiące kolejny projekt, kolejny i po całej ścieżce ostatni projekt taki dodatkowy, 120 godzin, ale już tylko skupione na praktyce. Z czego drugi projekt tutaj co też myślę dosyć istotne jest grupowy, więc to też wam pokazuję jak wygląda współpraca w faktycznym zespole. I teraz tak, ktoś może się zastanawiać, czy Java jest dla niego. Przede wszystkim, chciałbym powiedzieć, że w przypadku Javy na pewno, generalnie w ogóle programowania trzeba się nastawić na dużą dawkę nauki i to takiej nauki, która będzie też trwała przez całą waszą karierę, to jest taka naprawdę alternatywa gdzieś tam do studiów. Natomiast w przypadku Javy, czy w ogóle języków backendowych, gdzie ta cała magia dzieje się w kodzie pod spodem, a niekoniecznie tutaj, gdzie użytkownik to widzi w tej warstwie front endowej aplikacji, więc takie myślenie trochę abstrakcyjne gdzie możecie z góry wnioskować co w pewien sposób się wydarzy jest tutaj jak najbardziej mile widziane, natomiast Javę są w stanie opanować zarówno osoby, które miały styczność z programowaniem jak i nie.

No każdy przecież kiedyś zaczynał. Z tym zastrzeżeniem, że po pierwsze prawdopodobnie będziecie pracować nad dużymi aplikacjami, a jeżeli tak, to prawdopodobnie w korporacji. To gdzieś tam finalnie w perspektywie lat prawdopodobnie będzie wam wynagrodzone w postaci relatywnie wysokich zarobków, bo programiści Javy są […] znaczy inaczej, średnio programiści Javy są jednymi z tych, którzy zarabiają najwięcej wśród programistów wszystkich technologii w ogóle, także jest to na pewno inwestycja, która jest z tego ekonomicznego punktu widzenia opłacalna. I tak naprawdę ten program nauczania napisany pod rynek w taki mocno skondensowany sposób to jest 20 godzin w tygodniu przez 6 miesięcy. I oczywiście trzeba mieć tego świadomość. Ja już generalnie mówiłem jakie tutaj problemy z tą Javą występują i tak naprawdę one są związane z rozmiarem tych projektów. Tak? ktoś musi mieć wizję tego systemu, wyobrazić sobie jak połączyć te funkcjonalności, jak wybrać te odpowiednie biblioteki i technologie, z których będziemy korzystać. Ktoś musi dbać o wydajność tego kodu napisanego, zarządzać tym systemem wprowadzania zmian, wprowadzać te poprawki i dodawać nowe funkcje, naprawdę, naprawdę przez lata w korporacjach jest łatwiej wymienić prezesa, niż system, który te korporacje obsługuje. Taki trochę żarcik, ale tak naprawdę prawdziwy. Natomiast na szczęście tym raczej juniorzy się nie zajmują.

Może być jakiś wyjątek, ale wtedy radziłbym się zastanowić nad firmą, która by wam coś z tych rzeczy zleciła jeżeli nie mielibyście kilkuletniego doświadczenia komercyjnego, także no żeby takim pozytywnym akcentem gdzieś tam zakończyć tą moją część powiedzmy sobie wykładową. I oczywiście Java też, gdybyście byli zainteresowani jak najbardziej stara się te problemy rozwiązywać. Chociażby przez to, że ten język jest przez ponad 20 lat rozwijany. Jest naprawdę szereg wzorców projektowych, które generalnie odwołują się do programowania jako takiego, ale też do dużych projektów i taki ustandaryzowany sposób tworzenia, pisania aplikacji, programów jest tutaj wypracowany. I to co może się niektórym wydawać na początku trudniejsze w przypadku gdzieś tam składni i pewnych wymogów na samym początku to co mówiłem, te pierwsze kilkanaście godzin nauki sprawia że kod może być nieco cięższy do pisania niż w niektórych tam językach, natomiast on jest łatwiejszy do czytania, a to z perspektywy utrzymania i rozwoju projektu jest absolutnie kluczowe. I to też pomaga w tak naprawdę utrwalaniu dobrych praktyk już na samym starcie, bo pewne rzeczy, które gdzieś tam by przeszły w innym języku, a później mogłyby rodzić problemy, w przypadku Javy raczej mało jest takich możliwości i ciężko jest napisać coś, co na dany moment będzie działać, ale gdzieś tam w przyszłości mogłoby rodzić problemy.

Zostaw swój adres e-mail, a my wyślemy Ci link do pobrania video.
Umów się na rozmowę z doradcą Kodilli