Mám za sebou první školení Flexu a protože „tenkrát poprvé“ se neopakuje, sepíšu si pár dojmů a zkušeností.
- Věděl jsem, že na jednu hodinu školení připadá až několik hodin přípravy, ale stejně mě objem přípravných prací trochu zaskočil. Asi to bylo proto, že v minulosti jsem jedinou zkušenost s výukou měl z VŠE (pár semestrů jsem vedl cvika informatiky), kde se dalo hodně přípravy ušetřit převzetím příkladů ze skript nebo od kolegů. Tady jsem něco podobného udělat nechtěl, aby bylo školení originální a plně podle mých představ.
- S předchozím bodem souvisí taky následující poznatek: je něco úplně jiného technologii znát (nebo v ní třeba být i expert) a technologii školit. Příklady, slajdy nebo schopnost srozumitelně vysvětlit principy jsou všechno věci, které vyžadují přípravu, přípravu a ještě jednou přípravu.
- Největší obavu jsem měl z odhadu času. Když má člověk připravit 14 hodin obsahu, hrozí dva velké průšvihy: že se látka nestihne probrat celá a naopak, že bude vše probráno třeba už po osmi hodinách. Celé se to komplikuje tím, že člověk neví, jak schopní programátoři na školení přijdou. V reálu je pak potřeba jednak mít připraveno víc obsahu, aby se dal program případně nějak nastavit, a zadruhé je možné trochu improvizovat – například když chci zrychlit, přeskočím příklad, když chci zpomalit, zařadím úkol apod. Zkušenost je, že ve výsledku se dá časový rozvrh docela dobře uřídit, ale je to náročné a člověk si na to pořád musí dávat pozor.
- Je těžké najít správný poměr mezi výkladem a procvičováním. Výklad je pro lidi pohodlnější a při správné míře zábavnosti a zajímavosti může být i dost efektivní, ale je snadné ztratit pozornost lidí, zvlášť když na počítačích v učebně běží internet. Časté procvičování se všude doporučuje, ale ani to není všelék: při vzorku cca 10 lidí, což je tak zhruba běžný počet na školení, budou někteří lidi v pohodě stíhat a jiní naopak budou velmi rychle ztraceni (ověřeno na mnoha různých skupinách). Ať potom zvolíte jakékoliv tempo, rychlé nebo pomalé, vždycky tím někoho otrávíte. Co s tím? Hodně se mi osvědčily živě vytvářené a bohatě komentované ukázky kódu s tím, že kdo má zájem, může je dělat se mnou, a kdo by měl s tempem problémy nebo mu prostě úkolový styl nevyhovuje, ať se radši jen dívá (to jsem nemusel explicitně říkat, tempo bylo záměrně takové, aby stíhali jen ti rychlejší). Podle odezvy tento model fungoval velmi dobře: ti rychlejší nebyli nikým zdržováni a ostatní zase evidentně ocenili, že mají možnost pohodlného sledování něčeho, co je pořád relativně zajímavé (živé programování je oproti slajdům daleko poutavější).
- Čím víc slajdů, tím menší pozornost publika. Za celé 2 dny jsem použil cca 15 slajdů a i to bylo možná moc.
- Pro příklady je dobré mít co nejmenší vstupní požadavky (předpoklady). Když jsem si například myslel, že pokynem „stáhněte si z internetu libovolnou fotku a nakopírujte ji do adresáře s projektem“ úkol začíná, ve skutečnosti to byla pro některé lidi konečná. V krajním případě se může stát, že někdo skutečně bude mít problém tento úkol provést, ale i zkušení uživatelé mohou mít problém na konkrétním počítači v učebně, který např. jako výchozí browser používá Firefox, který nikdy předtím neviděli, a fotku jim uloží kdoví kam. Po extempore, kdy jsme problém s fotkou řešili asi čtvrt hodiny a u některých to skončilo až fyzickým přenosem JPEG souboru na USB disku, je zkušenost jasná: všechny příklady mít připravené tak, aby lidi nemuseli dělat ideálně vůbec nic.
- Po věcné stránce bylo obtížné kurz připravit tak, aby dával smysl od začátku. Např. když člověk vytvoří úplně první aplikaci a ve Flex Builderu se otevře hlavní MXML soubor, chtělo by to vysvětlit, co je to MXML, jaký je vztah ke XML, že tlačítko, které přidám, je komponenta, ta že má nějaké vlastnosti a události, ty že se ošetřují v bloku s ActionScript kódem, kde musím vytvořit metodu, což je jakoby funkce na třídě, která přijímá nějaké argumenty a vrací návratovou hodnotu, a že se ten kód pak zkompiluje (navíc dvoufázovým procesem) atd. atd. No prostě byste nejradši na začátku řekli všechno, ale to samozřejmě nejde. Co podle mého názoru dělá kurz dobrým nebo špatným, je mimo jiné pořadí, kterým se vědomosti dostávají k posluchači. To lze vypozorovat i u knih – některé začínají zevrubným popisem jazyka, takže když na stránce 250 člověk konečně může vytvořit první aplikaci, v podstatě už může dělat ledacos, protože slušně rozumí programovacímu jazyku v pozadí, ale koho baví těch prvních 250 stran, že? Metoda postupného nabalování informací mi připadá lepší, ale je těžké vymyslet vhodné pořadí a taky je docela těžké uhlídat se a příliš nepřeskakovat z jednoho tématu na druhé.
- S předchozím bodem souvisí umění podívat se na technologii pohledem začátečníka, což není tak snadné, jak by se mohlo zdát. Občas jsem s tím měl problémy, ale programátoři si naštěstí neměli problém rychle říct o doplňující informace, pokud se jim zdálo, že něco není jasné.
- Až během výkladu jsem si uvědomil, jak hrozně důležitá je pro posluchače angličtina. Já z mladší generace ji beru jako samozřejmost, ale na školení byli lidi od 20 do 60 let věku a pokud někdo angličtinou nevládnul, musel mít vážný problém. Znalost angličtiny přidám do vstupních požadavků školení.
- Mojí oblíbenou částí školení bylo, když se někdo zeptal na nějakou obecnější otázku a v následujících minutách jsme potom měli možnost diskutovat podobnosti nebo rozdíly oproti kupříkladu AJAXu nebo jiné technologii. Jednak se tím posluchači dozvídají něco, co se z manuálů hodně těžko vyčte, a navíc to navozuje atmosféru důvěry. Tím myslím, že pokud já jako školitel předvádím, jak do formuláře přidat tlačítko a jak ošetřit jeho událost click, je to užitečné, ale nic extra. Pokud však probíráme, jaké věci klienta trápí v HTML a jak by se podobné věci dali řešit ve Flexu, získává tak opravdovou hodnotu, a o tom školení je. Při těchto diskuzích jsou důležité především dvě věci: přesně pochopit, na co se člověk ptá (z pohledu začátečníka je občas z pochopitelných důvodů těžké dotaz formulovat přesně, pokud vůbec nějak), a zadruhé nebát se říct „nevím“. Zvlášť tato druhá věc je psychologicky těžká a třeba ze školy znám řadu učitelů, kteří radši mlžili jak Rákosníček než aby řekli ono kouzelné slůvko „nevím“, ale opět, pro vzájemnou důvěru je potřeba být upřímný a schopnost přiznat vlastní nedostatek důvěře napomáhá.
Celkově mám ze školení dobrý pocit – vše se podařilo uřídit (zvlášť z time managementu jsem měl velký strach), a pokud mohu soudit podle odezvy účastníků, i na straně klienta vládla spokojenost. A tak to má být :)
Cože? Lidé, co neumí stáhnout fotku z netu budou programovat ve FLEXu? Tak to vysvětluje řadu věcí, na které jsem ve své praxi narazil. Třeba lidi, kteří se zovou „weboví programátoři“ a nejen že nechápou protokol http, ale dokonce ani nevědí, co to je.