Nadchodzi dzień, w którym podejmujesz decyzję, że chcesz uczyć się programowania. O tym, od czego zacząć, pisałam już w artykule o początkach programowania. Można jednak przeklikać całą serię kursów i nic z nich nie wynieść. Jak planować naukę programowania? Co robić, by faktycznie się czegoś nauczyć?
Dzisiaj chciałam zająć się przedstawieniem kilku moich sposobów na naukę. Jestem wielką fanką planowania i rozpisywania szczegółowych zadań, dlatego głównie na tym opieram moją naukę programowania. Co wydaje mi się najbardziej efektywne?
Lista zadań
Klasyczna lista zadań. Zazwyczaj robię ją na kartce albo w jakieś aplikacji typu OneNote albo Evernote. Zapisuję sobie zadania na daną chwilę. Oznacza to, że gdy zabieram się za naukę, zapisuję, co chcę zrobić danego dnia. I zapisy te są naprawdę szczegółowe, umieszczam na liście dosłownie wszystko, co przychodzi mi do głowy, także bardzo małe rzeczy. Przykładowo, może tam być zadanie typu “przeczytać o podstawach TypeScript”, ale też “wejść na stronę ABC i sprawdzić, jak zrobiona jest nawigacja”. Dzięki temu nie mam problemu z tym, co po kolei mam robić, gdy siadam do nauki. Oczywiście zadania są dopasowane do okoliczności. Jeśli zaczynam właśnie pracę nad projektem, rozpisuję kolejne jego etapy, a nie wszystko, czego chciałabym się w tym momencie nauczyć z JavaScriptu.
Cele na tydzień/miesiąc/kwartał
Przeczytałam wiele książek o wyznaczaniu celów i planowaniu długoterminowych zadań, ale tak naprawdę nie stosuję żadnej metody w 100%. Działam bardzo intuicyjnie. Na początku miesiąca zawsze staram się wyznaczyć sobie cele na dany miesiąc. Cel miesięczny jest zazwyczaj dość duży – w kwietniu takim celem jest dla mnie opanowanie podstaw Angulara 2 oraz TypeScript, tak żebym umiała stworzyć prostą aplikację. Następnie rozbijam duży cel na etapy, które z kolei stają się celami na dany tydzień. Idąc dalej przykładem Angulara – w tym tygodniu moim celem jest przerobienie tutoriala z oficjalnej strony Angulara 2 i odtworzenie aplikacji z przykładu, a także zbudowanie struktury mojego projektu z DSP w Angularze 2. Wyznaczam również cele kwartalne, które z kolei są jeszcze bardziej obszerne niż te miesięczne. Moim celem na kwartał jest teraz opanowanie Angulara 2.
Punkty kontrolne
Punkty kontrolne to tak naprawdę połączenie dwóch powyższych sposobów. Gdy uda mi się zrealizować zadania na dany dzień oraz pracować zgodnie z celami wyznaczonymi na tydzien czy miesiąc, ustalam dodatkowo swojego rodzaju testy. Z góry zakładam, że na przykład, na koniec tego miesiąca, powinnam bez problemu umieć stworzyć prostą aplikację w Angularze 2, która będzie listą z możliwościa filtrowania i sortowania oraz pokazywania szczegółów wybranego elementu. Takie zadania jest dla mnie czymś odrębnym niż tworzenie takiej aplikacji podczas nauki. Wyznaczam na zadanie konkretny dzień (albo dni) i buduję wtedy taką aplikację zupełnie od podstaw, przechodząc raz jeszcze przez wszystkie kroki. Mocno wierzę, że powtarzanie uczy nas najwięcej. I z całych sił nie daję się wrażeniu, że coś już umiem, skoro to raz zrobiłam. Zakładam, że coś umiem dopiero, gdy uda mi się to samodzielnie odtworzyć drugi raz. Albo i trzeci, jak drugi idzie opornie.
Nagrody
Pisanie list zadań to jedno, a motywowanie się, to drugie. Mnie zdecydowanie motywuje wyznaczenie nagrody za realizację danego zadania. Nie są to jakieś bardzo szczególne rzeczy – nagrodą może być wyjście do knajpy, przejażdżka na rowerze albo po prostu chwila z książką na balkonie. Ważne, że zabieram się za te umilacze dopiero, jak coś zrealizuję.
Złoty środek
I na sam koniec – jeszcze jedna mała myśl: trzeba znaleźć równowagę między nauką a “normalnym życiem”. Ja uczę się programowania głównie w dodatkowych projektach, dopiero za kilka tygodni będzie to moja praca na pełen etat. Kilka razy zdarzyło mi się tak wciągnąć w jakieś zagadnienia, że przesiedziałam cały wieczór i pół nocy, a potem byłam nieprzytomna. Kilka takich dni pod rząd można łatwo zakończyć chorobą. Teraz wiem, że warto realistyczne spojrzeć na swoje możliwości i wyznaczyć na przykład godzinę lub dwie na naukę dziennie. Lepiej siadać do komputera nawet na pół godziny codziennie, niż na 5 godzin pod rząd raz na miesiąc. Jak już wspominałam, nauka programowania jest jak nauka języka i największe efekty daje systematyczność i regularne ćwiczenie.
Podoba mi się Twój system 🙂 Stosuje bardzo podobny 😉 + od jakiegoś czasu planuje cele w ujęciu kwartalnym i czuję jakbym mocno przyśpieszyła 😛 Z drugiej strony – no właśnie – już wplanowałam odpoczynek, kiedy tylko zakończę zmagania w konkursie “Daj się poznać”… i remont, i przeprowadzkę… i wszystko mi się zwaliło na głowę w jednym terminie 😀 Gdyby nie data końcowa tego hard core’u – byłoby źle 😉
Uff… odpocznę kiedy skończy mi się urlop macierzyński i wrócę na etat xD
Z tym siedzeniem po nocach – dobrze, że zwracasz na to uwagę 🙂 Programowanie to dziedzina, w której zawsze będzie coś do zgłębienia, jakiś temat do nauki. Jeśli człowiek sam nie powie dość nikt nad nim nie stanie i nie powie “wystarczy”. To zawód, w którym cały czas się rozwijasz i Ty musisz postawić kreskę, utrzymać względną równowagę.
Doskonale rozumiem natłok obowiązków, bo spadła mi ostatnio na głowę sprawa mieszkania, także rynek nieruchomości stał się moim zainteresowaniem numer jeden 😉 A do tego zakończenie kursu programownia, nowa praca i DSP. I ciężko wtedy odpocząć. Ale wydaje mi się, że jak zadania są w jakiś sposób zaplanowane, to nawet jak się ich nie zrobi, można je nadal jakoś kontrolować. Na przykład przepisać na kolejny miesiąc. Jak nie spisywałam zadań, to często mi one gdzieś tam umykały, a teraz przynajmniej widzę, co planowałam zrobić 🙂
O kurcze 😀 To rzeczywiście rozumiesz 😉
Tak, właśnie dużo osób mówi, że “nie ma czasu na planowanie”. Tymczasem w tak gorącym okresie jak teraz nie wyobrażam sobie nie mieć wsparcia systemu zarządzania zadaniami. Może działam w trybie awaryjnym i część spraw leży odłogiem na liście zadań, ale przynajmniej wiem, że nic się nie pali i za chwilę nie zwali mi się na głowę 🙂 Wybieram co najważniejsze. Zwariowałabym teraz bez wsparcia list i aplikacji 🙂 Nawet jeśli część zadań teraz muszę przekładać. Tych zadań jest tyle, że człowiek łapałby wszystko jak podleci. Obawiam się, że najważniejsze mogłyby na tym ucierpieć. To uczucie kontroli bardzo pomaga w takim okresie 😉
Zawsze miałem problem z przyznawaniem sobie nagród, bo trudno tu ustalić jakieś ścisłe reguły 🙂
Jeśli nagrodą będzie wyjście na rower, to skończy się tym, że zawsze będziemy jeździć po zmroku. Jeśli chwila z książka, to wypadało by w innych sytuacjach nie czytać, bo inaczej to nie będzie żadna nagroda 😉 Na szczęście w sumie już satysfakcja z wykonanej pracy jest dość dobrym bonusem i często wystarcza 🙂
Nie ma co aż tak popadać w skrajności. Można też wybrać się na rower bez konieczności nauki wcześniej 😉 U mnie nagrody działają, bo mam tendencje do przesuwania tych przyjemniejszych czynności wcześniej i zamiast usiąść na 2 godziny do jakiegoś zadania, najpierw wypiję kawę, poczytam książkę i pojeżdżę na rowerze. Więc staram się to po prostu odwracać 🙂
Już jestem na tym etapie, że bardzo przydałoby mi się nauczyć chociaż podstaw programowania. Może Twoje wpisy mnie zmotywują i uda mi się znaleźć pół godziny dziennie na naukę, bo na pewno będę częstym gościem tutaj. Liczę na Ciebie 😉
Bardzo przydatny tekst – dzięki niemu można poukładać sobie plan na rozwój w temacie programowania. Ja póki co stawiam pierwsze kroki – jestem humanistką, ale walczę cały czas. Swojego bloga wykonałam całkowicie sama i teraz będę go udoskonalać – również sama 🙂
Super, że sama sobie radzisz! Trzymam kciuki za udoskonalanie bloga 🙂
30 minut dziennie to niby nic w perspektywie całego dnia, a naprawdę może dać Ci solidną dawkę wiedzy (i nowych umiejętności). Zapraszam częściej w takim razie 🙂
Świetny tekst. Dzięki! Wypróbuję takie planowanie już od dziś 🙂
Daj koniecznie znać, czy się sprawdza! 🙂