Jak się uczyć programowania (i czegokolwiek innego)

jak się uczyć programowania

Skupialiście się kiedyś na tym, jak właściwie się uczycie? Z jakich metod korzystacie? Co sprawdza się najlepiej? Jak planujecie swoją pracę, aby uzyskać maksimum z poświęconego nauce czasu? Dzisiaj będzie wpis właśnie o tym. Jak się uczyć programowania i czegokolwiek innego. Tak, by się nauczyć.

Słowem wstępu

Uczenie się to proces, który właściwie towarzyszy nam przez całe życie. Uczymy się czegoś nowego dosłownie od urodzenia. Potem chodzimy do szkoły, gdzie nauka wypełnia nam całe dnie. Następnie idziemy na studia, do pierwszej pracy, dowiadujemy się, jak wykonywać swoje zadania. Ciągła nauka. Ale czy jest to nauka efektywna? W tym wpisie postanowiłam poruszyć temat uczenia się, ponieważ interesuje mnie od dawna. Uczyłam się przez wiele lat języków obcych, co wymusiło na mnie poszukiwanie efektywnych sposobów przyswajania coraz to nowych porcji wiedzy. A potem zaczęłam uczyć się programowania i mimowolnie przeniosłam część znanych mi technik na tę dziedzinę.

Artykuł jest rozszerzeniem mojej prezentacji, z którą wystąpiłam w minioną środę podczas drugiego meet-upu “Programuj, dziewczyno!” w Poznaniu.

Źródła

Nie wymyśliłam sama przedstawionych tutaj metod pracy oraz nauki. Wpis bazuje głównie na trzech źródłach. Są to:

  • książka Praca głęboka autorstwa Cala Newporta
  • prezentacja Accelerated Learning in Accelerated World Dariusza Kalbarczyka, z którą wystapił podczas konferencji We Are Developers 2018 (o samej konferencji pisałam tutaj, a slajdy Dariusza znajdziecie w tym tweecie)
  • książka Włam się do mózgu autorstwa Radka Kotarskiego

We wpisie będę zaznaczać, które myśli pochodzą, z którego źródła, aby łatwiej było Wam się odnaleźć i w razie potrzeby – poszukać rozszerzenia poruszanego przeze mnie zagadnienia u źródła.

A teraz zapnijcie pasy i zaczynamy! Poniżej znajdziecie sporą dawkę wiedzy o sposobach planowania swojej pracy i nauki. Nie są to wszystkie metody przedstawione w wyżej wymienionych źródłach. Wybrałam te, z których sama korzystam albo mam zamiar skorzystać w najbliższym czasie. Pamiętajcie, by dobierać formę nauki do swoich potrzeb i preferencji. Nie ma się co męczyć, jeśli coś Wam totalnie nie pasuje. Nawet jak w danej książce autor twierdzi, że to najlepsza z możliwych opcji. Nie bójcie się też eksperymentować i modyfikować metod, na które się natkniecie. One mają służyć przede wszystkim Wam.

Zaplanuj to, jak się uczysz

Na początku potrzebny jest plan. Uważam, że wiele osób w ogóle nie myśli o tym, w jaki sposób się uczy. Przez całe lata przyzwyczaja się do siadania i wkuwania konkretnej porcji materiału, którą potem zapomina. I tak w kółko. A przecież wystarczy włożyć tylko odrobinę wysiłku w zaplanowanie procesu i od razu pójdzie łatwiej. A przede wszystkim – będzie można zmierzyć efekty i zdecydować, czy wybrana metoda była skuteczna, co z kolei pozwoli wybrać optymalną dla nas formę nauki. A to właśnie jest celem procesu planowania.

Na sam początek warto zastanowić się, jak chcemy się uczyć i odpowiedzieć sobie na pytanie, czy zależy nam na zdobyciu trwałej wiedzy, czy nauczeniu się czegoś tylko na chwilę. Oczywiście w większości przypadków chcemy, by dana wiedza została z nami na dłużej, jednak może zdarzyć się tak, że potrzebujemy coś wiedzieć tylko na nic nie znaczący dla nas test. Jednak my skupimy się na odpowiedzi numer jeden i będziemy chcieli zatrzymać jak najdłużej wiedzę, której się uczymy.

