Kurs programowania dla początkujących okiem mentora.
W sieci można odszukać wiele artykułów przedstawiających kurs programowania z punktu widzenia uczestnika. Ja postanowiłem przedstawić jak to wygląda od strony mentora.
Na początku kursu poznajemy się. Dla mnie to bardzo ważny moment. Nie wszyscy go lubią, nie każdy przecież lubi opowiadać o sobie i o swoich dotychczasowych doświadczeniach z programowaniem. Ale ja naprawdę muszę Was bliżej poznać. Przede wszystkim zależy mi na ogólnym rozeznaniu grupy. Na tej podstawie muszę odpowiednio dobrać poziom i tempo zajęć wprowadzających. W tych pierwszych chwilach czuję, że jest ogólna fascynacja i bardzo duże zainteresowanie ogólnymi tematami dot. programowania.
W kolejnych dniach rejestruję kolejne Wasze spostrzeżenia. Mówicie, że "jest spoko", ten HTML oraz CSS czy SCSS jest do "ogarnięcia" i "przetrawienia" (słowa zaczerpnięte z Waszych wypowiedzi :). Widzę też, że niektórzy z Was zaczynają te podstawy mówiąc delikatnie "lekceważyć". Jednak odradzam taką postawę. To bardzo ważny etap nauki i odpuszczenie sobie bieżącej pracy może się źle skończyć w późniejszym czasie. HTML oraz CSS będzie się "przewijać" cały czas podczas kursu, nie tylko na podstawach. Cały szkielet, treść czy wreszcie "wygląd" witryny/aplikacji zależy od tych języków/technologii.
Później przechodzimy do podstaw JavaScript, też jest "spoko", nadal nie musicie tracić zbyt dużo czasu na dodatkową naukę w domu :) Na razie jest "luzik": zmienne, typy, instrukcje warunkowe, funkcje itd.
Ale etap zagadnień podstawowych się kończy (nie można w nich tkwić w nieskończoność). Właśnie tutaj dla niektórych zaczynają się lekkie "schody". Przychodzi czas na JavaScript bardziej zaawansowany, a tu: obiekty, właściwości, metody, konstruktor, dziedziczenie, hermetyzacja, ES6, TypeScript itd. Dla osób faktycznie nie mających wcześniej styczności z programowaniem to może być najtrudniejszy moment w trakcie całego kursu programowania. Tu bowiem, tak naprawdę zaczynamy dopiero programować. Ale również tu zaczynają się najciekawsze zagadnienia. Coś się wreszcie zaczyna dziać, następuje interakcja z użytkownikiem, dodajemy ciekawe efekty: menu interaktywne, slidery oraz walidację danych wprowadzanych przez użytkownika. Wow! jakie to fajne. Jeśli się odnajdujesz w tym wszystkim, to dalej będzie już tylko lepiej ;) Dlaczego szczególnie akcentuję ten moment? Ponieważ to właśnie tu zauważam u osób początkujących największe trudności. Najważniejsze, aby się od razu nie zrazić. Nie ma chyba osoby, która nauczyła się programowania ot tak, bez żadnego wysiłku. Więc i Ty się nauczysz, ale daj sobie (i mnie) trochę czasu. Jeśli nie zrozumiałeś wszystkiego "z marszu" to postaraj się to przerobić jeszcze raz w domu. Usiądź na spokojnie i zerknij na to jeszcze raz. Dodatkowo zalecam Wam poszukiwanie innych, kolejnych przykładów. Może właśnie inny przykład, czy dodatkowe ćwiczenie do Was bardziej przemówi. Teraz tylko pozostaje ćwiczyć, pytać, ćwiczyć, pytać i jeszcze raz ćwiczyć ;) Pamiętajcie, że "trening czyni mistrzem". Oczywiście w każdym momencie możecie liczyć na mentora, jednak pamiętajcie proszę, że ta osoba poza prowadzeniem grupy ma też inne zajęcia zawodowe oraz rodzinę ;)
Szczególny nacisk (w grupie początkującej) kładę na porządne zaznajomienie się z językiem JavaScript. Wychodzę z założenia, że jeśli dobrze poznasz pierwszy język programowania, to z kolejnymi pójdzie Ci o wiele łatwiej. Nie wierzysz? Wyobraź sobie zatem taką hipotetyczną sytuację. Posiadasz prawo jazdy na samochód osobowy. Po jakimś czasie znajomy prosi Cię o poprowadzenie pojazdu dostawczego ;) Zasady ruchu drogowego są Ci już znane, prawda? Jedyne co teraz musisz zrobić to nauczyć się paru zasad obowiązujących przy prowadzeniu tego typu pojazdu oraz doskonalić swoje umiejętności przez kolejne jazdy. Ale, co ważne nie uczysz się już wszystkiego od początku! Działasz jedynie na zasadzie analogii (porównując sposób jazdy samochodem osobowym do prowadzenia "dostawczaka" i odwrotnie). Sensowne?
Kolejną kwestią godną poruszenia jest odpowiednia rezerwacja czasu na nukę programowania. Tak, musisz mieć sporo czasu. Warto więc zadbać o to, aby wcześniej uporządkować jakieś sprawy zawodowe oraz osobiste, które mogą nadmiernie Cię absorbować. Jeśli będziesz miał spokojną głowę i mniej napięty harmonogram związany z Twoimi codziennymi obowiązkami nauka pójdzie znacznie lepiej.
Kolejne spostrzeżenie. W trakcie kursu programowania poznajemy też technologie, które są związane z programowaniem, ale programowaniem stricte nie są. Wymienić tu można choćby system kontroli wersji GIT czy repozytoria zdalne GITHub. Równie niezwykle istotna jest umiejętność sprawnej obsługi systemu operacyjnego, a w nim tzw. terminala. Tak, chodzi o to "czarne okienko" w którym wpisujemy jakieś "dziwne" polecenia ;) Moje spostrzeżenie jest takie, że większość osób ma początkowo problemy z przyswojeniem komend terminala (na co dzień jesteśmy jednak przyzwyczajeni do pracy z "okienkami" i klikaniem). Jednak w późniejszym etapie wraz ze wzrostem odpowiednich ćwiczeń praktycznych staje się to o wiele prostsze. Niniejszym chcę podkreślić, że wiedza programisty znacząco wychodzi poza ramy samej znajomości konkretnego języka programowania. Poznanie dodatkowych zagadnieniń technicznych też jest niezmiernie istotne.
Zdarza się również, że na pewnym etapie kursu osoby same z niego rezygnują. Jednak żadna z tych osób mi nie powiedziała, że to z mojej winy, co uważam za osobisty sukces. Najbardziej by mnie bolało gdyby to przeze mnie ktoś stracił chęć do dalszej nauki... Co najważniejsze, osoby te absolutnie nie żałują podjętej decyzji o rozpoczęciu kursu. Przecież bez tej decyzji prawdopodobnie nigdy by nie sprawdziły swoich predyspozycji i żyły w przeświadczeniu, że "przecież można było spróbować". To też ważny element w poznawaniu samego siebie. Oczywiście przykro mi jest, że muszę się z Wami rozstawać, ale jak to mówią "nic na siłę". To Wasza decyzja i trzeba ją przyjąć z poszanowaniem. Staram się jeszcze przekonywać i proponować dodatkową pomoc, ale jak decyzja jest świadomie podjęta, to raczej nic jej nie zmieni. W późniejszym czasie trafiają do mnie informacje, że świetnie sobie radzicie w innych dziedzinach. Na zajęciach jest dużo logiki, a logika jest niezbędna również w innych branżach.
Wreszcie zbliżamy się do końca kursu. Teraz rodzą się w Waszej głowie nieco inne pytania, niż te na początku. Czy znajdę pracę, jak jej szukać, czy pracować dla małej firmy, a może dużej korporacji, ile będę zarabiać??? Moja rada: na początek zachowajcie umiar. Sami oceńcie swoje umiejętności, pracujcie nadal nad samorozwojem i udoskonalajcie Wasz warsztat, a sukces przyjdzie z czasem. Moim zdaniem na początek warto szukać mniejszych firm, które poświęcą Wam trochę więcej czasu, aby spokojnie zdobywać bezcenne doświadczenie. To z Waszych opowiadań wiem, że niektórzy z Was trafiali na takie firmy, gdzie nikt Wam początkowo nie chciał pomóc. Macie radzić sobie sami i już. Ale, to też może być zaletą! Wtedy sami musicie szukać rozwiązania problemu, a wierzcie mi, jak sami do czegoś dojdziecie nie zapomnicie tego do końca życia :) Z moich obserwacji wynika (a raczej z otrzymywanych maili), że większość z Was znajduje pracę po ok. 3-4 miesiącach po ukończeniu kursu. Możecie mi wierzyć, że nie ma dla mnie nic milszego, niż otrzymanie informacji o sukcesie mojego kursanta. Jestem wtedy z Was niezmiernie dumny i cieszę się, że mogłem Wam pomóc w procesie samorealizacji.
Na koniec dodam, że spotkania z Wami są dla mnie największą przyjemnością i sensem mojej pracy zawodowej. Najważniejsze jest to, że robię coś, co bardzo lubię. Kiedyś zadano mi pytanie "Czy ty się z nami nie nudzisz?". Pytanie zadała osoba na zajęciach z podstaw programowania, gdy faktycznie tłumaczyłem ten sam temat po raz kolejny. Proszę mi wierzyć, że nie. Zajęcia zawsze są ciekawe, nieważne na jakim poziomie zaawansowania. A to, że trzeba niekiedy powtórzyć ćwiczenie lub je dokładniej wytłumaczyć to "normalka". My mentorzy nie znamy przecież odpowiedzi na wszystkie Wasze pytania, które mogą się pojawić na każdym etapie nauki. Niejednokrotnie musimy dodatkowo przeanalizować Wasz problem i wskazać jakieś sensowne rozwiązanie. Ale właśnie dzięki temu cały czas się rozwijamy i przy prowadzeniu tego typu zajęć się nie nudzimy. Uważam, że najlepsze są zajęcia prowadzone na zasadzie obustronnej współpracy, a nie na zasadzie "monologu" wygłaszanego przez prowadzącego. Taka organizacja zajęć daje ogromną satysfakcję z wykonanej pracy.