pyvec / naucse.python.cz

Website with learning materials / Stránka s učebními materiály
https://naucse.python.cz
Other
321 stars 117 forks source link

Snake workshop improvements #356

Open encukou opened 6 years ago

encukou commented 6 years ago

Braindump of TODOs after the first iteration of the Snake workshop.

(Checked means solved in my fork, not necessarily merged here)

hroncok commented 6 years ago

Can it be done without classes? Using a dict for state maybe?

encukou commented 6 years ago

It turns out the class actually isn't that bad if you talk through how to write it, but don't try to explain the internals too much. (Sadly, the materials don't yet say how to do that.)

encukou commented 6 years ago

Zpětná vazba od kouče Romana:

Ahoj, posílám svoji zpětnou vazbu (z pohledu kouče) k nedělnímu školení PyLadies. Je toho trochu víc (a něco už jsme probírali na nedělní rekapitulaci), tak radši píšu mail než jen body na Google Drive. Nejdřív bych ale chtěl moc poděkovat Ivaně a Petrovi za ohromný kus práce, který odvedli, je úžasné, že se někdo takového úkolu zhostil, navíc úplně dobrovolně. Pro mě osobně to byla výborná zkušenost a jsem moc rád, že jsem se akce mohl zúčastnit.

Díky, že sis dal práci to sepsat!

Poznámky pro Ivanu:

  • Koučům by mohlo pomoct, kdybys materiály, které posíláš účastnicím, přeposílala i jim. Nejen, že by si mohli např. vyzkoušet konkrétní doporučené editory, ale hlavně by si mohli udělat lepší představu o tom, do čeho jdou (a co od nich budou účastníci a účastnice očekávat).

DjangoGirls tohle dělají přes "install party" – projet to s koučem přes Hangouts/Skype.

  • Bylo by dobré v rámci přípravy na kurz kromě instalace Pythonu a editoru také požádat účastnice o to, aby si vyzkoušely napsat na své klávesnici speciální znaky (*/\<>#!@=+-()[]{}|). Napadají mě dvě možná řešení:
    • Účastnice budou mít za úkol si v rámci přípravy najít, jak na své klávesnici napíšou speciální znaky (dostanou jejich seznam) a jak to udělají (pravý alt nebo přepnutí na jinou klávesnici), bude na nich.
    • Druhá možnost je, že dostanou za úkol jen zjistit, jak přepnout klávesnici na anglickou. Pak by s psaním speciálních znaků neměl být problém. Zase by to ale přineslo nevýhodu v tom, že by některé mohly mít problém s prohozeným "y" a "z". Pokud by se během celého kurzu používala anglická klávesnice, bylo by také potřeba, aby žádné části ukázkových programů neobsahovaly diakritiku.

Na příštích workshopech tohle plánuju řešit tahákama: https://github.com/pyvec/cheatsheets/blob/master/keyboard/keyboard-cs.svg

Na kurzech s nima mám dobré zkušenosti, jen pro expaty z Polska či Ruska nefungují. Na worshop jsem je – já hlupák starý, hlava děravá – nevzal.

  • Další věc je, že na nedělní rekapitulaci zaznělo, že dobrým médiem pro získávání účastnic byl facebook. Možná by proto stálo za to založit na fb skupinu a pozvat do ní účastnice, kouče i všechny ostatní, kdo se na kurzu podíleli. Třeba to nemusí mít žádný okamžitý výsledek, ale mohlo by se to hodit, pokud dojde na nějaké pokračování a bude třeba znovu kontaktovat účastnice. Někteří lidé rychleji a spolehlivěji reagují na zprávu na facebooku než na mail.

Poznámky pro Petra:

  • Vlastně mám jenom jednu větší připomínku, ostatní jsou spíš drobnosti nebo neověřené nápady. Hlavní věc je ta, že mi přišel obsah školení příliš nabitý, takže aby bylo možné všechno odvykládat, bylo potřeba udělat nějaké kompromisy. Na jednu stranu je pravda, že úroveň účastnic nebyla úplně vyrovnaná a takhle se nenudily ani ty, které byly trochu napřed, ale přišlo mi, že úplné začátečnice nemohly všechno pobrat.

Takhle ten workshop funguje. Je to přímo založené na DjangoGirls. Není to "nauč se programovat", ale "vytvoř svou první videohru" (nebo v originále webovou stránku). Jde o to ty lidi nadchnout, ukázat jim že to není to zas taková magie a je v lidských silách rozpohybovat na obrazovce příšerku. O učení jde až v druhé řadě. Za jeden den toho stejně moc nenaučíš.

Napadly mě dvě možnosti, co by se s tím dalo dělat:

    • Vypustit programování hada a věnovat se víc do hloubky základům. Co se týče obsahu, přijde mi, že to, co bylo odvykládáno za dopoledne, by na celý den stačilo. Kdyby měly účastnice prostor na vlastní experimenty nebo by dostávaly úkoly, mohlo by je to možná naučit víc (je ale pravda, že to asi nebylo primárním cílem kurzu). Na druhou stranu je pravda, že odnést si ze školení naprogramovanou hru, je něco, co může později (po skončení kurzu) sloužit jako dobrá motivace.
      • Další možností by mohlo být osekání programované hry, jak jen je to možné. Myslím si, že zatěžovat účastnicím hlavu s OOP nemá cenu, kód je sice (z pohledu zkušeného programátora) čistší, ale z pohledu začátečníka, který vidí třídy poprvé, je to jen zkomplikování. Navíc OOP nebylo v kurzu vysvětleno, takže mi přijde, že není správné ho používat. Kromě OOP by se možná dalo zjednodušit i vykreslování hada. Ukázka s vykreslením pouze zelených čtverců byla, myslím, dost názorná, a vlastní vykreslování jednotlivých částí těla hada (tj. funkce, která bere list se souřadnicemi částí těla hada, a vykreslí ho) by se dalo dát účastnicím už hotové. To by umožnilo vynechat výklad funkce zip(), slovníků a generování názvů souborů s částmi hada. No a kdyby na konci kurzu přeci jen přebýval čas, byla by možnost tyhle vynechané věci dovysvětlit.

O možných zjednodušeních jsem přemýšlel hodně, a dát stav do slovníku místo do třídy jsem i naprototypoval, abych to mohl porovnat. Třída je možná složitější, ale na druhou stranu ji nemusí pochopit do detailů – stačí ukázat použití a říct k tomu základní koncept. Atributy se pak oproti klíčům slovníku používají výrazně líp.

Hotovým kouskům kódu bych se rád vyhnul – z toho pak je místo "napsala jsem vlastní hru" spíš "uplácala jsem golema, ale pořád k životu potřebuje kouzelný šém". Samozřejmě ne vždycky to jde (viz to OpenGL na alpha blending), ale vykreslení mi přijde hezké pořádně projít.

Používání OOP bez vysvětlení mi taky vadí. Rád učím "zdola nahoru", od základních bloků. Ale čím dál víc si uvědomuju, že na některé věci se hodí jiný přístup :)

  • A teď už jen drobné poznámky
    • Možná by bylo dobré říct už na začátku, že v konzoli (jak v cmd, tak Pythonu) lze používat šipku nahoru a tab, mohlo by to zrychlit vývoj.
    • Na začátku by také mohlo být užitečné ukázat, že text se z konzole (nebo z projektoru) nemusí opisovat, ale že (a jak) je možné si ho zkopírovat někam vedle do Wordu nebo Notepadu.

+1 a +1, tohle jsem ještě neměl v poznámkách, připsáno!

    • Přišlo mi, že pro některé účastnice bylo Atom dost složité IDE. Možná by bylo jednodušší, kdyby se (aspoň na Windows) programovalo jednotně v Notepadu (přiznávám ale, že to může být dost subjektivní názor).

Notepad určitě ne. Neumí pořádně UTF-8, takže se pak musí místo psaní prvních příkazů řešit problémy s kódováním, v každém dalším souboru, účastnice které nepoužívají diakritiku zjistí že to není potřeba a pak v půlce kurzu najednou diakritiku použijí a... prostě ne.

Když už jednodušší editor, tak spíš něco jako Gedit, ale to mě zas lidi nařknou z linuxocentrismu :)

    • Přišlo mi (a několikrát se to objevilo i ve zpětné vazbě od účastnic), že se během kurzu dost často opisovalo podle projektoru. Možná by bylo užitečnější kód projít, pak ho nasdílet, a pak případně zadat jednoduchý úkol, na kterém by si účastnice ověřily, že látku pochopily. Čas teď strávený opisováním by se tedy využil na užitečnější činnost (vymýšlení kódu účastnicemi školení).