Wiemy już, że chcemy nauczyć się czegoś dobrze i na stałe. Krok numer dwa to określenie celu naszej nauki. Nie będę tutaj przedstawiać cech, jakie powinien mieć cel, bo pewnie czytaliście o tym już tysiąc razy. Napiszę więc tylko – określajcie duże cele, ale koniecznie dzielcie je na mniejsze. Dopiero te mniejsze cele powinny wyznaczać kolejne kroki Waszego planu. Jeśli na przykład myślicie o zmianie branży i Waszym celem jest nauka technologii frontendowych, tak wielki cel nic Wam nie da, gdy chcecie sobie zaplanować naukę. Należy podzielić go na mniejsze części – np. nauczyć się podstaw HTML, nauczyć się podstaw CSS, zrobić kurs z JavaScript. Jak macie ochotę więcej poczytać o wyznaczaniu celów i dokładnym planowaniu w kwestii zmiany branży i nauki programowania, koniecznie przejrzyjcie artykuły, które ukazały się na blogu w ramach cyklu Wyzwanie: Planowanie.

Kolejny krok to wybór strategii nauki, a dokładnie zdecydowanie, w jakiej formie chcemy się uczyć. Tutaj mam na myśli dosłownie plan godzinowy, dniowy. Warto zastanowić się, ile realnie czasu jesteśmy w stanie poświęcić na naukę, jak możemy wpleść naukę w nasz aktualny rozkład zajęć. Zakładam, że wiele osób chce uczyć się programowania, bo myśli o zmianie branży, dlatego bardzo ważne jest, aby patrzeć realistycznie na swoje możliwości. Trudno bowiem będzie zostać programistą w trzy tygodnie pracując na cały etat w zupełnie innym zawodzie. Więcej o strategiach piszę poniżej przedstawiając propozycje Cala Newporta.

I na sam koniec – najważniejsze, czyli działanie. Same plany nic nam nie dadzą. Pamiętajcie, aby unikać tej pułapki. Nawet po przeczytaniu tego artykułu, lepiej od razu zrobić coś konkretnego niż rzucić się na kolejnych dziesięć wpisów o tym, jak się uczyć. Idealną metodę nauki znajdziemy tylko poprzez jej praktyczne poszukiwanie, czyli przez samą naukę. Trzeba to sobie uzmysłowić i mocno zapamiętać, aby nie wpaść w wir prokrastynacji pozorowanej na czytaniu czy szukaniu form nauki albo źródeł wiedzy.

Praca głęboka – co to takiego i jak pomoże Ci w nauce programowania

Poniższe koncepcje pochodzą z książki “Praca głęboka” Cala Newporta

Dlaczego aż tak zafascynowała mnie praca głęboka? Już wszystko tłumaczę! Jak podaje autor książki, praca głęboka jest iloczynem czasu spędzonego na przyswajaniu danego zagadnienia oraz na intensywności skupienia. Zakłada on, że we współczesnej gospodarce poszukiwani się najbardziej specjaliści. Są to osoby, które są znawcami w swoim fachu i które umieją sprawnie i twórczo posługiwać się urządzeniami i uczyć się szybko nowych rzeczy. Podkreśla również, że przy obecnym rozwoju gospodarki proces uczenia się właściwie nigdy nie ma końca, bo cały czas trzeba uczyć się nowych rzeczy. Moim zdaniem idealnie się to wpasowuje w naukę programowania. Tutaj również uczymy się cały czas czegoś nowego i dążymy do tego, by zostać specjalistą w danej dziedzinie.

Warto zwrócić uwagę, że myśląc o pracy mamy tutaj na myśli proces, którego celem jest nauka nowych umiejętności i/lub wytworzenie czegoś, np. napisanie pracy, programu, przygotowanie wykładu. Praca głęboka jest czymś, do czego właściwie zawsze powinniśmy dążyć, gdy chcemy się uczyć, bo pozwala nam wyciągnąć maksimum z poświęconego na naukę czasu. Newport podkreśla, że w dzisiejszym świecie dominują nam nami rozpraszacze i bardzo trudno jest nam się skupić. Co więcej, często uciekamy do prostych zadań, np. takich jak sprawdzenie maili i odpisanie na nie, bo mamy wtedy poczucie zrobienia czegoś i natychmiastową gratyfikację. A zajęcie się w tym czasie jakimś trudnym raportem do pracy na pewno byłoby o wiele bardziej wymagające.

Stosując pracę głęboką właśnie nie boimy się wymagających zadań, bo umiemy odpowiednio do nich podejść. Newport podaje cztery główne zasady pracy głębokiej.

Zasada numer jeden: Zajmuj się pracą głęboką

O co chodzi w tej zasadzie? O to, by faktycznie koncentrować się na swoich zadaniach i poświęcać im określony czas. To, co wyróżnia znawcę od laika to ćwiczenia celowe (koncepcja podana przez Newporta za K. Andersem Ericssonem). Ćwiczenia celowe (ang. deliberate practice) to często trwające całe życie wysiłki. Gdy chcemy być w czymś dobrym, sam talent nie wystarcza. Należy poświęcić danemu tematowi dużo czasu. I robić to regularnie.

