Nauka programowania to proces który ma swój początek i nie powinien mieć końca. Wynika to z bardzo prostego faktu: zmiany.

Konkretniej mówiąc, bardzo szybkiej zmiany. Znam wielu programistów, którzy nawet aktywnie wykonując swój zawód, potrafią bardzo szybko zostać w tyle, ponieważ nie wypracowali skutecznego procesu nauki. Poznawanie nowych rozwiązań i wychodzenie poza swoją strefę komfortu - ulubionej technologii czy narzędzi - powinno być stałym elementem kariery każdego programisty.

Jednak nauka dla samej nauki nie wnosi zbyt wiele do życia - to prawdopodobnie najważniejsza rzecz, którą nauczyła mnie szkoła. Często dopiero w chwili zakończenia formalnej edukacji, zaczyna się prawdziwa nauka.

Cechy skutecznego procesu nauki

Doświadczenie podpowiada mi, że proces nauki powinien być: Nieustanny, Ciekawy, Skuteczny i Efektywny.

Nieustanny oznacza, że powinien być nieodłącznym elementem każdego Twojego dnia. Z tego też względu sposób w jaki się uczysz powinien być dla Ciebie zawsze dostępny i obejmować najbardziej aktualną wiedzę. Nie zrozum mnie źle, nie chodzi o to aby poświęcać całe dnie na naukę, ale o to aby robić to codziennie, nawet jeżeli mówimy tutaj o przeczytaniu jednego artykułu na istotny temat.

Jeżeli proces nauki ma być elementem każdego Twojego dnia, dobrze byłoby zadbać również o to aby był ciekawy i sprawiał Ci frajdę. Stan ciekawości, który można porównać do chwil z naszego dzieciństwa, również świetnie wpływa na sam proces zapamiętywania ale przede wszystkim: często prowadzi nas w miejsca o których nawet nam się nie śniło.

Around here, however, we don’t look backwards for very long. We keep moving forward, opening up new doors and doing new things, because we're curious… and curiosity keeps leading us down new paths. ~ Walt Disney

Kolejną cechą procesu nauki powinna być jego skuteczność. Jeżeli angażujemy nasz najważniejszy zasób (czas) w naukę, byłoby dobrze gdyby wiązało się to z konkretnym efektem i miało realny wpływ na nasze umiejętności. W przeciwnym razie istnieje wysokie ryzyko, że stracimy motywację do dalszego działania a w konsekwencji zatrzymamy się w miejscu.

I ostatecznie proces nauki musi być efektywny. W teorii możemy nauczyć się czegoś wartościowego, poświęcając na to mnóstwo energii i czasu. W tym miejscu, kluczem jest uzyskanie balansu pomiędzy jakością a czasem potrzebnym na zdobywanie nowych umiejętności. Nie zawsze zrozumienie tematu w 100% jest wymagane, ponieważ wystarczy zrozumieć sam koncept. Efektywność nauki zależy od bardzo wielu czynników ale nie zniechęcaj się i pracuj nad tym, aby ulepszać swój proces.

Skuteczne źródła wiedzy i styl nauki programowania

Trudno jest wskazać inne obszary, które zmieniają się tak szybko jak programowanie. Jednocześnie trudno znaleźć temat na który powstaje równie wiele materiałów do nauki. Obie te rzeczy prowadzą nas do pytania: Jak wybierać źródła wiedzy i jaki styl nauki jest skuteczny w przypadku programowania?

Odpowiedź na to pytanie wymaga zrozumienia następujących problemów:

  • Szybkie zmiany w technologii sprawiają, że źródła wiedzy szybko stają się nieaktualne.
  • Obecnie dosłownie każdy może uczyć. Ale zdecydowanie nie każdy powinien. Wątpliwa jakość i wiarygodność to duże wyzwania.
  • Jest zbyt wiele ciekawych rzeczy i zbyt mało czasu aby ogarnąć wszystkie. Wiele kursów i książek nie szanuje Twojego czasu ze względu na niewłaściwe przygotowanie lub wyjaśnianie nieistotnych tematów.
  • Niektóre formy nauki (np. szkolenia stacjonarne) to bardzo duży wydatek ale co gorsza - często koszt jest nieproporcjonalny do oferowanej jakości.