Vymýšlení kódu je, bohužel, spíš pak spíš na dlouhodobý kurz, respektive teda na domácí úkoly. Na workshopu na to není čas. A času to zabere opravdu příliš hodně. Nasdílení je zase druhý extrém – tam odpadá takové to soustředění na kód (včetně hledání chybějících dvojteček), které myslím na workshop patří; bez toho to je málo vlastní výtvor.

    • Možná bych se nevzdával českých názvů proměnných, pokud se budou používat konzistentně. Vzpomínám si, že když jsem se sám začínal seznamovat s programováním, česky pojmenované proměnné mi pomáhaly v rozlišení toho, co si mohu pojmenovat po svém (proměnné, konstanty) a toho, co jsou klíčová (rezervovaná) slova jazyka, která nelze změnit. Při pojmenování proměnných anglicky sice vznikne (stejně jako v případě použití OOP) v očích profesionálního programátora hezčí a čistší kód, pro začátečníka ale bude komplikovanější.

Víc konzistence to chce určitě. O tom jestli česky nebo anglicky mám pochyby, ale nahlodáváš mě úspěšně :)

    • Asi by bylo dobré také ukázat použitelnou dokumentaci, kterou můžou začátečníci při programování použít. Myslím si, že na rozdíl od příkazu "help", by pro začátečníky byla více použitelná webová dokumentace https://docs.python.org/3/, která je vizuálně relativně přívětivá, a ve které lze pohodlně vyhledávat.

