Jest tego od cholery. Kilka sesji googlowania i nasz folder z zakładkami puchnie niemożebnie. Bo jest tak, że jeżeli chodzi o naukę programowania, to źródeł w internecie nie brakuje. Mam wrażenie, że każdego tygodnia przybywa ich kilka tuzinów. Niby fajnie, bo naprawdę jest tego sporo i można wybierać. Ale z drugiej strony świeżak, taki jak ja, wchodzi do tego lasu pełnego urodzaju i … zamiera. Tu zajrzę, tam zajrzę, o a tu ładny layout i mówią do mnie po ludzku, o a tu jest dużo przykładów do kompilowania, o a tu jeszcze inaczej. I na dobrą sprawę tracimy nasz cel podstawowy z pola widzenia. I w efekcie nie uczymy się niczego, brnąc przez kilkadziesiąt pierwszych lekcji wszystkich kursów.

Dlatego jeżeli na tym etapie skończysz czytać ten tekst, zapamiętaj jedno. Nie mnóż źródeł nauki. Otwórz jeden kurs, przerób go solidnie i sumiennie od deski do deski. Powtórz, usiądź i napisz własny projekt i dopiero wtedy przeskakuj do kolejnego kursu.

Analitycznie do procesu, czyli o meblowaniu mózgu świeżaka

W moim przypadku postawiłem od początku na wybrane źródła i to one organizują mi teraz proces nauki. Podszedłem więc do tematu analitycznie (jeżeli słyszycie wszędzie, że podstawowy skill programisty to analityczny umysł, to to nie jest czcze pitolenie. Stoi za tym bardzo konkretna umiejętność). Co to znaczy w praktyce? Rozbiłem proces nauki programowania w Javie na kilkanaście małych, podrzędnych klocków. Na obecnym etapie, który powoli zbliża się do końca, wygląda to tak:

To, co wymieniłem powyżej nie wyczerpuje oczywiście wszystkiego. Na porządku dziennym odwiedzam z konkretnymi zapytaniami Stack Overflow, ponadto mocuję się z ciężkim, bo najeżonym matematycznymi wyzwaniami kursem na stronach uczelni Princeton. Ten ostatni daje solidny zestaw gotowych programów do własnoręcznej kompilacji i uruchomienia. Naprawdę można tu sporo poćwiczyć.

To wszystko ma umeblować mój mózg podstawowymi pojęciami, tak by zacząć czytać i rozumieć logikę procesu w kodzie. To fundament analitycznego myślenia. Spojrzeć na kod, na wszystkie elementy biorące udział i … skumać! Proste? No nie. Wręcz przeciwnie, od tygodnia cięższej pracy widzę, że proces nauki programowania to jest coś na długie lata. Serio. Na długie lata.

Ostatnio wśród moich znajomych na fejsie ktoś zaszerował nieśmiertelny już artykuł Petera Norvige’a „Teach Yourself Programming in Ten Years”. Cały artykuł jest na tyle krótki i na tyle konkretny, że warto go wydrukować i powiesić na ścianie.

So go ahead and buy that Java/Ruby/Javascript/PHP book; you’ll probably get some use out of it. But you won’t change your life, or your real overall expertise as a programmer in 24 hours or 21 days. How about working hard to continually improve over 24 months? Well, now you’re starting to get somewhere…

Ton artykułu Norvige’a jest niezwykle otrzeźwiający. Wszak cały czas jesteśmy mamieni szybkim skokiem zawodowym, że wystarcza miesiąc, dwa, trzy, i tak dalej i już można developować za syty hajs na wygodnej posadce. Ekhm.. it aint like this… Długa perspektywa. To jest to.