Newport zachęca do ustalenia rytuałów i ich przestrzegania, aby stworzyć sobie odpowiednie warunki do pracy głębokiej. Głównym zadaniem w tym czasie jest nieuleganie pokusie rozpraszania się. Autor wyznacza cztery formy pracy głębokiej, którymi można się zainspirować:

  • koncepcja monastyczna – najbardziej “drastyczna”, polega na jak największym zminimalizowaniu, a wręcz wykluczeniu z życia wszystkiego, co płytkie; celem osoby, która stosuje koncepcję monastyczną jest tworzenie i wyciąganie jak najwięcej z czasu, który poświęca na pracę/naukę; tutaj życie właściwie staje się pracą głęboką; Newport podaje, że według takiej koncepcji żyją np. niektórzy filozofowie, czy pisarze, którzy zrezgynowali całkowicie z maili czy internetu i cały czas poświęcają twórczej pracy, często na osobności
  • koncepcja bimodalna (dwutrybowa) – zakłada okresy poświęcone wyłącznie pracy głębokiej i takie, podczas których pracą głęboką się nie zajmujemy; są to np. wyjazdy co jakiś czas do samotni, gdzie przez tydzień czy kilka tygodni zajmujemy się danym zagadnieniem bez kontaktu ze światem zewnętrznym; potem jednak wracamy do normalnego życia; Newport podaje, że jest to metoda dobra, gdy mamy do zrobienia jakiś ważny, duży projekt i możemy sobie pozwolić na poświęcenie się tylko temu; ja z kolei wyobrażam sobie, że np. kilkutygodniowe bootcampy są swojego rodzaju odmianą koncepcji monastycznej, bo ich uczestnicy wtedy przecież nie chodzą do pracy, czy na inne zajęcia, bo całe dnie (i pewnie noce) zajmuje im nauka programowania
  • koncepcja rytmiczna – najbliższa mojemu sercu, bo sama stosuję ją od dłuższego czasu (tak podświadomie sobie stosowałam pracę głęboką nawet o tym nie wiedząc!); polega ona na potraktowaniu pracy głębokiej jako nawyku, czyli wyznaczeniu określonego czasu, miejsca i powtarzaniu procesu najlepiej codziennie; koncepcja rytmiczna zakłada budowaniu rytuału, tj. siadanie do nauki np. codziennie rano w tym samym miejscu z kawą, co pozwala wprowadzić umysł w stan skupienia i zaznacza, że teraz przyszedł czas na naukę; myślę, że dla osób, które chcą uczyć się programowania, a obecnie mają inny zawód, to jeden z najlepszych sposobów przyswajania wiedzy
  • koncepcja dziennikarska – zapewne najbardziej popularna, ponieważ polega na siadaniu do tematu “gdy tylko mamy czas”; Newport nazywa ją dziennikarską, ponieważ porównuje tego typu pracę do pracy dziennikarza, który musi umieć na życzenie usiąść i napisać tekst (bo np. musi codziennie oddawać artykuł, nie może czekać na wenę); według tej koncepcji sami siebie wprowadzamy w stan skupienia nawet na krótko, ale za to pracujemy w każdej wolnej chwili; autor książki podkreśla jednak, że jest to sposób najtrudniejszy i wymaga wcześniejszego wyćwiczenia umiejętności skupiania się

Zasada numer dwa: Nie broń się przed nudą

Zdziwiła Was ta zasada? Mnie bardzo, jednak kiedy o niej więcej poczytałam, zdecydowanie się z nią zgadzam. Jak już wspominałam, Newport uczula, że w dzisiejszych czasach bardzo trudno jest nam się skupić, a nasza uwaga ciągle jest rozproszona. Do tego stopnia, że nie umiemy spokojnie poczekać 5 minut w kolejce bez wyciągania telefonu. Znacie to skądś? Ja znam i to bardzo dobrze. Co radzi Newport? Nauczenia się koncentracji i ćwiczenia umiejętności nudzenia się. A dokładniej odpoczynku od ciągłych bodźców typu przeglądanie internetu. Poleca on zrobić internetowy detoks i podaje jako przykład eksperyment, który przeprowadził Baratunde Thurston, który zrezygnował z internetu na 25 dni, a swoje spostrzeżenia opisał w tym artykule (mocno polecam przeczytać!).

