136

Zacząłem naukę JavaScript na bootcampie – moje odczucia i wrażenia

Czy bootcamp to wszystko, czego potrzeba, by zostać programistą? Co trzeba wiedzieć, wybierając tę formę nauki? Jak wygląda w praktyce? Jakie są wady i zalety bootcampów? Postanowiłem samodzielnie odbyć kurs i przekonać się na własnej skórze, czy warto. A swoimi wnioskami dzielę się z Wami w tym artykule.

Dynamicznie rosnące zapotrzebowanie na programistów sprawia, że coraz więcej osób widzi dla siebie szansę w branży IT. W efekcie, jak grzyby po deszczu rosną różne formy nauki. W internecie jest już całe mnóstwo kanałów i płatnych/bezpłatnych kursów programowania. Przybywa też książek – nawet nie tyle na temat konkretnych języków co po prostu o pracy programisty i sposobach na „zostanie programistą”.

Na tym tle szczególnie interesującą i kuszącą formą nauki wydaje się być bootcamp. Trwający od pół roku do nawet 10 miesięcy kurs (w trybie weekendowym – w trybie stacjonarnym całość zamyka się nawet w 2 miesiącach) ma nas przygotować do rozpoczęcia pierwszej pracy w zawodzie programisty. Bootcampy są drogie – ceny najlepszych przekraczają 10 tys. złotych. W zamian otrzymujemy jednak kompleksowe wsparcie, kilkaset godzin nauki i tonę zadań do wykonania – wszystko pod okiem wykładowców i opiekunów. Po zakończeniu nauki natomiast możemy skorzystać z biura karier i pośrednictwa podczas szukania pracy. To znacząco ułatwia znalezienie pierwszej posady jako programista.

Postanowiłem sprawdzić na własnej skórze, czy w rok da się nauczyć programowania. Poszedłem na jeden z takich weekendowych bootcampów. Wybór padł na najstarszą, bo działającą od 2013 roku, szkołę programowania w Polsce – Coders Lab. A konkretnie na ich kurs JavaScript połączony z Reactem (a więc typowy frontend).

Zanim zaczniemy

Od razu na wstępie wyjaśnijmy jedną rzecz. Bootcamp to nie jest żadna tajemna wiedza. Patrzę właśnie na harmonogram kursu, na którym jestem. Nie ma tam żadnej magii. Tego wszystkiego można nauczyć się samodzielnie. Po prostu siadasz i uczysz się. Codziennie po 2-3 godziny programujesz metodą prób i błędów, oglądasz kursy, siedzisz na stackoverflow.com i zadajesz setki pytań.

Po co zatem bootcamp? Spójrzmy prawdzie w oczy – większość ludzi nie jest na tyle zdyscyplinowana, żeby samodzielnie nauczyć się programowania. Poza tym obecność osoby (specjalisty w swojej dziedzinie), która tłumaczy, wyjaśnia i odpowiada na pytania jest często o wiele lepsza niż mówiący do nas youtuber. Ten ktoś zadaje nam zadania, a następnie je sprawdza. Podpowiada, co robimy źle i tym samym zapobiega wykształcaniu się złych nawyków. A to w programowaniu niezwykle ważne przecież. Dodajcie do tego egzaminy po każdym module, prace domowe, setki linków do stron z dodatkowymi materiałami (których samodzielne znalezienie też wymagałoby dodatkowego czasu). Korzyści jest sporo.

Nie zmienia to jednak faktu, że kursant potrzebuje dużo determinacji i motywacji, by uczyć się samodzielnie między zajęciami. I tutaj wracamy do początku. Jeżeli nie czujesz tego, nie masz w sobie pociągu do programowania i nie daje ci to żadnej satysfakcji/radości to nie zmieni tego prawdopodobnie nawet kilka(naście) tysięcy złotych, które zapłacisz za kurs. Nie ma magicznej pigułki. Nikt na bootcampie nie nauczy się za ciebie. Wydaje się to oczywiste, ale podejrzewam, że nie każdy zdaje sobie z tego sprawę.

Dlatego zanim uznamy, że bootcamp to lekarstwo na całe zło tego świata i będziemy w nim upatrywali swoją szansę na zarabianie pięciocyfrowych kwot (najlepiej programując na hamaku gdzieś na Wyspach Kanaryjskich), warto spróbować nauki samemu. Być może okaże się, że mamy w sobie na tyle determinacji i samodyscypliny, by samodzielnie opanować podstawy i nie tylko. W każdym razie będzie to też dobry test, czy programowanie jest faktycznie dla nas.

