admin 0Comment

O sposobach nauki pisałem gdzie indziej, o tym, co cechuje dobre i złe źródła nauki – także. Dzisiaj konkretnie – napiszę od czego ja zdecydowałem się zacząć naukę Pythona. Poszukiwania zajęły mi trochę czasu, było kilka nieudanych podejść do innych kursów, jednak z perspektywy kilku miesięcy mogę stwierdzić, że wybrałem trafnie i raczej powtórzyłbym dzisiaj moją decyzję.

Jakich źródeł NIE wybrałem

Nie lubię videotutoriali. To znaczy, może nie tyle nie lubię – na YouTube zaglądam sporadycznie, chcąc dowiedzieć się czegoś o mniejszych partiach materiału ale generalnie nie wyobrażam sobie długiej nauki wyłącznie czy głównie z pomocą videotutoriala. Głównym powodem tego jest brak elastyczności jeśli chodzi o tempo przekazywania wiedzy. Pół biedy jeśli tutorial ma je zbyt szybkie, zawsze można zatrzymać, pogłówkować i odpalić ponownie – gorzej jeśli jest przeciwnie i męczymy się przechodząc przez, nieraz mocno łopatologiczne wyjaśnienia, ale nie możemy przeskoczyć dalej bo…no właśnie…kolejny powód. Nawigacja po videotutorialu zawsze będzie mniej wygodna niż po klasycznym kursie, umieszczonym na stronie www. Tak samo jeśli chodzi o robienie notatek, etc. – o wiele łatwiej zastosować metodę Copiego-Paste’a niż klepać całość ze słuchu, prawda? No raczej.

A tak już całkiem na marginesie – nie sądzicie, że videotutoriale wszelakiej treści są, przynajmniej po części, odpowiedzią na zjawisko wtórnego analfabetyzmu? Często w kilkuminutowych nagraniach video opisywane są rzeczy, które można zawrzeć, dajmy na to, w dwóch-trzech kilkuwyrazowych podpunktach. Mam wrażenie, że internet nie tyle powiększa się, co po prostu puchnie od tej formy przekazu.

A książki? Jak najbardziej ale jestem zwolennikiem tych w formie elektronicznej, co oczywiście jest totalnie subiektywnym wyborem. Dodatkowo, ciekawa sprawa, wiele z najlepszych tutoriali dostępnych online zostało jednocześnie wydanych w wersji papierowej (w tym mój zwycięzca) więc granica między nimi jest nieco zatarta.

And the winner is…!

Ja ostatecznie zdecydowałem się na wersję online tutoriala Automate the Boring Stuff with Python, dostępnego także w wersji książkowej.

Wybór dość kontrowersyjny, ponieważ, jak sam autor stwierdza, tutorial …niekoniecznie ma służyć programistom. A przynajmniej wannabie-programistom.

To raczej kurs dla osób, które (patrz tytuł!) chcą zautomatyzować pewne żmudne i powtarzalne zadania w pracy czy nawet w codziennym życiu. Stąd koncentrowanie się na działaniach na plikach graficznych, tekstowych czy na arkuszach kalkulacyjnych, podstawowe operacje na stronach internetowych, wysyłaniu/odbieraniu e-maili czy wreszcie działania na plikach i folderach na dysku twardym. Jeśli często spotykasz się z zadaniem, które wymaga od ciebie bezmyślnych, za to wielokrotnie powtarzanych działań na komputerze, ten kurs najpewniej pomógłby ci w ich automatyzacji.

Konsekwencją takiego podejścia jest to, że kurs nie dotyka bardzo istotnych w programowaniu kwestii a czasem wręcz działa na przekór pewnym ogólnym prawidłom i zasadom (!). Przykłady: nie będziesz programował tutaj obiektowo, pewne typy zmiennych zostaną całkowicie pominięte. Sam autor stwierdza, że czasami styl programowania nie jest zgodny z dobrymi praktykami i, że klarowność kodu postawiona jest zdecydowanie wyżej na skali ważności niż jego styl czy elegancja.

No dobra, pewnie zadajesz sobie już pytanie w stylu: ok, skoro sam autor tutoriala stwierdza, że nie jest on dla przyszłych programistów to w co ty próbujesz mnie wmanewrować?! Spokojnie, to wszystko powyżej nie jest szczególnie ważne wobec jednej kwestii – kurs jest świetny jeśli chodzi o nauczanie PODSTAW. A o to ci teraz chodzi, prawda? OCZYWIŚCIE, że nawet po ukończeniu tego tutoriala będzie się trzeba przebić przez mnóstwo dodatkowego materiału ale, no właśnie, tak będzie w przypadku każdego kursu/videotutoriala/książki o programowaniu. Opisywane wyżej niedogodności są niczym wobec tego, że AtBSwP:

Jest (stosunkowo) aktualny i odnosi się do Pythona 3

Kurs powstał w 2015 r. co nie jest dramatem jeśli chodzi o kwestię jego przeterminowania się. No i uczy Pythona 3 a nie 2. Czy to dobrze? O tym trochę później.

Zaczyna od całkowitych podstaw, nie wrzucając cię od razu na głęboką wodę i nie fundując ci poczucia frustracji już na samym początku