Koncentracji także trzeba się nauczyć, a trudno jest się jej uczyć, gdy ciągle nas coś rozprasza. Stąd właśnie nacisk na to, by dać umysłowi odpocząć. Dodatkowo Newport poleca określenie jednego dnia w tygodniu, w którym nie będziemy korzystać z internetu i całkowicie się wtedy zresetujemy. Zakłada on także planowanie wszystkich sesji internetowych w ciągu dnia. Dla mnie jest to trochę ekstremalne, ale sama przyznam, że często zdarzało mi się odpływać w odmętach internetu, gdy miałam się uczyć. A robiłam pozornie przydatne rzeczy, np. czytałam sobie o nowych materiałach do nauki.

Od siebie polecam zmierzenie czasu, jaki spędzamy w internecie na konkretnych stronach, bo dopiero po zobaczeniu tej liczby jesteśmy w stanie sobie uzmysłowić, gdzie przepadło te kilka godzin. Niezmiennie w tej kwestii u mnie numerem jeden jest RescueTime oraz wtyczka, która wyłącza tablicę na Facebooku zastępując ją motywującym cytatem, czyli News Feed Eradicator.

Zasada numer trzy: Zrezygnuj z mediów społecznościowych

Nie będę się tutaj rozpisywać, bo częściowo ta zasada pokrywa się z zasadą numer dwa, gdzie również Newport dużo pisze o internecie. Ogólnie poleca on zadanie sobie pytania, dlaczego korzystamy z danego medium i zdecydowanie, czy to jest coś, co jest dla nas niezbędne, daje nam rozrywkę/wiedzę/znajomości, których oczekujemy, czy jest po prostu zapychaczem czasu. Można to fajnie połączyć z internetowym detoksem i nie korzystać przez jakiś czas z mediów społecznościowych, a po tym czasie zdecydować, do którego portalu chcemy wrócić, a który faktycznie nic nam nie daje. Gwarantuję, że zaoszczędzicie w ten sposób mnóstwo czasu na naukę.

Ja świadomie ograniczam swoją obecność w mediach społecznościowych. To prawda, że aktywnie działam na Facebooku i myślałam też np. o Twitterze czy Instagramie. Jednak doszłam do wniosku, że byłyby to dla mnie pożeracze czasu. Świetnie daję sobie radę tyle czasu bez nich i niczego mi nie brakuje, więc nie chcę wzbudzać w sobie potrzeb bycia na innych portalach. Miałam krótki romans z Twitterem, ale przeszło mi dosłownie po kilku dniach. Nie neguję tutaj faktu bycia w różnych mediach, ale na pewno warto sobie przemyśleć, czy naprawdę tego potrzebujecie. Szczególnie, gdy macie w planie poświęcać dużo czasu na naukę.

Zasada numer cztery: Pozbądź się płytkich zajęć

Większość z nas nie pracuje 8 godzin dziennie. Pewnie, jesteśmy w pracy 8 godzin, ale to nie jest tak, że przez ten czas cały czas produktywnie pracujemy. Oczywiście człowiek nie jest w stanie non stop pracować przez pracę głęboką (Newport podaje, że maksimum to dla większości osób 3 godziny), jednak mamy skłonności do ułatwiania sobie życia. Często płytkie zajęcia zajmują nam najwięcej czasu. I tych zajęć należy się pozbyć.

Przekładając to na grunt nauki programowania – wystarczy, że sprawdzisz maila i Facebooka zanim zaczniesz się uczyć. Nie musisz tego robić w trakcie sesji nauki. Nie musisz też odpisywać na maila w ciągu 2 minut. Na pewno nic się nie stanie, jak odpiszesz po godzinie. Do tego dochodzą też wszystkie czynności związane ze złudną pracą. Czyli robienie list zadań, które są piękne i cudowne, ale ich wykonanie zajmuję mnóstwo czasu. A potem mamy piękną listę, a na wykonanie zadań już nie starczyło czasu. Nie możemy oczywiście uniknąć płytkich zajęć zupełnie, ale warto jest je minimalizować. I być świadomym, że to one pożerają większość naszego czasu i do tego dają nam złudne poczucie, że coś zrobiliśmy.

Tak na marginesie – jeśli zainteresowały Was przedstawione przeze mnie koncepcje z książki Cala Newporta, ale wolicie sobie o nich posłuchać, polecam podcast Z pasją o mocnych stronach Dominika Juszczyka, który jest autorem bloga Near Perfect Performance. W odcinku 9 i odcinku 55 omawia on główne zasady przedstawione w książce Praca głęboka. Zwracam uwagę na to, że Dominik tłumaczy pojęcie jako praca w skupieniu, a nie jako praca głęboka, tak jak w polskim przekładzie, ponieważ w momencie nagrywania podcastu nie było jeszcze polskiej wersji językowej.

Przyśpieszone uczenie się – co to takiego i dlaczego warto w nie zainwestować?

