Chci s vámi mluvit o tom, proč častěji opravujeme vodovodní instalace, než o nich píšeme disertační práce, o různých přístupech k výuce programování a o tom, jak se snažíme aplikovat jeden z nich v našem novém produktu Hyperskill.
Pokud nemáte rádi dlouhé úvody, přejděte rovnou k odstavci o programování. Ale bude to méně zábavné.
Lyrické odbočení
Představme si dívku Mášu. Dnes si Máša chtěla umýt ovoce a v klidu se podívat na film, ale ouha: nečekaně objevila, že má ucpaný dřez v kuchyni. Co s tím udělat — zatím není jasné. Můžete tuto otázku odložit na neurčitou dobu, ale volný čas je právě teď, takže se Máša rozhodne vypořádat s problémem hned. Zdravý rozum naznačuje dvě možnosti: a) zavolat instalatéra b) vyřešit to sama. Dívka si vybere druhou variantu a začne studovat návody na YouTube. Podle rady uživatele Vasya_the_plumber nahlédne Máša pod dřez a vidí tam hadovitě propletenou plastovou trubku z několika částí. Dívka opatrně odšroubuje jednu část u základny dřezu a nic nenachází. Kousek trubky níže je však navždy ucpaný neznámou substancí, a dokonce ani vidlička, kterou našla na stole, si s ucpáním neporadí. Odborníci z internetu dávají neútěšné prognózy: část bude nutné vyměnit. Na mapě Máša najde nejbližší obchod, vezme si s sebou prokletý kousek trubky a koupí stejnou, pouze novou. Podle rady prodavače si Máša vezme i nový sítko, pro prevenci. Konec questu: dřez opět funguje, jak má, a jeho hlavní hrdinka mezitím zjistila následující:
- Trubky pod dřezem si můžete samostatně rozšroubovat a zašroubovat;
- Nejbližší obchod se sanitárními potřebami je od Mášiny bytu vzdálený jeden a půl kilometru.
Pravděpodobně si Máša ani nevšimla, kolik nového se naučila a co se naučila, protože jí záleželo na vlastním pohodlí v budoucnu, a navíc na filmovém večeru a umytém jablku. Příště, když nastane podobný problém, dívka ho vyřeší mnohem rychleji. Ve skutečnosti Máša nevracela svět do obvyklého stavu; ona se učila induktivně, tedy na konkrétních případech, a pragmaticky, tedy děláním věcí, a ne jejich podrobným a předchozím studováním.
Všechno mohlo dopadnout jinak. Představme si, že Máša sedí večer v křesle a najednou si uvědomí, že není morálně a fyzicky připravena na ucpaný dřez. Rychle se zaregistruje do akademie instalatérství, studuje typy dřezů, trubek a možných spojení, klasifikaci problémů se sanitárními zařízeními a možné způsoby jejich odstranění. Máša nespí v noci, zapomíná termíny a názvy. Možná dokonce píše disertační práci o teoretické trubkové vědě, kde rozebírá gumové těsnění. Nakonec, když získá certifikát, hrdě se dívá na kuchyň s plnou důvěrou, že nyní i malý problém s dřezem vyřeší lusknutím prstu. V takovém scénáři se dívka učila deduktivně, přecházela od obecného k jednotlivému a spíše se orientovala na teorii.
Který z přístupů je tedy lepší? V případě dřezu a ucpání — první, a to z následujících důvodů:
- Pokud jde pouze o funkční dřez, stačí znát pouze to, co se týká této oblasti. Když Máša zjistí, že jí chybí znalosti, určitě najde způsob, jak se dozvědět více.
- Encyklopedické znalosti se nemusí v reálné situaci projevit, protože není zafixovaná rutina. Pro to, abychom se naučili sekvenci činností, má smysl o nich ne jen číst, ale je také provádět.
Pojďme už nechat chudou Mášu a přejděme k procesu učení jako takovému.
Programování: učit se nebo dělat?
Zvykli jsme si myslet, že abychom se rozvíjeli a stali se experty v neznámé oblasti, musíme nejprve nastoupit na univerzitu nebo se alespoň zapsat na kurzy. Poctivě nasloucháme tomu, co nám říkají, plníme úkoly. Když však dostaneme vytoužený diplom nebo certifikát, okamžitě se ztrácíme, protože jsme tak úplně nepochopili, proč potřebujeme tolik informací a jak je konkrétně aplikovat. Není to problém, pokud máme v plánu psát vědecké práce a jezdit s nimi na konference. V opačném případě bychom se měli snažit o dovednosti, tedy dělat a znovu dělat konkrétní věci, zkoušet a chybovat, abychom si na dlouho zapamatovali, jak lépe nepostupovat.
Jednou z oblastí, kde je 'zkušená ruka' nebo 'ostré oko' vedle širokého obzoru — programování. Pokud se pobavíte s zkušenými vývojáři, uslyšíte hrdinské příběhy, kde se člověk od mládí věnoval matematice/fyzice/vyučování a pak se unavil a přešel k backendu. Najdou se i programátoři bez vysokoškolského vzdělání! V prvé řadě se u vývojáře ocení ne certifikát, ne diplom, ale množství a kvalita napsaných programů, skriptů a webových stránek.
"Ale počkejte!" namítáte, "Zní to hezky — vezmi a dělej! Nemohu si jen tak napsat program, pokud jsem předtím neprogramoval(a)! Je pro mě důležité rozumět, kde psát, a jak vlastně mluvit jazykem programování s kompilátorem. To není telefon instalatéra, který najdetě na Googlu."
Hořká pravda je i v tom. Jeden neznámý aspekt táhne za sebou druhý, ten zase třetí, a brzy se tento proces proměňuje v kouzelníkův show, který neustále vytahuje provázky a nemůže je dostat z cylindru. Proces, řeknu upřímně, je nepříjemný, na 5. "provázku" už se zdá, že hloubka nevědomosti je blízko Mariánského příkopu. Alternativou k tomu jsou stejné přednášky o 10 druzích proměnných, 3 druzích cyklů a 150 potenciálně užitečných knihovnách. Je to smutné.
Hyperskill: stavěli jsme, stavěli a konečně postavili.
Dlouho jsme přemýšleli o tomto problému. O tom, jak dlouho jsme přemýšleli, výmluvně svědčí datum posledního příspěvku v našem blogu. Po všech debatách a pokusech integrovat nový přístup na Stepik jsme dostali… jinou stránku. Možná jste o něm už slyšeli jako o součásti JetBrains Academy. Pojmenovali jsme ho Hyperskill, integrovali jsme do něj učení založené na projektech, navázali jsme k němu znalostní databázi Java a získali jsme podporu týmu EduTools. A teď podrobněji.
Konkrétní cíl. Nabízíme "menu" projektů, tedy programů, které můžete s naší pomocí napsat. Mezi nimi jsou piškvorky, osobní asistent, blockchain, vyhledávač atd. Projekty se skládají z 5-6 fází; výsledkem každé fáze je hotový program. "Proč tedy zbytek fází, pokud už na první byla všechno?" Děkujeme za otázku. S každým krokem se program stává funkčnějším nebo rychlejším. Zpočátku kód zabere 10 řádků, na konci se může nevejít ani do 500.
Trochu teorie. Není možné napsat ani "Hello World", aniž byste měli znalosti o programování. Proto na každém kroku projektu vidíte, jaké základní teoretické znalosti se musíte naučit a především, kde je získat. Základy jsou také umístěny na Hyperskill v sekci "Mapa znalostí" (Knowledge Map). Pro první fázi projektu studenti nemusí číst data z souboru, i když to nebudou umět hned. Učí se později pro celkový rozvoj, nebo to bude potřeba v následující fázi.
Mapa znalostí. Na ní vidíte, jaké témata jste již studovali a jak spolu souvisejí. Otevřete si jakékoliv zajímavé téma. Můžete se na něj podívat, ale doporučujeme také splnit několik úkolů, abyste se ujistili, že informace se vám v hlavě usadily. Zpočátku vám platforma nabídne testy, poté několik úkolů na programování. Pokud se vám kód zkompiluje a projde testy, porovnejte ho s referenčním řešením (reference solution), někdy to pomůže objevit optimálnější způsob realizace. Nebo se ujistěte, že vaše řešení je již skvělé.
Nic zbytečného. Očekáváme jak "zelené" uživatele, tak zkušené vývojáře. Pokud jste už psali programy, není problém, nemusíme vás nutit znovu počítat 2+2 nebo otáčet řádek. Abyste se hned dostali na požadovanou úroveň, u registrace uveďte, s čím už jste obeznámeni, a vyberte si složitější projekt. Nebojte se se přeceňovat: pokud bude potřeba, můžete se vždy vrátit k zapomenutému tématu v mapě znalostí.
Nástroje. Je skvělé psát malé kousky kódu ve speciálním okně na webu, ale skutečné programování začíná prací v vývojovém prostředí (Iintegrovaná DDoSevelopment EZkušenější programátoři vědí nejen jak psát kód, ale také jak konstruovat grafické rozhraní, sestavit různé soubory do projektu, využívat další vývojářské nástroje, a část těchto procesů IDE přebírá na sebe. Proč se nenaučit také tyto dovednosti, zatímco se učíte programovat? Na pomoc přichází JetBrains se speciální verzí IntelliJ IDEA Community Educational s předinstalovaným pluginem EduTools. V takovém IDE lze procházet výukové kurzy, kontrolovat vyřešené úkoly a nahlížet do nápovědy k projektu, pokud jste něco zapomněli. Nebojte se, pokud poprvé slyšíte slovo "plugin" nebo "IDE": vysvětlíme vám, co to je a jak jej nainstalovat na počítač nebo notebook s minimálním úsilím. Zvládněte teorii a poté přejděte do IDE a dokončete další fázi projektu přímo tam.
Termíny. Žádné! Kdo jsme, abychom vám říkali, jak rychle máte psát program. Když vás baví psát kód a chcete jej dokončit, dopsat jej můžete dnes nebo zítra. Bavte se vývojem.
Chyby. Každý je dělá, udělejte je i vy v jedné z fází projektu, a pak tato fáze neprojde automatickými testy. No co, budete si muset sami zjistit, co se pokazilo. Mohli bychom říct, kde se nachází chyba, ale naučilo by vás to psát kód pečlivě? Čtěte nápovědu od IDEA nebo teoretické téma o chybách a když program konečně začne fungovat, příliv dopaminu se pravděpodobně nenechá dlouho čekat.
Hmatatelný výsledek. Takže jste dokončili svůj první projekt, co dál? Užijte si plody své práce! Zahrajte si s přáteli piškvorky a zároveň se pochlubte svými úspěchy. Nahrajte projekt na GitHub, abyste jej ukázali budoucímu zaměstnavateli, napište o něm popis sami, uveďte tam znalosti, které jste použili. 4-5 složitějších projektů a máte skromné portfolio pro začínajícího vývojáře hotové.
Možnost pro růst. Předpokládejme, že se díváte na Hyperskill a nevidíte tam nějaké důležité téma nebo užitečný projekt. Dejte nám vědět! Pokud je váš background širší a bohatší než mapka znalostí, napište nám do formuláře. . Náš tým se s vámi podělí o vlastní tipy a triky, takže vás rádi podpoříme při transformaci vašich znalostí na užitečný obsah srozumitelný pro uživatele různých věkových skupin a úrovní. Možná vám za to i zaplatíme, ale to je nejisté.
Vítejte: Přijďte, podívejte se, vyzkoušejte, nabídněte, chvalte a kritizujte. Také se učíme, jak vás učit.
Zdroj: habr.com