Prework i pierwsze zajęcia

Jeszcze przed pierwszymi zajęciami kursanci otrzymują ogrom materiałów w formie prezentacji. Dotyczą one oprogramowania używanego na kursie, ale też wprowadzają do obsługi Gita oraz podstawowych zagadnień. Co dziwne, prezentacje sugerują instalację Ubuntu jako dodatkowego systemu. Tymczasem w praktyce okazuje się to całkowicie zbędne. Git działa równie dobrze na Windows. To samo dotyczy oprogramowania – kursanci otrzymują roczne licencje na WebStorm, ale nic nie stoi na przeszkodzie, by używać innych programów. Ja np. od samego początku postawiłem na Visual Studio Code, a po pierwszych zajęciach usunąłem z laptopa Ubuntu i wróciłem do Windowsa.

Przed pierwszymi zajęciami otrzymujemy również tzw. Prework. Są to zadania z podstaw HTML, CSS i JavaScript, które mamy wykonać we własnym zakresie. Potem, podczas pierwszych zajęć mocno się nawiązuje do preworku, co ma stanowić swego rodzaju powtórkę. Moduł ten nosi nazwę „podstawy programowania” i obejmuje takie narzędzia, jak typy danych, zmienne, instrukcje warunkowe, pętle, tablice, funkcje itp.

I tu pojawia się pierwszy zgrzyt, bo po podstawach programowania aż trzy kolejne dni są poświęcone HTML i CSS. W teorii ma to obejmować zaawansowane aspekty tychże, a w praktyce są to w często podstawy, które przecież każdy tutaj obecny już powinien znać. Dopiero pod sam koniec pojawia się Flexbox co jest bardzo miłą odmianą. To też ujawnia podstawową wadę bootcampów – skoro zajęcia odbywają się w grupach to tempo realizacji materiału na ogół jest dostosowane do tych najsłabszych. I niestety daje się to we znaki.

Po każdym module kursanci muszą zdać egzamin. To dwie godziny, w trakcie których należy pobrać zadania z Githuba, wykonać je, a następnie przesłać z powrotem do sprawdzenia. I więcej póki co nie jestem w stanie na ten temat napisać, bo pierwszy egzamin dopiero przede mną. Trzymajcie kciuki. 😉

Aktualizacja 1:

Przegapione zajęcia i wielkie nadrabianie

Jestem już prawie na półmetku kursu. Muszę przyznać, że tempo, z jakim są realizowane kolejne materiały, bywa zabójcze. Nie da się (i jestem tego absolutnie pewnym) uczyć wyłącznie w trakcie weekendów z zajęciami. Żeby nadążać i rozumieć, konieczna jest samodzielna praca w domu. Jeżeli zatem wyciągnęliście niezbyt zdrowe nawyki ze szkoły, że zarwana noc przed egzaminem wystarcza do „nauczenia się” czegokolwiek, będziecie musieli je jak najszybciej zweryfikować. W końcu tutaj nikt nie uczy się, żeby zdać egzamin. Cel jest znacznie większy i (przynajmniej w swoim założeniu) długofalowy.

Ktoś zatem zapyta: po co mi bootcamp, skoro mam uczyć się w domu? Po części odpowiedziałem już na to pytanie wcześniej – wsparcie żywego człowieka. I to jest naprawdę nieoceniona wartość. Oczywiście nie musi to być osoba, z którą fizycznie się spotykamy (e-learning wydaje się być hasłem z poprzedniej epoki, ale ciągle przybywa na rynku bootcampów prowadzonych w 100% zdalnie), ale, moim zdaniem, powinniśmy kogoś takiego mieć. Sam stackoverflow.com nie odpowie na wszystkie nasze pytania i nie objaśni wszystkiego tak dobrze. Oczywiście tutaj znowu może paść argument „mam kolegę programistę, więc wszystko mi wyjaśni”. I to faktycznie jest sensowny powód, by zrezygnować z bootcampa, zakładając oczywiście, że kolega umie cierpliwie i dobrze tłumaczyć.