Poniższe koncepcje pochodzą z prezentacji Dariusza Kalbarczyka Accelerated learning in accelerated world z konferencji We Are Developers 2018

Koncepcję pracy głębokiej idealnie uzupełnia prezentacja, którą przedstawił podczas konferencji We Are Developers 2018 Dariusz Kalbarczyk. Prezentacja miała tytuł Accelerated learning in accelerated world i poruszała temat uczenia się (szczególnie w zawodzie programisty) w dzisiejszym, dynamicznym świecie. Ja roboczo tutaj tłumaczę accelerated learning jako przyśpieszone uczenie się. Sama prezentacja oryginalnie była po angielsku, więc nie wiem, czy Dariusz miał na ten termin po polsku jakiś inny pomysł. Slajdy z prezentacji Dariusza znajdziecie w tym tweecie.

Lista zadań i priorytety

Jak wybraliśmy strategię nauki i wiemy już, w jaki sposób do niej podejdziemy (np. poświęcamy najbliższy tydzień na poznanie jakiegoś zagadnienia albo przez 2 tygodnie będziemy codziennie siadać do kodu na godzinę od 6 rano), stajemy przed wyzwaniem ułożenia planu naszej nauki. Czyli czeka nas zrobienie listy zadań. Jednym z głównych założeń podejścia przedstawionego przez Kalbarczyka jest nadawanie priorytetów naszym zadaniom. Poleca on stosować w tym przypadku literki od A do E do oznaczania zadań od najważniejszych do mniej ważnych (offtop – jak chcecie poczytać więcej o priorytetyzacji zadań to odsyłam do klasyka gatunku, czyli do Davida Allena i pozycji Getting things done; i pamiętajcie – to, że coś jest pilne, nie oznacza, że jest automatycznie ważne). Wracając do propozycji Kalbarczyka, tak wyjaśnia on kolejne stopnie, które możemy nadać zadaniom (zachowuję oryginalny zapis po angielsku):

  • A – I have to do it
  • B – I should do it
  • C – It’s nice to have it done
  • D – Delegate
  • E – Eliminate

Myślicie, że przecież wszystko podczas nauki jest ważne? Nie do końca. Nie każde zadanie, które aktualnie macie na liście jest równie ważne. Trzeba zastanowić się, czy faktycznie dobre będzie dla nas teraz zgłębienie jakiegoś dodatkowego zagadnienia czy może lepiej skupić się na poznaniu zaawansowanego aspektu tego, co już znamy. To wszystko oczywiście zależy od sytuacji. Ale warto krytycznie patrzeć na swoją listę zadań (czyli raczej w przypadku uczenia się – listę zagadnień do opanowania) i nadawać im priorytety. Dla przykładu – gdy chcemy nauczyć się JavaScriptu, a dość dobrze już znamy CSS, to możemy wpaść w pułapkę stylowania naszej strony czy aplikacji godzinami. Mamy efekt, napracowaliśmy, ale to nie jest to, czego chcieliśmy się nauczyć. Więc gdy naszym celem było poćwiczenie JavaScriptu, ładny wygląd naszej strony powinien mieć niższy priorytet (przynajmniej na razie).

I wtedy przychodzi frustracja

Kiedy mamy już priorytety, robimy tak – działamy zaczynając od najważniejszych zadań. A wcześniej oczywiście musimy ustalić cele, o czym już wspominałam na samym początku artykułu. Wracając do najważniejszych (i pewnie często najtrudniejszych zadań) – myśl dotycząca tego aspektu chyba najbardziej utkwiła mi w pamięci po prezentacji Kalbarczyka. Powiedział on, że właściwie każda umiejętność ma tzw. frustration barrier, czyli próg frustracji.

Chodzi tutaj oczywiście o uczucie, które powstrzymuje nas przed zrobieniem czegoś, bo boimy się, że nie damy rady. Gdybym ja za każdym razem nie dawała rady ogarnąć zagadnienia, gdy wydaje mi się, że go nie ogarnę, to dosłownie nic bym nie umiała. Naprawdę, bardzo często pierwszą reakcją na nowe zadanie w pracy jest myśl: “O nie, tego to już na pewno nie ogarnę”. A potem ogarniam. I Wy też ogarniecie. Dariusz podkreślał, że każdy jest kiepski, kiedy coś zaczyna i warto sobie to uzmysłowić. Przeszkody, które widzimy bardzo często są tylko emocjonalne. Nie wynikają z tego, ze nie mamy technicznych możliwości, by czegoś nie zrobić, ale blokujemy się psychicznie.