Z jednej strony Internet daje nam nieograniczony dostęp do wiedzy. Pomimo tego trafienie na wartościowe materiały do nauki bywa problematyczne. A już odnalezienie źródeł, które są wartościowe i adresują powyższe problemy to prawdziwy wyczyn.

Wartościowe kursy online i ich weryfikacja.

Podczas nauki programowania, zwykle sięgam po różne źródła wiedzy. Jednak najczęstszym wyborem są tutoriale i kursy wideo dostępne w sieci. Powodów jest przynajmniej kilka (np. powstają szybciej niż książki i bardziej efektywnie wprowadzają w nowy temat), natomiast najważniejszym z nich jest fakt, że adresują wyżej wymienione problemy, o ile poświęcimy trochę uwagi na ich odpowiednią weryfikację.

Poniżej podzielę się z Tobą sprawdzonymi źródłami z których sam korzystam, natomiast wcześniej dam Ci kilka wskazówek jak samodzielnie weryfikować ich jakość.

Weryfikowanie jakości źródła:

  • Sprawdź kim jest autor. Jeżeli dzieli się wiedzą od dłuższego czasu i sam jest aktywnym programistą, jest duża szansa na to, że wie co robi.
  • Zweryfikuj dobre praktyki. Zwracaj uwagę na szczegóły. Jeżeli ktoś nadal pisze kod w Notatniku++ lub Eclipse, jest naprawdę mała szansa na to, że przekazuje aktualną wiedzę. Podobnym sygnałem jest wykorzystanie starych wersji oprogramowania, bibliotek czy nie wykorzystywanie nowych dostępnych funkcji (np. operatorów rest i spread w kontekście obiektów w JavaScript.)
  • Sprawdź datę powstania kursu. Jeżeli kurs powstał wcześniej niż dwa lata, najprawdopodobniej jest już nieaktualny. Wyjątek stanowią w miarę stabilne tematy, np. wzorce projektowe (ale z nimi również warto być ostrożnym).
  • Pamiętaj że więcej nie znaczy lepiej. Nie sugeruj się czasem trwania kursu. Zamiast tego, przejrzyj dostępne lekcje demo i sprawdź czy:

    • film jest odpowiednio zmontowany i nie musisz oglądać tego co nieistotne;
    • autor mówi dynamicznie i niepotrzebnie nie przeciąga czasu potrzebnego na wyjaśnienie tematu;
    • agenda kursu wydaje się spójna i przemyślana - nawet jeżeli jesteś nowy w wybranym temacie, jesteś w stanie wstępnie ocenić czy lekcje poukładane są logicznie a ich tytuły jasno komunikują zawartość. Kursy z tytułami lekcji “Lekcja 1, Lekcja 2 …” omijaj szerokim łukiem.
  • Rekomendacje są ważniejsze niż opinie. Zapewne doskonale wiesz że opinie, lajki i gwiazdki można kupić. Natomiast nadal dość łatwo jest odróżnić szczerą rekomendację. Jeżeli jakiś kurs, autor, tutorial lub książka są polecane przez innych - warto poświęcić im czas.
  • **(zazwyczaj) nie potrzebujesz wiedzieć wszystkiego. **Często spotykam się z materiałami których twórcy wyjaśniają wszystko bardzo akademickim językiem, wchodząc precyzyjnie w bardzo głębokie szczegóły. Na początkowych etapach, gdy dopiero uczysz się jakiejś technologii, zwykle nie jest to Ci do czegokolwiek potrzebne. Jeżeli ktoś mówi prostym, zrozumiałym językiem i szybko przechodzi od teorii do praktyki, warto go posłuchać lub przeczytać co ma do powiedzenia.

Źródła sprawdzone przeze mnie

Ciekawe że w tym miejscu już trudno wskazać mi źródła z których uczyłem się jeszcze kilka lat temu, właśnie ze względu na to że dziś są już mocno nieaktualne. Dobra wiadomość jest taka, że na ich miejsce pojawiło się kilka innych.

Laracasts: od dawna mój numer jeden w rankingu, szczególnie od chwili gdy Jeffrey Way (założyciel serwisu) zaczął publikować filmy na temat JavaScriptu. Na szczególne wyróżnienie zasługuje tutaj ich bardzo zwięzła forma i ogromny talent Jeffrey’a do przekazywania wiedzy.

