Jak nauczyć się programowania?

Cześć! To jest fragment książki JavaScript od podstaw, która ma pomóc w nauce programowania od zera.

Nauka programowania pod wieloma względami przypomina naukę języka obcego. Trzeba poznać słówka (słowa kluczowe, nazwy funkcji), gramatykę (składnia języka) oraz pewne praktyki. Podobnie jak podczas uczenia się języka obcego, potrzeba przede wszystkim pracy własnej, a także wielu godzin poświęconych na przyswajanie materiału, praktykę, praktykę i jeszcze raz...praktykę.

Powstało sporo narzędzi, które mogą nam pomóc na tym polu. Najważniejszym z nich, choć nie jedynym, są kursy internetowe. Można korzystać też z książek, kursów na żywo, gier programistycznych, aplikacji na telefon i wielu innych. Każda z tych opcji ma swoje mocne i słabe strony. Zróbmy więc przegląd najważniejszych dostępnych opcji.

Kursy internetowe

Za najistotniejsze narzędzie do nauki programowania uważam interaktywne kursy internetowe. Te najlepsze zaczynają się od wprowadzenia do teorii, najczęściej w postaci filmu lub tekstu objaśniającego całą potrzebną wiedzę. Po tym często następują pytania sprawdzające, które zmuszają nas do odświeżenia i uporządkowania informacji. Następnie zaczyna się najważniejsze, czyli praktyka.

Dobre ćwiczenie to wyzwanie na odpowiednim poziomie. Zbyt łatwe niewiele nauczy, zbyt trudne jeszcze mniej, a do tego potrafi przytłoczyć. Sztuka polega na ułożeniu odpowiednich ćwiczeń. Do tego dochodzi ich liczba — musi być ich wystarczająco, aby wiedza została dobrze zrozumiana i utrwalona, ale jednocześnie nie za dużo, żeby nie znudzić i nie zniechęcić.

Dzięki temu, że kursy łączą w sobie wiele technik przekazywania wiedzy, okazują się bardzo skuteczne. Oczywiście nie wszystkie, ale w internecie znajdziesz dużo dobrej jakości darmowych kursów dotyczących programowania w wielu różnych językach. Czasami możesz też znaleźć kurs warty inwestycji.

Zrzut ekranu z darmowego kursu na freecodecamp.org. To typowa formuła przy interaktywnych kursach - po lewej stronie widzimy teorię, a po prawej mamy zadanie do wykonania.

Jak zacząć? W internecie roi się od mnóstwa zarówno darmowych, jak i płatnych kursów. Szukaj ich pod hasłem "top free courses js". Z JavaScript polecić mogę freeCodeCamp, a z płatnych opcji Frontend Masters oraz Pluralsight. Przed kupnem kursu na stronie Udemy polecam poczytać o nim opinie, zamieszczone na innych stronach (są tam zarówno wartościowe kursy, jak i te, w mojej opinii, wątpliwej jakości).

Akademickie kursy internetowe

Innym rodzajem kursów internetowych są te typowo akademickie. Mają one specyficzną formułę — bazują przede wszystkim na wykładach, pomiędzy którymi wykonuje się zadania lub prace domowe. Jest to cięższa metoda nauki, chociaż wiele z nich cechuje fenomenalna jakość.

Jak zacząć? Dobre kursy tego typu można znaleźć na platformach edX, Coursera oraz na YouTube. Szczególnie polecam kursy prowadzone na Uniwersytecie Harvarda przez David J. Malan (dostępny na YouTube lub edX) oraz, dla zainteresowanych sztuczną inteligencją, kursy Andrew Ng na platformie Coursera.

Fragment nagrania z kursu CS50 przeprowadzanego na Uniwersytecie Harvarda przez prof David J. Malan. Udostępniane na YouTube oraz na platformie edX.

Nauka programowania na YouTube

Codziennie na YouTube wgrywanych jest wiele godzin treści wspierających naukę programowania. Jak wszędzie, można trafić na filmy różnej jakości — od takich, których nie da się oglądać, po te wciągające i bardzo przydatne.

Przewagą kursów na YouTubie jest to, że można tam znaleźć dobrej jakości materiał w języku polskim. Mamy wielu zaangażowanych polskich twórców, którzy poświęcili mnóstwo czasu, aby dostarczyć jakościowe kursy programowania. Na przykład kanały takie jak Pasja informatyki, helloroman, overment, Jak nauczyć się programowania czy Samuraj Programowania. To jednak dopiero początek listy bohaterów YouTube’a, polecam więc po prostu poszukać, czego chcesz się nauczyć, a jest spora szansa, że znajdziesz wartościowy film na dany temat.