Najlepiej radzić sobie z takim uczuciem nastawiając się pozytywnie do danego tematu. Nauka przecież powinna być czymś przyjemnym! Przypomnijcie sobie, jak wielką satysfakcję mieliście pisząc pierwszą linijkę kodu. To jeszcze przed Wami? Gwarantuję, że będzie super. Nie warto popadać w depresję, zanim nie spróbujemy. I uwaga – bardzo często uciekamy od podjęcia danego wyzwania tłumacząc się tym, że nie damy rady. To się nazywa lenistwo. Lepiej spróbować i polec, niż nie spróbować. Naprawdę!

Pytaj, pytaj, pytaj

Jeśli zaś chodzi o samą naukę programowania to oczywiście warto zadawać pytania i się tego nie bać. Więcej w temacie uczenia się nowych zagadnień z kodowania pisałam w tym artykule o pracy jako junior developer po kursie programowania. Kolejne aspekty przyśpieszonego, czy też szybkiego uczenia się, to umiejętność zgłębiania tematu. Wzbudzajmy w sobie zainteresowanie danym zagadnieniem, a o wiele łatwiej będzie się nam go uczyć. Dodatkowo warto też poszukać sobie towarzysza do nauki. Może to być ktoś, kto faktycznie będzie fizycznie uczył się obok nas. Jednak programowanie to jest coś, co w większości ogarnia się samemu i czasem wystarcza nam świadomość, że ktoś jest w podobnej sytuacji. Wtedy oczywiście najlepiej pójść na meet-up, poszukać jakiegoś wydarzenia związanego ze zmianą branży na IT (a ostatnio w dużej ilości miast jest coraz więcej takich eventów, wiem, co mówię, sama ostatnio zrobiłam 3 takie wydarzenia). I oczywiście warto poszukać grup na Facebooku, bo tam bardzo często znajdziemy osoby, które są w takiej samej sytuacji jak my i mogą nam dać wsparcie, zmotywować, a do tego sprawdzić kod.

Czas na zabawę!

A teraz ostatnia i najważniejsza zasada accelerated learning, czyli: baw się! To, co traktujemy emocjonalnie, zapada nam w pamięć. Tak samo może stać się z programowaniem. Jeśli będzie nam ono dawać frajdę, będziemy chcieli więcej. I o to właśnie chodzi. Nie sposób żyć z perspektywą ciągłego uczenia się, gdy uczyć się nie lubimy. Tutaj mała uwaga: nie każdy musi programować. Jest teraz na to moda, ale jeśli czujecie, że to coś zupełnie nie dla Was, naprawdę się nie męczcie. Więcej o tym pisała w artykule Dlaczego nie warto programować i dużo o tym rozmawiałam z Maciejem Aniserowiczem z devstyle.pl w jego podkaście DevTalk, w którym ostatnio miałam przyjemność wystąpić – odcinka z moim udziałem posłuchać możecie tutaj.

Ale jak się uczyć?

Poniższe koncepcje pochodzą z prezentacji Radka Kotarskiego Włam się do mózgu

Mamy strategię, mamy listę zadań, wiemy, jak do tych zadań podchodzić. Wiemy, że trzeba pytać, zgłębiać temat i bawić się nauką. Ale jak uczyć się, już tak konkretnego zagadnienia? Tak, by zostało nam w głowie? Tutaj z pomocą przychodzą metody opisane przez Radka Kotarskiego w książce “Włam się do mózgu”.

W książce opisanych jest wiele metod, natomiast ja wybrałam tutaj trzy, które moim zdaniem sprawdzą się w nauce programowania. Sama te metody stosuję i sobie chwalę. Zachęcam Was jednak mocno do przeczytania całej książki i wybrania czegoś dla siebie.

Metoda fiszek

Pewnie każdy z nas zna metodę fiszek, szczególnie jest ona popularna przy nauce języków obcych. Ja jednak wykorzystują ją do nauki programowania. Jak? Już tłumaczę! Korzystam ze zmodyfikowanej troszkę metody fiszek. Polega ona na wypisaniu listy zagadnień do opanowania. Są to małe, konkretne zagadnienia, które pojawiają się, gdy zgłębiam dany temat.

Załóżmy, że piszę prostą aplikację w JavaScript. Jednym z moich zadań na liście jest np. pobranie elementów HTML i zapisanie ich do zmiennych w JS. Kiedy napiszę już aplikację, otwieram listę zadań, która powstała podczas jej tworzenia. I ruszam raz jeszcze! To znaczy: biorę sobie wyżej wspomniane zadanie, jakim jest pobranie elementów i staram się zrobić to zadanie samodzielnie, bez zaglądania do gotowej już aplikacji. Wyszło? Odhaczam, na razie “odkładam” fiszkę. Nie wyszło? Patrzę, jak rozwiązałam to ostatnio i zostawiam zadanie do powtórzenia przy kolejnej iteracji. I tak do skutku. Metoda jest pracochłonna, ale naprawdę skuteczna. Szczególnie polecam ją osobom początkującym. Można na przykład stworzyć taką listę zadań robiąc jakiś gotowy kurs online, a potem sobie te zadania odtwarzać we własnym zakresie i patrzeć, ile pamiętamy, a co jeszcze musimy poćwiczyć.