Problém oficiální dokumentace – a zvlášť té o standartních datových typech – je, že se v ní začátečník spolehlivě ztratí. Spíš příště:

    • Pokud by to bylo časově možné, asi by bylo příjemné dělat více pauz (alespoň krátkých na WC). Některé účastnice musely odcházet v průběhu výkladu, takže jim část utekla.

+1

    • No a nedá mi to nepochválit systém lístečků. Fungovaly skvěle, obzvlášť ty červené. Jejich využití na zpětnou vazbu na konci byl také výborný nápad.

Celý koncept je zkopírovaný ze Software Carpentry; or PyLadies to zase převzaly Czechitas :)

Nerad bych, aby poznámky ode mě vyzněly jako nějaká kritika, naopak, akce se mi moc líbila, byl to pro mě výjimečný zážitek a jsem moc rád, že jsem se mohl jako kouč zúčastnit. Pokusil jsem se jen vypsat věci, které by možná mohly být na nějaké příští akci ještě lepší. Moc děkuju za ohromný kus práce, který jste odvedli, a doufám, že se uvidíme na nějaké další akci.

Díky moc! Většinou se naše myšlenky překrývají, ale je fajn to takhle projít v textové podobě.

Moje poznámky jsou kdyžtak jako checklist do dalšího běhu na https://github.com/pyvec/naucse.python.cz/issues/356

Můžu tam tenhle mail zkopírovat, ať je veřejně a může inspirovat další?

hroncok commented 6 years ago