O warto dobrego tłumaczenia i wyjaśniania przekonałem się na własnej skórze. Opuściłem jeden weekend zajęć z powodu wyjazdu służbowego. Teoretycznie spędziłem potem trochę czasu, żeby to nadrobić – temat dotyczył elementów DOM, poruszania się po drzewie, chwytania elementów, dodawania, usuwania etc. Dziś wydaje mi się to banalnie proste i intuicyjne, ale w momencie, kiedy pojawiłem się na kolejnych zajęciach, przez pierwsze 2 godziny siedziałem z otwartą buzią, próbując wszystko ogarnąć. Gdyby nie wykładowca, który wolne chwile poświęcił, żeby ze mną trochę nadgonić, prawdopodobnie byłoby mi ciężko wejść na właściwe tory.

Co zabawne, wychodzi tutaj teraz ze mnie hipokryta, bo w pierwszej części mojej relacji narzekałem na to, że szybkość realizacji materiału jest spowalniana przez osoby, którym trzeba poświęcić nieco więcej uwagi. Właśnie sam stałem się taką osobą i tym samym doceniłem żywą osobę, która pomogła mi uzupełnić braki. Oczywiście nie obeszło się bez późniejszych powtórek w domu.

I to prowadzi do kolejnych wniosków – systematyczność oraz ciągły rozwój. Już teraz widzę, że programowania nie da się nauczyć raz a dobrze. Wybór tej ścieżki wiąże się z koniecznością ciągłego uzupełniania i rozwijania wiedzy. Natomiast systematyczne jej stosowanie w praktyce jest właściwie niezbędne, by te wszystkie narzędzia, które otrzymujemy do dyspozycji, zapamiętać.

W każdym razie DOM za mną. W międzyczasie pojawił się Gulp, npm oraz narzędzia typu JSHint czy JSLint. Node.js nie jest niestety częścią kursu, bo tu już mocniej wchodzimy w tematy backendowe, ale trudno mi oprzeć się wrażeniu, że prędzej czy później opanowanie go będzie kluczowe – jeżeli ktokolwiek myśli o tworzeniu poważnych aplikacji, a nie stron www ze skryptami. Wrócił też HTML i CSS – bardziej w kontekście RWD, animacji itp. Głównym tematem jest jednak aktualnie SASS, a więc preprocesor CSS, który pozwala na stylowanie projektów w sposób szybszy, bardziej płynny i wygodny.

Jest tego naprawdę dużo, a tempo sprawia, że trudno dłużej zatrzymać się przy jakimkolwiek temacie (przerwa świąteczna była dopiero ku temu doskonałą okazją). Tym samym trudno mi wyobrazić sobie, jak szybko od tematu do tematu muszą przeskakiwać uczestnicy kursów stacjonarnych, gdzie zajęcia odbywają się codziennie.

Aktualizacja 2:

Ile włożysz, tyle wyciągniesz. Bootcamp to nie jest cudowna pigułka

Jeżeli kuszą Was sprzedawane przez niektóre firmy organizujące bootcampy hasła w stylu „gwarantowana praca” czy „15 tysięcy złotych netto”, zalecałbym wiadro zimnej wody – i to raczej prędzej niż później, bo możecie srogo się rozczarować. Przyjęło się w naszym społeczeństwie (i w naszej kulturze) sięganie po rozwiązania szybkie i proste. W końcu żyjemy w czasach, w których 99 proc. problemów z życiem rozwiązuje tabletka, maść lub preparat do ucha. To nie przypadek.

I to samo jest z bootcampami, wokół których powstało wiele szkodliwych przekonań. Im dłużej uczestniczę w swoim, tym więcej na ten temat słyszę i łapię się za głowę. Bo jak bardzo naiwnym trzeba być, żeby uwierzyć w to, że bootcamp to prosta droga do bogactwa, szczęścia i realizacji wszystkich życiowych marzeń. Droga – może tak. Prosta – w żadnym wypadku.

Podszedłem do tematu bardzo poważnie, bo nauka JavaScript (Reacta i paru innych) była i jest jedną z moich życiowych ambicji. Nie oznacza to, że planuję zmienić Antyweba na przytulny boks w jakimś Software Housie. W żadnym wypadku. Czuję się jednak zobowiązany posiadać pewną wiedzę, pracując w mediach technologicznych. Tym samym ostatnie miesiące to była dla mnie solidna orka. Co drugi weekend spędzałem w zamkniętej sali po 8 godzin, ucząc się rzeczy, o których wcześniej nie miałem bladego pojęcia. Dni między zajęciami mijały natomiast na utrwalaniu wiedzy, pogłębianiu jej, szukaniu dodatkowych źródeł, wspieraniu się kursami w sieci. Właściwie trudno zliczyć godziny, które poza bootcampem musiałem poświęcić na naukę, żeby cokolwiek zostało w mojej głowie. I nie oznacza to wcale, że jakoś źle sobie z tą wiedzą radzę. Bardziej wynika to chyba z pewnego perfekcjonizmu oraz wspomnianej wyżej ambicji.

Od ostatniej aktualizacji mojej relacji sporo się zmieniło. Pojawił się webpack, a wraz z nim mnóstwo innych, nowych zagadnień. Nauczyłem się, jak konfigurować to diabelskie narzędzie pod kątem Reacta (i wcale nie mówię tutaj tylko o prostym i przyjemnym Create-React-App). W międzyczasie poznałem też mnóstwo komend npm-a, a także wypróbowałem yarna, co pozwoliło mi podjąć decyzję, z którym z tych narzędzi zostanę na dłużej. Sam React okazał się prostszy niż przypuszczałem – przynajmniej na początku.

Tutaj jednak pojawiły się pewne zgrzyty. Okazało się, że materiały udostępniane w ramach bootcampa są już w pewnym stopniu nieaktualne. Wcale nie musi to oznaczać winy samej szkoły (choć nie ukrywam, że miło by było, gdyby na bieżąco reagowali na zmiany w technologiach). Otóż tempo, w jakim zmieniają się rozwiązania front-endowe przyprawia o ból głowy. Kilka miesięcy temu do Reacta dodano Hooks, co może nie wywraca go do góry nogami, ale znacząco wpływa na sposób tworzenia komponentów. Jednocześnie jest to też sugestia, że z czasem React będzie się opierał głównie na komponentach funkcyjnych, a nie klasowych, których na bootcampie używamy zdecydowanie częściej. To oznacza, że początkujący programista już w trakcie trwania bootcampu musi obserwować te trendy, żeby stosować odpowiednie priorytety. Jeżeli tego nie zrobi, będzie budził się w nocy z krzykiem „deprecated”.

To prowadzi też do innych wniosków. Oczywistym jest, że praca programisty oznacza nieustanną naukę. Mniej mówi się jednak o tym, że niezwykle istotna jest umiejętność ustanawiania priorytetów. Uczenie się wszystkiego, co nowe nie ma najmniejszego sensu i może skutkować jedynie stratą czasu. Tempo zmian – szczególnie we front-endzie – jest ogromne.  Zanim zdążymy coś dobrze opanować, rozwiązanie to może (oczywiście nie musi) stać się przestarzałe i niewarte nauki. Odpowiednia selekcja informacji jest zatem kluczowa.

W chwili, gdy piszę te słowa, jestem po napisaniu ostatniego egzaminu. Przede mną dwa weekendy warsztatów, w trakcie których będę pracował nad swoim końcowym projektem. Na początku wspominałem o tym, jak ważna w przypadku nauki w grupie jest… grupa. Jak się okazało, z tą, w której jestem nie jest tak źle. Wręcz przeciwnie! Poziom jest na tyle wysoki, a tempo ogarniania kolejnych tematów na tyle duże, że prowadzący jest w stanie dorzucić nam ekstra wiedzę, której nie ma w programie, jak Redux, Firebase czy po prostu dodatkowe zadania, triki i narzędzia. Oczywiście nie da się w ten sposób nauczyć wszystkiego na dany temat, ale stanowi to niewątpliwie dużą zaletę.

Jaki będzie mój końcowy projekt? To póki co pozostaje jeszcze słodką tajemnicą. W kolejnej aktualizacji napiszę na pewno o nim więcej. Jeżeli macie jakiekolwiek pytania dotyczące nauki na bootcampie, piszcie w komentarzach lub łapcie mnie na social media – postaram się na wszystkie odpowiedzieć.

 

Materiał będzie aktualizowany wraz z moimi postępami na kursie. Chciałbym w możliwie najbardziej przystępny i rzetelny sposób zrelacjonować przebieg bootcampu (w Coders Lab – to oczywiście nie znaczy, że we wszystkich szkołach wygląda to tak samo) i ocenić, czy warto uczyć się w taki sposób. Śmiało zadawajcie pytania – na wszystkie postaram się odpowiedzieć.