Jak się uczyć programowania?

Nauka programowania to ciężka i żmudna rzecz. By osiągnąć w nim profesjonalizm, trzeba poświęcić setki - a może nawet - tysiące godzin czasu na klikanie w klawiaturę. Mimo to, zawód programista oznacza naukę przez całe życie. Jak więc robić to dobrze?

W ostatnim moim wpisie wpomniałem o czynnikach, które doprowadzają uczącą się programowania osobę do spazmy. Poruszyłem tam kwestie braku optymalizacji nauki jako jedną z rzeczy, przez którą zatracamy się w dążeniu do celu. Cel może być różny, np. chęć dopisania do portfolio jednej z technologii. Niezależnie jednak od tego, czeka nas dużo roboty - nauki, którą zoptymalizujemy, by była ona jak najefektywniejsza przy mniejszej ilości spędzonego czasu. Dodam tylko, że poprzez naukę mam tu na myśli praktyczne siedzenie nad kodem i pisanie własnych projektów. Przepisywanie kodu z kursów 1:1 nie można nazwać pełnoprawną nauką. Ale myślę że większość z opisanych tutaj przeze mnie rzeczy można podpiąć do wszystkich jej form - czytania książek, oglądania kursów, wyzwań codziennych etc.

Gdzie leży problem?

Moim chyba największym jak dotąd problemem w nauce jest nieumiejętność rozdysponowania nauki na mniejsze bloki czasowe. Często zdarza mi się, że siedzę jednym ciągiem przez wiele godzin przy ekranie, nie robiąc sobie żadnych przerw. Wynika to chyba z mojego myślenia, które polega na tym, że chcę, by kod był napisany jak najszybciej. Chcę się uporać z nadchodzącymi wyzwaniami w projekcie i jak najszybciej dotrzeć do celu. Zdaję sobie sprawę, że nie jest to dobre ani dla mojego organizmu, ani dla samego procesu kształcenia. Pracuję nad tym, żeby to zmienić i poczyniłem w tym kierunku kilka kroków, o których zaraz tu opowiem. Ponadto, często robię sobie wielodniowe przerwy od kodu, a powinienem być regularny i systematyczny. Planowanie nauki to także ważna rzecz, o której często zapominam.

Po nitce do kłębka

W moim toku nauczania zauważyłem, że wszystko chcę od razu. Chcę zaprogramować wszystko jak najszybciej, tak by działało, w rezultacie czego skutek jest odwrotny. Proporcjonalnie do czasu spędzonego przed kodem, mój umysł nie może się skupić nad danym zagadnieniem, tylko lata w obłokach. Po kilku pierwszych godzinach jestem zmęczony kodem, na skutek czego jedyne na co mnie stać to imperatywne rozwiązania i rozwiązania na siłę - czyli dokładnie tak jak podchodzę do nauki. Na siłę. Zdałem sobie sprawę, że nie jest to dobre podejście do problemu. Muszę nauczyć się być cierpliwym w kodzie i uświadomić sobie, że nie zaprojektuję wszystkiego od razu, tylko wraz z czasem - po nitce do kłębka.

Dziel i zwyciężaj

Zamiast uczyć się ciągiem kilka godzin, rozbij to na części, pomiędzy którymi zrobisz krótsze lub dłuższe przerwy. Weźmy sobie na to przykład: uczysz się programowania 8 godzin jednym ciągiem. Na początku idzie ci dobrze i nauka jest efektywna. Z czasem jednak - po 2 - 3 godzinach - coraz trudniej jest ci się skupić, aż w końcu zupełnie nie wiesz co piszesz i zatrącasz się innymi myślami. Zapobież temu - zrób sobie przerwę w momencie kiedy napisany kawał kodu lub przerobiona część materiału będzie dla ciebie satysfakcjonująca. Nowe funkcjonalności dziel na sesje po 1 - 2 godziny zamiast wielogodzinne interwały. Dzięki temu zachowasz świeżość umysłu i rozwiążesz problem w kodzie szybciej aniżeli zrobiłbyś to po kilku godzinach nieustannego siedzenia. Dobrze ilustruje to poniższy wykres:

zdjęcie tematyczne
optymalizując czas nauki otrzymamy lepsze rezultaty

Przerwy powinny wynosić, moim zdaniem, nie mniej niż pół godziny, a nie więcej niż półtorej - zbyt długa przerwa grozi niechęcią do powrotu przed ekran. Podczas przerw najlepiej robić rzeczy niezbyt zajmujące umysł. Może być to trening siłowy, zrobienie obiadu, zadzwonienie do mamy itp. Ważnym jest, by w tym czasie nie zaglądać w telefon lub nie robić czegoś innego niż nauka na komputerze - na ten czas odchodzimy od technologii.

Nie bujaj w obłokach

Usuń wszelkie rozpraszacze na czas nauki. Wyłącz internet w telefonie, zablokuj i nie wchodź na portale społecznościowe. Skup się na tym co aktualnie robisz na 110%. Naukę potraktuj jako pracę, w której nie możesz używać telefonu. Każdy rozpraszacz oddala cię od efektywnej nauki, a co za tym idzie, od osiągnięcia celu. Rozpraszacze to jeden z najgorszych czynników, które wpływają na prędkość osiągnięcia ustalonego celu. Poza tym, takie myślenie o rzeczach niezwiązanych z nauką sprawiają, że trudniej jest się na niej znowu skupić.

Systematyczność kluczem do sukcesu

Powiedz, co będzie bardziej efektywne: zjedzenie 7 jabłek w poniedziałek wieczorem, czy może zjedzenie ich codziennie wieczorem po jednym? Zjedzenie ich wszystkich naraz sprawi, że organizm nie przyswoi wszystkich wartości odżywczych, a co więcej, może mu tylko zaszkodzić. Jedzenie ich regularnie sprawi, że wszystkie wartości zostaną przyswojone i op tygodniu zobaczymy już jakieś korzystne efekty dla naszego organizmu. Dokładnie tak samo jest z programowaniem, jak i każdej innej rzeczy, w której chce się osiągnąć profesjonalizm. Może warto czasem 10 godzinną zaplanowaną na jeden dzień rozłożyć na 5 dni po 2 godziny? Nieważne jak to planujesz, ważne by robić to regularnie.

zdjęcie tematyczne
jedz jedno jabłko codziennie przez 365 dni a będziesz jednym z najzdrowszych ludzi na świecie

Nie narzucaj sobie od razu sztywnych ram, typu robić mały projekt w Reakcie przez 2-3 godziny dziennie. Znajdź coś, co zbuduje w tobie nawyk regularności. Dobrym przykładem jest wyzwanie JavaScript 30 wesbosa, gdzie codziennie czeka na ciebie małe zadanie z JSa.

Plan: coś, co potem wygląda absolutnie inaczej

Planuj - nie siadaj do nauki programowania z buta, nie wiedząc, co będziesz chciał zrobić.  Rozłóż problem na kilka podproblemów i sukcesywnie dodawaj rozwiązania do projektu. Zaczynając kurs, skończ go najpierw i nie zaczynaj nowego. Najważniejszym jest by określić sobie cel, który chcesz zrealizować, a potem zrób wszystko by ten cel osiągnąć. Bez niego nie siadaj do nauki - bo to bez sensu. Nie planuj, ile czasu zamierzasz spędzić przy danym zagadnieniu - to praktycznie nigdy się nie sprawdza. Jeden problem często rodzi inne problemy, których nie przewidywaliśmy, a co za tym idzie czas się wydłuży.

Bądź mądry w tym jak poświęcasz swój czas

Jestem świadom, że nie wszyscy będą się zgadzać z tym co napisałem powyżej. Opisywałem to na swój wzór - czyli to, z czym sam mam/miałem problemy w nauce programowania. Chcę jednak to zmieniać i być mądrzejszy w tym co robię - dzięki temu zaoszczędzę czas możliwe, że o kilkadziesiąt procent. Na pewno jest więcej zasad efektywnej i optymalnej nauki. Na ten moment wziąłem na celownik kilka z tych - wydaje mi się - najważniejszych. A ty jakie masz podejście do nauki?

© Damian Kalka 2021
Wszelkie prawa zastrzeżone