Metoda tancerki

Ta metoda zakłada, że nie jesteśmy w stanie nauczyć się czegoś przez jednorazową praktykę. Tak jak tancerka nie zdobywa swoich umiejętności jedną kilkugodzinną sesją nauki, ale regularnymi, tzw. “rozproszonymi”, ćwiczeniami, które w rezultacie dają pożądane efekty. Jak wspomina w książce Kotarski, to wydaje się bardzo logiczne, jednak w dorosłym życiu zdajemy się zapominać o istnieniu takiej zasady. Oczekujemy od siebie zbyt wiele. Przekładając to na grunt programowania – czasem wydaje nam się, że jeden kurs powinien już dać nam umiejętność programowania. I jesteśmy źli, gdy coś nam nie idzie. A to przecież normalne na początku drogi i należy się nastawić na to, że nasz cel osiągniemy tylko ucząc się reguralne i powtarzając określony materiał. W przypadku kodowania taką regularną praktyką jest po prostu kodowanie. To najlepiej uczy umiejętności i nie da się tego niczym zastąpić. I nie możemy ulegać pokusie robienia “wszystkiego na około”, o czym pisałam w artykule Po prostu koduj.

Metoda zmiany miejsca

Ostatnia metoda z książki Kotarskiego, o jakiej chcę wspomnieć to metoda zmiany miejsca. Bardzo często sama ją stosuje, a polega ona na powtarzaniu danego zagadnienia (albo siadania do niego po raz pierwszy) w różnych miejscach. Dzięki temu, że uczymy się nie tylko wzrokiem, ale wszystkimi zmysłami, nasz mózg łączy temat, którego się uczymy z miejscem, w którym się znajduje. Dzięki temu jesteśmy w stanie lepiej zapamiętać jakiś materiał, ponieważ np. skojarzymy, że gdy powtarzaliśmy tworzenie zmiennych w JavaScript w kawiarni niedaleko naszego domu, to grała taka fajna piosenka. I od razu wszystko wizualizujemy i wiemy już, jak te zmienne tworzyć. Oczywiście aż takie proste to nie jest, ale mam nadzieję, że rozumiecie koncepcję. Fajnie jest powtarzać ten sam materiał w innych miejscach, co da naszemu umysłowi powiew świeżości i pozwoli nam lepiej zapamiętać dane zagadnienie.

To do nauki!

Ufff! To tyle na dzisiaj. Powstał najdłuższy wpis na blogu! Miałam jeszcze w zamiarze napisać więcej o aplikacjach, które ułatwiają planowanie zadań i nauki, ale zdecydowanie wrzucam je do osobnego wpisu, żebyście nie zasnęli przy lekturze tego. Mam nadzieję, że zebrane tutaj materiały pozwolą Wam zainteresować się tematem uczenia się, a potem wcielić przedstawione we wpisie strategie w życie. Efektywne uczenie się powinno być naszym celem, gdy uczymy się programowania (lub czegokolwiek innego). Nie warto tracić czasu na nieefektywną naukę. Wtedy my nic z tego nie mamy, a do tego straciliśmy cenny czas. Unikajmy tego!

A jakie są Wasze metody na efektywną naukę? Może polecicie jakieś materiały, które szczególnie przypadły Wam do gustu? Podzielcie się koniecznie w komentarzach.

jak zacząć kodować