Nie wiesz co zainstalować, jak zainstalować i jak to potem odpalić? Nie ma problemu, wszystko ogarnięte jest od początku – na pohybel wszystkim tutorialom „dla początkujących” zaczynanym od Ok, odpal IDE i wpisz (…).

Podział na rozdziały jest przemyślany a sama nauka ma odpowiednie tempo

Ok, pewne rzeczy są może i zbyt łopatologicznie powtarzane bez końca ale hej, to w końcu tutorial tekstowy więc nie ma problemu z przeskoczeniem fragmentu. Byle się za chwilę od tego skoku nie przewrócić o następne zadanie praktyczne…

Nauka oparta jest o praktyczne, przydatne zadania/programy

Ten argument jest jednym z ważniejszych, o ile nie najważniejszym! Nie ma nic bardziej zabijającego chęć do programowania niż skupianie się na teorii/sterylnym kodzie bez pokazania praktycznego wymiaru programowania. Tutaj w większości rozdziałów zamieszczone są praktyczne case studies, rozbijane na części składowe a dodatkowo w ramach ćwiczeń praktycznych niemal od początku piszemy programy, które autentycznie mogą się do czegoś przydać.

Pytania zamknięte po każdym z rozdziałów mają zamieszczone odpowiedzi

Nic więc nie stoi na przeszkodzie żeby zorganizować sobie mini-test na zakończenie danego rozdziału i zrewidować czy zapamiętało się materiał.

Zadania otwarte po każdym z rozdziałów…NIE mają zamieszczonych odpowiedzi

Tak tak, to plus! Po każdym (oprócz pierwszych, naprawdę podstawowych) rozdziale mamy kilka praktycznych programów do napisania samodzielnie, wyłącznie na podstawie opisu co program ma osiągnąć. I na stronie autora nie ma do nich podanych przykładowych rozwiązań problemu – na szczęście! Początkowo uważałem to za minus, zwłaszcza kiedy wielokrotnie  mocno zawieszałem się na jakimś szczególe zadania. Pokusa do sprawdzenia proponowanego rozwiązania była zbyt duża i cieszę się, że autor niejako zmusił nas do radzenia sobie samemu. Programy do napisania potrafią zaskoczyć ale jeśli nie wystarczy ci pary do rozwiązywania problemów z kursu to jak chcesz robić to później, już jako programista? Dodatkowo, brak  odpowiedzi w internecie dla (zwłaszcza dalszych) rozdziałów i ich zadań skłonił mnie do rozpoczęcia na blogu serii artykułów przedstawiających nie tyle suche rozwiązanie danego zadania co raczej proces dochodzenia do niego. Ale o tym więcej w innym miejscu.

Przekonani? Ja nie żałuję wyboru tego tutoriala jako pierwszego. Mimo, że nie jest on skierowany do osoby chcącej zostać programistą, uważam, że warto przerobić go od początku do końca. Ewentualnie, jeśli ktoś nieszczególnie wyobraża sobie, że ,przykładowo, praca na plikach PDF czy JPG kiedykolwiek mu się przyda, mogę zasugerować żeby KONIECZNIE przerobić rozdziały 0-11 oraz 15 a z reszty wybrać to, co wydaje mu się przydatne.

Niedoszli zwycięzcy

Poza AtBSwP mocno zastanawiałem się jeszcze nad dwoma kursami – jednym z nich jest kurs Pythona na codecademy. W tamtym momencie był to jeszcze kurs Pythona w wersji 2 i był to jeden z argumentów na nie, jeśli chodzi o rozpoczynanie z nim mojej nauki programowania. Innym, nawet chyba istotniejszym, argumentem był ten, że kursy na codecademy są jednak zbyt pobieżne – można je potraktować jako przystawkę przed prawdziwym kursem albo sposób na sprawdzenie z czym to się je i czy w ogóle chcę się za programowanie zabierać.

Ale ale! Już drugi raz piszę o Pythonie w wersji 2 lub 3, a przecież niekoniecznie musisz wiedzieć o co mi chodzi – w telegraficznym skrócie: Python 3 to nowsza wersja języka, która do tego nie jest wstecznie kompatybilna z wersją nr 2. Wiele pythonowskiego oprogramowania stoi jeszcze na numerze dwa ale trójka wykroiła sobie już całkiem spory fragment tortu, też jeśli chodzi o wszelkie pomoce naukowe.

Drugim kursem nad którym zastanawiałem się jest Learn Python the Hard Way, którego autorem jest Zed A. Shaw, człowiek dość kontrowersyjny zarówno jeśli chodzi o styl uczenia jak i poglądy dotyczące chociażby Pythona w wersji 3, którego jest zagorzałym przeciwnikiem. Tutaj zdecydowanie przesądziło to, że podjąłem już decyzję o nauce Pythona w wersji 3 a LPtHW jest kolejnym kursem uczącym Pythona 2. Dopiero po dłuższym czasie zorientowałem się, że kwesta tego, czy uczę się tego języka w wersji 2 czy 3 nie jest tak dramatycznie istotna, jak na początku mi się wydawało. Na tę chwilę kurs Zeda jest jedynym obok przeze mnie wybranego, nad którym proponowałbym poważnie się zastanowić i chociaż spróbować kilku pierwszych lekcji.

A co po ukończeniu wybranego kursu lub kursów? O tym już gdzie indziej.

Dodaj komentarz