Kolejna mocna strona YouTube’a to ogromna liczba tutoriali pokazujących, jak stworzyć projekt krok po kroku. Takie rozwiązanie zazwyczaj okazuje się bardzo dobrym wsparciem dla początkujących, ponieważ znacznie łatwiej robić projekt podążając za kimś. Jest to więc świetna ścieżka zarówno dla pasjonatów, jak i dla osób, które chcą wzbogacić swoje CV o nowe projekty.

Jak zacząć? Zacznij wyszukiwać interesujące Cię tematy w serwisie YouTube i sprawdzaj uzyskane propozycje. Z czasem znajdziesz twórców, których nagrania najbardziej do Ciebie przemawiają. Na YouTubie, podobnie jak w Google, polecam używać słów kluczowych, czyli "JavaScript kurs gra" zamiast "Jak napisać grę w JavaScript?".

Książki

Niejednokrotnie osoby uczące się programowania skarżyły mi się, że wiele polskich książek o tej tematyce zostało napisanych nadmiernie skomplikowanym językiem, co bardzo utrudnia zrozumienie i sam proces pozyskiwania wiedzy. Na szczęście są też książki łatwe, tłumaczące wszystko krok po kroku, bez gubienia czytelnika po drodze (mam nadzieję, że jestem autorem jednej z nich). Rekomenduję serię dla początkujących zatytułowaną "Rusz Głową". Wyjaśnia ona wszystko jasno i od zupełnych podstaw.

Przewagą książek nad kursami online jest poręczność oraz brak konieczności siedzenia przed monitorem. Możesz korzystać z nich przed snem albo gdy jedziesz metrem. Z drugiej jednak strony są mniej interaktywne i angażujące niż kursy internetowe. Dlatego traktowałbym je raczej jako uzupełnienie niż podstawę nauki.

Podcasty

Jedną z dodatkowych metod nauki mogą być podcasty dotyczące programowania. Nie nauczymy się z nich programować, ale mogą pomóc nam we wzbogaceniu słownictwa oraz pogłębieniu zrozumienia na temat konceptów, trendów i tego, jak działa branża. Przewagą podcastów jest to, że można ich słuchać jak radia — w czasie prowadzenia samochodu, biegania, czy porządków domowych.

Bootcampy i kursy na żywo

Kolejną popularną opcją zrobiły się tzw. bootcampy, czyli intensywne kursy programistyczne. Największe korzyści z nich płynące to:

  • Motywacja — króluje tutaj aspekt psychologiczny posiadania zaplanowanego czasu na naukę oraz działania razem z grupą.
  • Uporządkowany program nauki — dużym ułatwieniem jest sytuacja, gdy wiesz, czego warto się uczyć i w jakiej kolejności.
  • Prowadzący odpowiadający na pytania uczestników — to pomaga wyjaśnić niezrozumiałe kwestie i naprostować błędne rozumienie na wczesnym etapie.

Z drugiej strony, bootcampy nie należą do tanich alternatyw. Narzucają też pewien rygor, a więc zmuszają nas do dostosowania planów i zaangażowania się w określonym czasie. Nie są konieczne — widziałem wiele osób, które nauczyły się programowania bez nich. Jeśli potrafimy sami się zmotywować, to wystarczą nam sporadyczne konsultacje z nauczycielem programowania (najlepiej praktykującym programistą). Znając plusy i minusy, sami musimy zdecydować, czy warto się wybrać na taki intensywny kurs, czy nie.

Mentoring

Rozwój umiejętności programistycznych znacznie przyspiesza posiadanie dobrego mentora. Może to być bliski znajomy programista, trener na kursie, wynajęta osoba czy też współpracownik. Dobry mentor powinien mieć doświadczenie, cierpliwość, czas i chęci, by pomóc Ci w nauce. Jego rolą jest ukierunkowanie procesu nauki, udzielenie pomocy, odpowiedzenie na pytania, wspieranie i motywowanie.

Zgodzisz się chyba, że nie brakuje możliwości jak efektywnie uczyć się programowania. Na powyższych opcjach lista się nie kończy. Niejedna osoba głowi się, jak pomóc w tym zadaniu, a w efekcie regularnie powstają nowe metody. Efektywnie można się uczyć nawet na telefonie, czy grając w gry programistyczne.