13 Replies to “Jak się uczyć programowania (i czegokolwiek innego)”

  1. Czy będzie można kiedyś kupić te supertorby eko z logo “Programuj, dziewczyno!”, które rozdajesz na meet-upach? 🙂 Nie mam szczęścia, żeby taką wygrać. 🙁

  2. Na razie nie planuję robić toreb na sprzedaż. Ale przemyślę na przyszłość 😉

  3. No i teraz nie wiem czy brać się do nauki czy zacząć czytać Deep work, bo przyznam bardzo mnie te zagadnienia zainteresowały. Ostatnio zdałem sobie sprawę ile cennego czasu (którego każdy z nas ma tak mało) marnuje na przeglądanie bezwartościowych treści w internecie (z punktu widzenia dalszego wykorzystania informacji jakie przyswajam), który to czas można by wykorzystać na poznanie czegoś nowego co w przyszłości można by praktycznie wykorzystać i mieć z tego korzyść.

  4. “Praca głęboka” to nie jest długa książka, myślę, że w kilka wieczorów można przeczytać ze spokojem. Jak ma Ci dać pomysł na to, jak podejść do uczenia się, uważam, że warto poczytać 🙂

  5. Bardzo ciekawy wpis! Dziękuję za niego! Zaraz ogarniam cele i zaczynam się uczyć 🙂
    Jednak pół żartem pół serio, należę do osób, które nieporzadek dekoncentruje. I nieważne jak istotne, czasochłonne i priorytetowe jest dane zadanie, zawsze najpierw musze posprzątać pokój, biurko, miejsce pracy. Przyznam, że jestem lekką pedantka i zastanawiam się, jak bardzo “nieprawidłowe” jest moje podejście z tym sprzątaniem 😀 wiem po prostu, że jak tego nie ogarnę to będę myślała o tym Przez cały czas i będzie mnie to dekoncentrowac! Pozdrawiam!

  6. Myśle ze do programowania trzeba miec taki zmysl, ktory nakazuje ci wszystko ulepszac , naprawiac i rozwiazywac problemy, nie kazdy jest w stanie tego sie nauczyc

  7. W tekście nigdzie nie pada stwierdzenie, że każdy musi się nauczyć programowania 😉 Ale jeśli ktoś chce spróbować swoich sił, nie widzę powodu, aby nie ułatwiał sobie nauki stosując różne metody

  8. Super wpis! Ladna synteza roznych podejsc. Co do deep worka, to za malo dalas nacisk moim zdaniem, zeby w ogole nie miec social mediow. Jezeli nie prowadzi sie dzialalnosci w internecie to jest to zbedne. Ja prowadze “osobista krucjate” przeciw social mediom. 😛 Namomowilem juz 4 osoby, by z tego zrezygnowaly. Wiadomo, sociale maja jakies zalety, ale zdecydowanie wiecej zabieraja. Papierosy/Kokaine tez powalaja sie lepiej poczuc, ale zdecydowanie wiecej zabieraja. Social media to festiwal proznosci, egoizmu (Ja, ja, ja Fajna fotka. Zapraszal do siebie), przekonywania o swoich racjach, marnowania ludziom i sobie czasu…. Dobrze zadac sobie pytanie: Czy jakbym mial zaplacic 10 zl miesiecznie to nadal by korzystal z facebunia? Raczej nie, wiec chyba nie jest on tyle wart.
    Pozdrawiam i tak trzymac

  9. To prawda, że Newport mocno podkreśla odejście od social media, często aż ekstremalnie. Choć dla mnie ważny jest złoty środek w tej kwestii. Jeśli FB kogoś relaksuje albo po prostu zwyczajnie lubi spędzać tam czas i nie ma poczucia, że ten czas traci, to jest ok. Ale na pewno warto zrobić sobie detoks, bo to uświadamia, jak bardzo social media są nam niepotrzebne, mimo że często na co dzień wydaje nam się, że jest inaczej.

  10. Świetny wpis, poglebiony i szczegółowy. Dziękuję za niego:). Nie mam nic wspólnego z programowaniem ale nauka towarzyszy mi nieustannie. Szukam sposobow na zwiekszenie efektywności. Zostaje, bo jest tu niezwykle interesująco:)

  11. Wow! Dziękuję za miłe słowa! Owocnej lektury zatem 🙂

  12. MEGA. Dzięki za tyle konkretów w tak krótkim wpisie 🙂
    Ja mam tylko jedno pytania a propos fiszek, masz jakiś ogarnięty system ich prowadzenia, który się sprawdza? Mam na myśli w jaki sposób przetrzymujesz notatki z zadaniami i kodzik z poprzednich praktyk?
    Pytam bo bardzo mi się spodobało to podejście i chętnie go spróbuje, ale coś czuję, że w tym utonę 😀

  13. Dzięki za miłe słowa, cieszę się, że system się podoba 🙂 Niestety właśnie nie mam sprawdzonego systemu. Najpierw korzystałam z OneNote, gdzie umieszczałam ponumerowane zagadnienia i dodawałam kod w osobnej notatce z odpowiednim numerem. Teraz korzystam z Notes na Macu, robię to w podobny sposób, więc system raczej chałupniczy 😉 choć przyznam, że mi odpowiada i jakoś się nie skupiam na tym, by to miało jakąś super formę, czasem pogrubiam jakieś rzeczy, które chce, aby się rzucały w oczy, bo jestem wzrokowcem. A tak to głównie przeklejam 😉

Komentarze są zamknięte.