2021 szeptemberének elején végre elindult az Exercism v3. Angelika Tyborska az egyik kulcsfontosságú karbantartó, aki segített átlendíteni minket a célvonalon. Amellett, hogy ő az Elixir tanulófeladatai és tanterve egyik megalkotója, Angelika meghatározó hangja volt a v3 fejlesztésének: ötletekkel és meglátásokkal járult hozzá a teljes fejlesztési folyamathoz. Ő az Exercism egyik kulcsfontosságú közreműködője.
Ebben a videós előadásban Angelika végigvezet minket azon, milyen problémákat hivatott megoldani a v3, mik a platform legfontosabb újdonságai, és hogyan illeszkedik minden egymáshoz; bemutatja az elemzőket, a representereket és az új tanulófeladatokat.
Átirat
Az Exercism története
Az Exercism már jó ideje létezik. 2013-ban hozta létre Katrina Owen a tanulói számára készült eszközként. A v1-ben csupán érdekes gyakorlófeladatok gyűjteménye volt. A v2-ben ingyenes kódmentorálásra szolgáló platformmá vált.
v3 🚀 2021.09.01.
Szeptember elsején megjelent az Exercism 3-as verziója.
Ebben a videóban végigveszem veled a v3 változásait, elmagyarázom, miért készültek, és hogyan javítják majd az élményedet az Exercism-ön.
Rólam
Ez vagyok én [fotó a 0:38-nál]. Angelika vagyok. A karbantartótársammal, Timmel együtt mi építettük a toolingot és több mint 30 tanulófeladatot az Elixir-kurzushoz az Exercism v3-hoz. Úgy gondolom, hogy új formájában az Exercism válhat a legjobb eszközzé az új programozási nyelvek tanulásához.
Mi az új a v3-ban?
Mi az új az Exercism v3-ban? A rövid válasz: sok minden.
A v3-ban bevezetett összes jelentős változás célja, hogy megoldja a legnagyobb problémákat, amelyekkel az emberek a v2-ben szembesültek.
Problémák a v2-ben
Három kulcsfontosságú problémát kezel a v3.
Egy: a nehézkes kezdeti beállítás. Kettő: kódgyakorlás tanulás nélkül. Három: a mentorok hosszú válaszideje.
1. probléma: Nehéz kezdeti beállítás
Első probléma: a nehézkes kezdeti beállítás. Ahhoz, hogy elkezdd az Exercism-öt, telepítened kell az Exercism CLI-t, a programozási nyelvet, amelyet ki szeretnél próbálni, és otthon kell érezned magad a terminálban. Be kell állítanod a szerkesztődet, hogy színezze a szintaxist az új nyelvhez, és így tovább. A haladó fejlesztőknek ez az egész beállítás kellemetlen időrablás. A kezdőknek viszont olyan akadály lehet, amelyet képtelenség leküzdeni.
A megoldás: az emberek a böngészőben kódolhatnak. Kezdeti beállításra nincs szükség.
Ennek elősegítésére az Exercism-nek most van egy online szerkesztője, és minden programozási nyelvnek megvan a saját tesztfuttatója, amely az Exercism feladatainak tesztjeit futtatja.
Online szerkesztő
Ez az online szerkesztő [képernyőkép a 2:25-nél]. Két panelből áll: a bal oldalon a forráskód, a jobb oldalon pedig az utasítások és a tesztcsomag.
Nincsenek benne különleges funkciók, mert nem az a célja, hogy helyettesítse a kedvenc eszközeidet. Az a célja, hogy elhalaszthasd az összes szükséges eszköz és függőség telepítését addig, amíg kényelmesebben nem érzed magad az új programozási nyelvben, és rá nem jössz, hogy folytatni szeretnéd vele a munkát.
Az online szerkesztő teljesen opcionális. Nyugodtan használhatod továbbra is a CLI-t, és dolgozhatsz a kedvenc eszközeiddel a saját gépeden.
Tesztfutatók
Ahhoz, hogy az online szerkesztő használható legyen, kell egy mód arra, hogy lefuttassák a teszteket a böngészőben írt megoldásodon. Ez a tesztfutató feladata.
Az Exercism-ön minden nyelvnek megvan a saját tesztfuttatója. A tesztfutató felel a teszteredmények jelentéséért, de ez nem minden. Ki kell nyernie a teszt törzsét is, hogy lásd, milyen kód fut le, és így értelmezni tudd a hibaüzenetet, valamint el kell kapnia a teszt kimenetét, hogy a böngészőben debugold a kódodat puts, print, console.log vagy bármilyen, a nyelved által kínált kiíró függvény segítségével.
A tesztfutatók elengedhetetlenek a feladatok böngészőben történő megoldásához, de a CLI-n keresztül beküldött megoldásoknál is használni fogják őket. Amikor egy adott feladat közösségi megoldásait böngészed, vagy amikor egy tanulót mentorálsz, láthatod, hogy a megoldás átmegy-e a teszteken, anélkül hogy le kellene töltened és helyben lefuttatnod.
2. probléma: Kódgyakorlás tanulás nélkül
Második probléma: az Exercism a kódgyakorlás platformja, de nem kínált semmilyen forrást egy adott nyelv nulláról való megtanulásához. Ezt előbb máshol kellett megtenned.
Az Exercism feladatait érdekesnek és kihívásokkal telinek tervezték, de néha még a legkönnyebbek is túl nehezek ahhoz, hogy egy új programozási nyelv belépési pontjai legyenek. Ez különösen igaz, amikor egy teljesen más szintaxisú, vagy akár más programozási paradigmát használó nyelvet próbálsz megtanulni.
A megoldás: tanulási lehetőség a gyakorlás mellé.
A tanterv és a tanulófeladatok hozzáadásával az Exercism kiváló eszközzé vált, amellyel rögtön belevághatsz egy új programozási nyelvbe.
Tanterv
Mi az a tanterv? A tanterv azoknak a fogalmaknak a fája, amelyek együtt egy-egy programozási nyelvet alkotnak. A tanterv minden Exercism-kurzushoz egyedi, mert minden programozási nyelv más, és más fogalmakból áll.
A fogalmak egymásra épülnek, és a fa különféle ágait alkotják. Ahhoz, hogy feloldd a következő fogalmat, meg kell tanulnod az ágban előtte lévőt.
Például ez az Elixir-tanterv eleje [képernyőkép az 5:10-nél]. Egy „basics” nevű fogalommal kezdődik, amely lefedi: hogyan definiálj modult, hogyan definiálj nevesített függvényt, és hol találod a standard könyvtár dokumentációját. Ez a tudás minden egyes Exercism-feladathoz szükséges. A basics elsajátítása kell ahhoz, hogy bármely más fogalmat feloldj. Tanulhatsz például a Boolean-okról, és ha már ismered a Boolean-okat, tanulhatsz a cond kifejezésről, és így tovább.
Összehasonlításként ez a teljes Elixir-tanterv [képernyőkép a 6:16-nál]. Jelenleg több mint 50 fogalmat tartalmaz, de még bővíteni kell.
Legfelül olyan fogalmakat találsz, mint: stringek, listák, mapek és tuple-ök. Középen: az Enum modul, a reguláris kifejezések, a structok és a typespec-ek írása. A végén pedig: protokollok, folyamatok és taszkok.
Tanulófeladatok
A tanterv fogalmait tanulófeladatok megoldásával sajátítod el. A tanulófeladatok különböznek a gyakorlófeladatoktól. Azért tervezték őket, hogy olyan tanulóknak tanítsanak programozási fogalmakat, akik egyáltalán nem ismerik az adott programozási nyelvet, de legalább egy másik nyelvet és az alapvető programozási fogalmakat igen.
Bevezető
Minden tanulófeladat egy bevezetővel kezdődik. A bevezető alapvető információkat ír le azokról a fogalmakról, amelyeket a feladat tanít. A legtöbb tanulófeladat egyetlen fogalmat tanít, de vannak kivételek.
Ez a példa az Elixir mapekről szóló bevezetőt mutatja [képernyőkép a 7:12-nél]. Elmagyarázza, mik a mapek, hogyan definiálj egy mapet, hogyan érj el egy értéket egy mapben, és így tovább. Tartalmaz néhány kódpéldát az új szintaxis bemutatására, de nem túl sokat, hogy ne tudd egyszerűen kimásolni a bevezetőt a feladat megoldásához.
Utasítások
Aztán jönnek az utasítások. A tanulófeladatok utasításai kis részfeladatokra vannak bontva. A részfeladatokat úgy tervezték, hogy rávezessék a tanulót az adott fogalom legfontosabb részeinek használatára.
Például a mapeket tanító tanulófeladatban a tanuló létrehoz egy mapet, aztán kiolvas egy értéket egy mapből, majd frissít egy értéket egy mapben, aztán lekéri egy map összes kulcsát, és így tovább.
Minden tanulófeladatnak van egy története, de a történet nem olyan fontos. Azért van ott, hogy ne kelljen értelmetlen értékeket használnod, mint a „foo bar” vagy az „1 2 3”, de nem játszik nagy szerepet a feladatban, mint a gyakorlófeladatokban.
Tippek
Minden részfeladathoz tartozik egy rövid tipplista, arra az esetre, ha a tanuló elakad. A tippek gyakran megmutatják, melyik konkrét függvényt melyik részfeladatban kell használni, és elvezetnek a függvény dokumentációjához.
A fogalmak gyakorlása
De egyetlen tanulófeladat megoldása nem elég ahhoz, hogy igazán elsajátítsd a fogalmat. Gyakorolnod is kell. Ezért átnéztük a v2-ben már létező összes gyakorlófeladatot, és kiválasztottunk néhányat, amelyekkel az egyes fogalmak gyakorolhatók.
Így néz ki egyetlen fogalom a fában [képernyőkép a 9:01-nél]. A pontok feladatokat jelölnek. A villanykörte ikonnal jelölt első pont egy tanulófeladat, a többi pont pedig gyakorlófeladat.
Így néz ki egy fogalom néhány feladat megoldása után [képernyőkép a 9:37-nél]. Figyeld meg, hogy ennek a fogalomnak néhány gyakorlófeladata még mindig zárolva van, pedig a tanulófeladat elkészült. Ez azért van, mert a gyakorlófeladatok nem korlátozódnak egyetlen fogalom gyakorlására. Lehet, hogy az atomoknál [a képernyőképen látható fogalom] több fogalmat is meg kell tanulnod, mielőtt azok a feladatok feloldódnak.
A tanulófeladatok triviálisak kell legyenek azoknak, akik már folyékonyan ismerik az adott nyelvet. De ne aggódj, teljesen opcionálisak. Válthatsz tanulómódból gyakorlómódba, ami azonnali hozzáférést ad az összes érdekes gyakorlófeladathoz anélkül, hogy előbb végig kellene dolgoznod a tantervet.
A tanterv hatalmas munka
Egy fontos részletet meg kell említenem, hogy reálisak maradjanak az elvárásaid: a tanterv kidolgozása HATALMAS munka. Nem minden kurzushoz van elég aktív karbantartó ahhoz, hogy a tanterv már most elkészüljön.
Amikor ezt a videót felveszem [2021. szeptember 4.], a tanulófeladatok csak ezekben érhetők el: Common Lisp, C#, Elm, Elixir, F#, Go, Java, JavaScript, Python, Ruby, Rust és Swift. A Julia-kurzus hamarosan elindítja a tantervét.
3. probléma: A mentorok hosszú válaszideje
Harmadik probléma: a mentorok hosszú válaszideje. Nem minden kurzushoz van elég mentor. Néhány kurzuson olyan kevés a mentor, hogy a mentorálásra várás akár egy hónap is lehet. Ez mindig is rendkívül elkedvetlenítő volt a tanulóknak. Ez az Exercism egyik legfontosabb problémája, ezért három különböző oldalról is kezelik.
Automatikus visszajelzés
Az első megoldás az automatikus visszajelzés nyújtása. A mentorok által a tanulóknak írt visszajelzések nagy része ismétlődő. Hatalmas előrelépés, hogy a gyakori hibákat automatikusan fel lehet ismerni, és közvetlenül jelezni lehet a tanulónak.
A gyakori hibákról szóló automatikus visszajelzés lehetővé teszi, hogy a tanuló már a mentorálás kérése előtt javítson a megoldásán, ami a mentor munkáját is megkönnyíti. Megkíméli a mentorokat attól, hogy unalmas részleteket emlegessenek, mint a snake_case és a camelCase különbsége, és a megoldás lényegére összpontosíthassanak. Bizonyos esetekben az automatikus visszajelzés elég lesz ahhoz, hogy a tanuló elégedett legyen, és mentorálást sem kér.
A v3-ban kétféle eszköz szolgál automatikus visszajelzésre: az elemzők és a representerek.
Elemzők
Az elemző egy olyan eszköz, amely meghatározott jellemzőket keres egy megoldásban, és a találtakról előre meghatározott megjegyzések listáját adja vissza a tanulónak. Hogy pontosan milyen jellemzőket, az teljesen a nyelvtől és az adott feladattól függ.
Például az Elixirnek nagyon sajátos elnevezési konvenciója van a függvényekre és a változókra. Az Elixir-elemző egyik ellenőrzése minden egyes feladatnál az összes változó- és függvénynév átvizsgálása. Ha olyan nevet talál, amely nem snake_case-ben íródott, emlékezteti a tanulót az elnevezési konvencióra.
Az Elixir-elemző egy másik ellenőrzése egy adott modul használatának felismerése. Például ez az ellenőrzés [képernyőkép a 13:20-nál], amely az Enum modul nem használatára vonatkozik, a rekurzióról szóló tanulófeladatra jellemző. Az Enum modul használata aláássa a tanulófeladat célját, ezért az elemző emlékezteti a tanulót, hogy ne tegye ezt, hanem használjon rekurziót.
Representerek
A második eszköz, amely segít az automatikus visszajelzés nyújtásában az Exercism-ön, a representer. A representer fogja a megoldást, és eltávolítja belőle a nem lényeges részeket. Normalizálja a formázást, eltávolítja a megjegyzéseket és a dokumentációt, valamint helyőrzőkre cseréli a függvény- és változóneveket.
A representer kimenetét reprezentációnak nevezzük. Minden, az Exercism-re beküldött megoldás átmegy a representeren, és a reprezentációját a megoldással együtt tárolják a platformon.
A mentorok ezután hozzáférhetnek egy felülethez, ahol a beküldött megoldások reprezentációi között böngészhetnek. Minden egyedi reprezentációhoz a mentor visszajelzést fűzhet. Ezután ez a visszajelzés minden olyan tanulóhoz eljut, aki hasonló, azonos reprezentációjú megoldást küld be. A mentornak csak egyszer kell megírnia a visszajelzést, és az mindenkihez eljut, akinek szüksége van rá.
Maguk a representerek néhány nyelvhez már meg vannak valósítva és élesítve, de amikor ezt a videót felveszem [2021. szeptember 4.], a mentoroknak szóló felület még hiányzik a platformról, úgyhogy várnunk kell egy kicsit, amíg ez a funkció teljesen elérhetővé válik.
A nem kívánt mentorálási beszélgetések elkerülése
A hosszú mentorálási sorok másik megoldása a nem kívánt mentorálási beszélgetések elkerülése. A v2-ben az alapfeladatokhoz kötelező volt a mentorálás. Egy alapfeladat beküldése azt jelentette, hogy automatikusan mentorálást kértél, és a mentor jóváhagyása nélkül nem haladhattál tovább a következő alapfeladatra. Sok tanuló az alapfeladatok végigoldásával tanulta meg a nyelvet, ezért szükségük volt a mentorálásra, hogy végigvezesse őket a tanulási folyamaton.
Ez már nincs így. Az alapfeladatok oktató szerepét és a mentor jóváhagyását átvették a tanulófeladatok és az elemzők. A v3-ban a mentorálás mindig opcionális, és kifejezetten kérni kell.
Mentorálási kérés
A mentorálás kéréséhez két kérdésre kell válaszolnod: Mit szeretnél megtanulni ebből a kurzusból?, és: Miben segíthet egy mentor a megoldásodban? Ha a mentor előre tudja, mi a tanuló elvárása a mentorálási beszélgetéstől, azokat a mentorálási kéréseket választhatja ki, amelyek a legjobban illenek a tudásához és a mentorálási stílusához, így nagyobb az esélye, hogy mindkét fél elégedetten zárja a beszélgetést.
Mentorálási sor és kedvencek
Az új mentorálási sorban a mentorok statisztikákat láthatnak a tanuló mentorálási előzményeiről. Láthatják, melyik tanulót nem mentorálták még soha, és lehet, hogy alaposabb áttekintésre szorul, és melyik tanuló esett át sokszor mentoráláson, és érti, hogyan működik.
A mentorok végre megtalálhatják azokat a tanulókat is, akiket korábban mentoráltak, és kapcsolatot építhetnek ki velük. A mentorok akár a kedvencek közé is tehetnek tanulókat, és ezzel előnyben részesíthetik azokat, akikkel korábban jó tapasztalatot szereztek.
Letiltási listák
Minden mentorálási beszélgetés után a tanuló és a mentor is dönthet úgy, hogy letiltja a másikat. Két letiltási lista van: a letiltott tanulók és a letiltott mentorok. Ha én mentorként letiltalak téged tanulóként, később te még mentorálhatsz engem. A másik fél természetesen mit sem sejt arról, hogy letiltották, így nem tud ellened visszavágni.
Bárkit bármilyen okból letilthatsz, de ha megsérti a magatartási kódexet, kérünk, hogy ezt külön is jelentsd, hogy megvédd a többi felhasználót.
A hosszú várakozás negatív következményeinek mérséklése
Végül a hosszú várakozási idő problémájának kezelésében az utolsó lépés annak biztosítása, hogy bár néha várnod kell, a várakozás negatív következményei minimálisak legyenek. A v3-ban a mentorálásra várás nem akadályoz meg abban, hogy más feladatokat oldj meg. Továbbra is haladhatsz a kurzuson.
Egy mentorálási beszélgetést bármelyik fél befejezhet. Ha tanuló vagy, és nem tetszik az a megközelítés, amelyet egy adott mentor alkalmaz veled szemben, mindig kérhetsz más megközelítést, vagy kiléphetsz a beszélgetésből. Függetlenül attól, hogyan ér véget a mentorálási beszélgetés, a tanuló kérhet új mentorálási beszélgetést egy másik mentorral ugyanahhoz a megoldáshoz.
Mentorálási helyek
Minden kurzusnál 1-4 mentorálási helyed lehet. Ha több mentorálási helyed van, az segít, amikor egy olyan nehéz feladathoz kérsz mentorálást, amelyet valószínűleg nem mentorálnak gyorsan, miközben más feladatokra ugyanakkor még mindig kaphatsz mentorálást.
A mentorálási helyeket reputáció gyűjtésével lehet feloldani. Reputációt kapsz azért, ha közzéteszed a megoldásaidat, hogy mindenki böngészhesse, ha tanulókat mentorálsz, és ha bármelyik Exercism-tárolóhoz hozzájárulsz. Ez azt jelenti, hogy azok a tanulók, akik többet tesznek hozzá a platformhoz, több mentorálást kaphatnak.
Összefoglalás
Ezek voltak azok a főbb változások, amelyek 2021. szeptember 1-jén az Exercism-nél történtek.
Hozzáadtuk a tanulófeladatokat, hogy anélkül tanulhass, hogy elhagynád a platformot; az online szerkesztőt, hogy bármit telepítés nélkül kódolhass; valamint az elemzőket és a representereket, hogy azonnali automatikus visszajelzést kapj. A mentorálási folyamatból is sok frusztráló akadályt eltávolítottunk.
És még rengeteg más újdonságot fedezhetsz fel: a közreműködési részt, a jelvényeket, az új profilokat, az utad oldalt a teljes Exercism-előzményeddel, és még sok mindent.
Gyere át az exercism.org-ra, és próbáld ki.
Köszönöm.