Notepad určitě ne. Neumí pořádně UTF-8, takže se pak musí místo psaní prvních příkazů řešit problémy s kódováním, v každém dalším souboru, účastnice které nepoužívají diakritiku zjistí že to není potřeba a pak v půlce kurzu najednou diakritiku použijí a... prostě ne.

Když už jednodušší editor, tak spíš něco jako Gedit, ale to mě zas lidi nařknou z linuxocentrismu :)

Thonny?

Glutexo commented 6 years ago

Nahradit editor, který neumí pořádně UTF-8, editorem, který neumí pořádně zacházet s klávesnicí (např. skočit na konec řádku, napsat složený znak) a myší (např. označit část textu poklepáním), mi nepřijde úplně jako to pravé ořechové.

Jinak sám bych měl výhradu vůči Atomu, že je docela nenasytný. Na starších počítačích, a že se jich objevuje, může instalace i spouštění trvat (obzvláště oproti poznámkovému bloku) věčnost. Akorát teda… co jiného? Sublime je placený, Vi ani Emacs fakt nechceš, Visual Studio Code je prašť jako bouchni jak Atom (Electron)… no a nic ostatního není multiplatformní. Ale to vlastně asi nemusí vadit.

vasekch commented 6 years ago

Zname Mu editor https://codewith.mu? Mam to od nekoho z CodeClub, co s tim dela micro:bit, laka me to vyzkouset.

show real

hroncok commented 6 years ago

Znám. Taky mě to láká.

Glutexo commented 6 years ago

Ještě ke klávesnici. Česká klávesnice má velkou výhodu, že na ní jdou napsat všechny věci, které jsou potřeba pro programování v Pythonu, a k tomu navíc ještě česká (a dokonce i anglická!) písmena. Na v česku koupených počítačích ty blešky bývají i nakreslené. Stisknout AltGr není o nic horší než stisknout Shift, některá národní rozložení jej dokonce používají běžně pro psaní svých vlastních bukev.

QWERTY varianta na Windows má navíc ještě rozložení speciálních znaků stejné jako americká, takže slouží vlastně jako takový přepínač na americkou klávesnici, který ale funguje jen, když jej držíš. Na Macu se tak dokonce chovají obě mutace a pomocí ⌥ se tam kromě programátorských výmyslů běžně píší i jiné užitečné věci jako třeba či , a .

Z těchto a i z dalších důvodů mi přijde přeučování na jiné (a proč zrovna americké?) rozložení jako zbytečné a spíše škodlivé. Když už něco učit, tak lépe používat nástroj, který už máš, který už umíš používat a na který už jsi zvyklý. Věřte tomu, nebo ne, ale lidi občas píší závorky, zavináče, rovnítka a podobné věci. Změnou rozložení se najednou všechno toto (ne jen y/z) někam přesune a přichází frustrace. Jako by už jí tak nebylo ze začátku dost.

encukou commented 6 years ago

Když už něco učit, tak lépe používat nástroj, který už máš, který už umíš používat a na který už jsi zvyklý.

Amen.

encukou commented 6 years ago

Druhá instance je za námi! Povedla se, ale je stále co zlepšovat. Zpětná vazba je na Gistu. Braindump, než to zapomenu:

Další iterace bude 13. října.

Glutexo commented 6 years ago

Ten bod s druhým počítačem mi napovídá, že jsem ještě neviděl software, který by uměl zrcadlení druhé obrazovky (zde projektoru) hodit do obyčejného okna na první obrazovce. Díra na trhu!

encukou commented 6 years ago

Stačí vybrat na projektoru menší rozlišení a zobrazit jen výřez. Používal jsem často a úspěšně, na dvouhodinovky je to ideální :) screen

Opravdový druhý monitor je ale mnohem lepší. To že je u jiného počítače nevadí. Nutnost sdílet všechno přes Etherpad je spíš výhoda – účastníci to pak mají taky!

encukou commented 5 years ago

Poznámky ze včerejší iterace: