Frissítés: Örömmel jelentjük be, hogy a Mozilla az Open Source Support Award díjjal jutalmazta ezt a projektünket. Bővebben itt olvashatsz.
Ez a blogbejegyzés az Exercism Automated Mentoring Support Project kezdetét jelzi, amelynek keretében olyan keretrendszert fejlesztünk, amely programozottan elemzi a felhasználók megoldásait, hogy javítsa a tanulók visszajelzési ciklusát és csökkentse a mentorok terheit. Rövid távú célunk, hogy automatikusan jóváhagyjuk azokat a megoldásokat, amelyek megfelelnek a megadott elfogadási feltételeknek, és visszajelzést adjunk a gyakran előforduló fejlesztési lehetőségekről.
E bejegyzés célja, hogy bemutassa a problémát, amelyet megpróbálunk megoldani, és a magas szintű tervet arra, hogyan fogunk nekiállni a következő hónapokban. A következő bejegyzésekben részletesen kitérünk a probléma hátterére és az automatikus elemzés történetére az Exercism-ön, valamint a megvalósítási stratégiánk részleteire is.
Miért van szükség automatikus mentortámogatásra?
Az Exercism legjelentősebb akadálya a növekedés kezelése.
Önkéntes mentoraink kulcsfontosságúak az Exercism sikeréhez. Ők felelősek azért, hogy átnézzék a tanulók megoldásait, elemezzék, hogy azok megfelelnek-e a feladat sikerességi feltételeinek vagy javításra szorulnak, empátiával megértsék a tanuló gondolkodásmódját, bátorító és hasznos visszajelzést adjanak, és megtanítsák az embereket az adott nyelv idiomáira. Ma éppen csak hogy lépést tudunk tartani a mentorálási igényekkel. Ha növekedni akarunk, jobb stratégiára van szükségünk, mint a »vegyünk fel több mentort«.
Azoknál az alapfeladatoknál, amelyek egy Exercism nyelvi kurzus gerincét alkotják, becsléseink szerint a beküldések mintegy 25%-a elég jó ahhoz, hogy első próbálkozásra elkészültnek jelöljük őket. A beküldések további 55%-ában olyan problémák vannak, amelyek gyakori kategóriákba esnek, és amelyeket kész visszajelzések bemásolásával lehet mentorálni. A megoldásoknak csak mintegy 20%-a igényel olyan mentort, aki leleményes és átgondolt visszajelzést ad.
A megoldásoknak az a 80%-a, amely igazából nem mozgatja meg a mentor agyát, frusztráló időrabló azok számára, akik hajlandók önként segíteni másoknak, és nem használja ki a szaktudásukat.
Hasonlóképpen, egy tanuló a visszajelzésre akár egy napot, de akár egy hetet is várhat, és addig nem tud továbblépni a kurzusban. Azok számára, akik a tökéletesen érvényes megoldások 25%-ába eső iterációt küldtek be, ez a késés különösen frusztráló. A többieknél ez a legjobb esetben sem ideális. A tanulók gyakran elveszítik a lendületüket a késés miatt, és frusztrálja őket a folyamat.
Ha olyan rendszert fejlesztünk, amely automatikusan képes elemezni egy megoldást, és vagy jóváhagyja azt, vagy kész visszajelzést ad az ismert problémákra, becsléseink szerint drasztikusan csökkenthetjük a mentorok terheit azzal, hogy kiküszöböljük az „unalmas” részeket, miközben jelentősen javítjuk a tanulók élményét. Ráadásul az emberek következetesebb visszajelzést kapnak a szerkezeti és stilisztikai kérdésekben, ami felkészíti őket arra, hogy érdekesebb beszélgetéseket folytassanak a kevésbé egyértelmű témákról.
Hogyan fog működni?
Hosszú távú célunk olyan mélytanulási algoritmusok kifejlesztése, amelyek képesek elemezni a csaknem egymillió olyan megoldás absztrakt szintaxisfáit (AST), amelyet az Exercism 2013-as indulása óta küldtek be. Egy ilyen eszköz felismerhetné a gyakori mintázatokat és a mentorok ezekhez kapcsolódó megjegyzéseit. Rövid távon az a célunk, hogy statikus elemzést használjunk annak meghatározására, hogy milyen visszajelzést lehet adni a mentorok által leggyakrabban látott hibák alapján.
A projekt nagyjából a következő területekre bontható:
- Termékváltozások: Ki kell dolgoznunk, hogyan illeszkedik ez az automatikus elemzés a jelenlegi mentorálási felülethez, hogyan közvetítjük a visszajelzést (rendszerüzenetek, egy „bot” stb.), és mindezt meg kell valósítanunk az Exercism weboldalán.
- Infrastruktúra: Olyan infrastruktúrát tervezünk és építünk, amely hatékonyan támogatja a statikus elemzés futtatását több nyelven.
- Statikus elemzés prototípus: Készítünk egy mintaelemzőt, amely automatikusan jóváhagyja a Ruby / Two-fer feladat jó megoldásait, és dokumentáljuk ezt a folyamatot, hogy a tágabb közösség is hozzájárulhasson.
Célunk, hogy 2019 közepére elindítsuk az első prototípust. Amint megvannak az alapok, várhatóan kiterjesztjük mindezt a Ruby-n kívül más nyelvekre, és a Two Fer-en kívül más feladatokra is. Az a keretrendszer viszont, amellyel más nyelveket és feladatokat is beilleszthetünk a weboldalba, addig nem lesz meg, amíg nem haladunk előre a prototípussal. Ha viszont szeretnél elemzőket írni a kedvenc nyelveidhez és feladataidhoz, semmi okod várni! Nyiss egy issue-t a projekt GitHub-tárolójában, és meséld el, min szeretnél dolgozni.
Nagyon örülünk annak, hogy együtt dolgozhatunk az Exercism közösségének olyan tagjaival, akik már használnak statikus elemzést a mentorálás segítésére, például tehsphinx és bitfield, akik statikus elemzési eszközt fejlesztettek a Go-kurzus mentorai számára. Az, hogy ez a kurzust egy hatalmas hátralékból az Exercism egyik leggyorsabban reagáló nyelvi kurzusává tette, jól mutatja, milyen nagy hatású lehet az automatikus mentortámogatás.
A következő néhány hétben bővebben kifejtjük ezeket az első kulcsfontosságú lépéseket, és azt is, hogyan fognak működni a dolgok.
Szívesen válaszolunk bármelyik kérdésedre a lenti hozzászólásokban! :)