Egghead.io: to źródło z którego korzystam od połowy 2018 roku. To miejsce w którym znajdziesz filmy wielu autorów, więc nadal trzeba ostrożnie weryfikować ich jakość ale co do jednego można być pewnym: przekazywana tam wiedza jest najbardziej konkretna jaką widziałem w Internecie. Forma 2-5 minutowych filmów jest świetna!

Wesbos.com: może nie jest to poziom Jeffrey’a z Laracasts, jednak Wes to jeden z najlepszych twórców kursów online jakiego spotkałem. Jego kursy są drogie (duże promocje na Black Friday) ale z pewnością warte swojej ceny. Znajdziecie u niego kursy JavaScript’u, React’a i Node.js. Warto.

Teamtreehouse: czapki z głów dla twórców tego serwisu za konsekwencję i bardzo wysoką jakość wszystkich materiałów. Gdy potrzebuję wejść w jakiś nowy temat, wybieram Teamtreehouse.

(darmowe) The Net Ninja: szczerze, nie mam zielonego pojęcia jak ten człowiek ogarnia tak wiele tematów ale rzadko zdarza się aby przygotowany przez niego film czy seria na jakiś temat nie spełniały moich oczekiwań. To jeden z najlepszych na świecie kanałów na youtube dla programistów.

Jak uczyć się z kursów online?

Jesteśmy na etapie gdy wybraliśmy formę i odpowiednie źródło nauki. Jednak uwierz lub nie ale to nie wszystko. Mam dla Ciebie jeszcze kilka wskazówek, które od wielu lat wykorzystuję w praktyce.

Zasada #0: Nie oglądaj! …bezczynnie. Jeżeli to możliwe podążaj za autorem wykonując kolejne kroki samodzielnie. Nie kopiuj przykładów, lecz pisz je samodzielnie nawet jeżeli wydaje Ci się że to bez sensu. Lepiej zapamiętasz to czego się uczysz i co ważne, spotkasz problemy które podczas rozwiązywania nauczą Cię czegoś nowego.

Zasada #1: Bierz to, czego potrzebujesz To nieoczywiste ale nie oglądaj kursu (lub książki) od początku do końca. Świadomie oceniaj i wybieraj to, co jest Ci najbardziej potrzebne. Nie poświęcaj czasu na ponowną naukę tego, co już wiesz. Wyjątek stanowi sytuacja gdy czujesz potrzebę powtórzenia materiału lub nadal nie czujesz się w nim pewnie.

Zasada #2: Szanuj swój czas Pokazałem Ci dlaczego kursy online są dobrą formą nauki i jak wybrać te właściwe. Opracuj swój własny styl nauki ale trzymaj się tego aby zawsze szanować swój czas. Poświęć chwilę na weryfikację tego, czy kurs który oglądasz jest wart Twojego najcenniejszego zasobu.

Zasada #3: Masz możliwość? Zapłać Nauka programowania bez wydania ani jednej złotówki jest możliwa. Jednak na przestrzeni 15 lat niejednokrotnie przekonałem się, że często warto zapłacić za rzetelnie przygotowany kurs, autora posiadającego doświadczenie w temacie. Najwyższą wartością jaką kupujesz jest czas który oszczędzisz na szukaniu innych źródeł.

Zasada #4: Ucz się tego samego z wielu źródeł Niejednokrotnie kupowałem kursy poruszające te same tematy. Nauka to skomplikowany proces. Czasem żeby “połączyć kropki” potrzebujemy różnych perspektyw. Niejednokrotnie zdarzało mi się oglądać różne kursy na ten sam temat i dopiero za którymś razem zaczynałem rozumieć o co chodzi i wcale nie miało to związku z jakością tych źródeł.

Zasada #5: Bądź wytrwały To że nie zrozumiesz czegoś za pierwszym razem, piątym czy dwudziestym, nie oznacza że nigdy Ci się to nie uda. Nauka nie jest łatwa ale wytrwałość to bez wątpienia jedyny powód tego, że dziś mam możliwość napisać dla Ciebie ten artykuł.

Zacznij i nie przestawaj

Na temat nauki online z pewnością mam Ci jeszcze wiele do powiedzenia. Ale od czegoś trzeba zacząć a teraz Twoja kolej. Wykorzystaj to co już wiesz teraz i to, co przeczytałeś powyżej. Na koniec zadam Ci tylko jedno pytanie:

Czego się dziś nauczysz?