अपडेट: हमें यह बताते हुए खुशी है कि Mozilla ने इस प्रोजेक्ट के लिए हमें Open Source Support Award दिया है। आप यहाँ और पढ़ सकते हैं।
यह ब्लॉग पोस्ट Exercism के ऑटोमेटेड मेंटरिंग सपोर्ट प्रोजेक्ट की शुरुआत का ऐलान करती है। इस प्रोजेक्ट में हम एक ऐसा फ्रेमवर्क बनाएँगे जो प्रोग्राम के ज़रिए शिक्षार्थियों के हल का विश्लेषण करेगा। इससे शिक्षार्थियों को मिलने वाला फीडबैक बेहतर होगा और मेंटरों का बोझ भी कम होगा। फिलहाल हमारा उद्देश्य है कि जो हल तय स्वीकृति मानदंडों को पूरा करते हैं, उन्हें अपने आप स्वीकृत कर दिया जाए, और अक्सर दिखने वाली गलतियों के लिए फीडबैक दिया जाए।
इस पोस्ट का उद्देश्य यह बताना है कि हम किस समस्या को हल करने की कोशिश कर रहे हैं, और अगले कुछ महीनों में हम उसे कैसे निपटाएँगे, इसका उच्च-स्तरीय प्लान क्या है। आगे हम और पोस्ट लिखेंगे। उनमें इस समस्या की पृष्ठभूमि, Exercism पर ऑटोमेटेड एनालिसिस का इतिहास, और हमारी कार्यान्वयन रणनीति की ज़्यादा जानकारी होगी।
ऑटोमेटेड मेंटर सपोर्ट क्यों?
Exercism के सामने सबसे बड़ी बाधा यह है कि बढ़ते पैमाने को कैसे संभाला जाए।
Exercism की सफलता में हमारे स्वयंसेवक मेंटरों की बहुत बड़ी भूमिका है। वे शिक्षार्थियों के हल देखते हैं, यह समझते हैं कि हल अभ्यास के सफलता मानदंडों को पूरा करते हैं या उन्हें सुधारने की ज़रूरत है, शिक्षार्थी की सोच को सहानुभूति से समझते हैं, प्रोत्साहन देने वाला और काम का फीडबैक देते हैं, और लोगों को भाषा के मुहावरों की समझ देते हैं। आज हम मुश्किल से मेंटरिंग की माँग पूरी कर पा रहे हैं। अगर हमें आगे बढ़ना है, तो "और मेंटर जोड़ें" से बेहतर रणनीति चाहिए।
Exercism की किसी भाषा के ट्रैक की रीढ़ बनने वाले मुख्य अभ्यासों में, हमारा अनुमान है कि लगभग 25% सबमिशन पहली ही कोशिश में पूरा मानने लायक होते हैं। अगले 55% सबमिशन में ऐसी समस्याएँ होती हैं जो आम श्रेणियों में आती हैं; इनकी मेंटरिंग तैयार फीडबैक के टुकड़े कॉपी-पेस्ट करके की जा सकती है। सिर्फ़ लगभग 20% हल ऐसे होते हैं जिनमें मेंटर को नया सोचना पड़ता है और सोच-समझकर फीडबैक देना पड़ता है।
जो 80% हल मेंटर के दिमाग को सच में नहीं लगाते, वे उन लोगों का कीमती समय बर्बाद करते हैं जो दूसरों की मदद में अपना समय स्वेच्छा से लगाने को तैयार हैं, और उनकी विशेषज्ञता का भरपूर उपयोग भी नहीं हो पाता।
इसी तरह, फीडबैक मिलने में एक शिक्षार्थी को एक दिन से लेकर एक हफ्ते तक इंतज़ार करना पड़ सकता है, और तब तक वह ट्रैक पर आगे नहीं बढ़ पाता। जिन लोगों ने ऐसा इटरेशन जमा किया है जो उन 25% बिल्कुल सही हलों में आता है, उनके लिए यह देरी बहुत निराशाजनक होती है। बाकी लोगों के लिए यह सबसे अच्छी स्थिति में भी आदर्श नहीं है। इस देरी के कारण शिक्षार्थी अक्सर अपनी गति खो देते हैं और प्रक्रिया से निराश हो जाते हैं।
हम एक ऐसा सिस्टम बनाना चाहते हैं जो किसी हल का अपने आप विश्लेषण कर सके और उसे या तो स्वीकृत कर दे या जानी-पहचानी समस्याओं के लिए तैयार फीडबैक दे। ऐसा करके हम "उबाऊ" हिस्सों को हटाकर मेंटरों का काम बहुत कम कर पाएँगे और साथ ही शिक्षार्थी का अनुभव भी काफी बेहतर होगा। एक अतिरिक्त फ़ायदा यह भी होगा कि ढाँचे और शैली से जुड़े सवालों पर लोगों को ज़्यादा एक जैसा फीडबैक मिलेगा, जिससे वे कम स्पष्ट विषयों पर ज़्यादा दिलचस्प बातचीत कर पाएँगे।
यह कैसे काम करेगा?
हमारा दीर्घकालिक उद्देश्य ऐसे डीप लर्निंग एल्गोरिदम बनाना है जो उन लगभग दस लाख सबमिशन के एब्सट्रैक्ट सिंटैक्स ट्री (AST) का विश्लेषण कर सकें जो 2013 में Exercism की शुरुआत से अब तक जमा हुए हैं। ऐसा टूल आम पैटर्न और मेंटरों की उनसे जुड़ी टिप्पणियाँ पहचान सकता है। फिलहाल हमारा लक्ष्य स्टैटिक एनालिसिस का उपयोग करके यह तय करना है कि मेंटरों को सबसे ज़्यादा दिखने वाली गलतियों के आधार पर कौन-सा फीडबैक दिया जा सकता है।
यह प्रोजेक्ट मोटे तौर पर इन हिस्सों में बँटा है:
- प्रोडक्ट में बदलाव: हमें यह तय करना है कि यह ऑटोमेटेड एनालिसिस मौजूदा मेंटरिंग UI के साथ कैसे फिट बैठता है, यह फीडबैक हम कैसे पहुँचाएँगे (सिस्टम मैसेज, कोई "बॉट", वगैरह), और फिर इसे Exercism की वेबसाइट के लिए लागू करना है।
- इंफ्रास्ट्रक्चर: हम ऐसा इंफ्रास्ट्रक्चर डिज़ाइन और बनाएँगे जो कई भाषाओं में स्टैटिक एनालिसिस चलाने को कुशलता से सँभाल सके।
- स्टैटिक एनालिसिस प्रोटोटाइप: एक नमूना एनालाइज़र बनाना, जो Ruby / Two-fer के अच्छे हलों को अपने आप स्वीकृत कर देगा, और इस प्रक्रिया को लिखकर बताना ताकि बड़ा समुदाय भी इसमें योगदान दे सके।
हमारा लक्ष्य 2019 के मध्य तक शुरुआती प्रोटोटाइप लॉन्च करना है। जैसे ही इसकी बुनियाद तैयार हो जाएगी, हम इसे Ruby के अलावा दूसरी भाषाओं और Two Fer के अलावा दूसरे अभ्यासों तक बढ़ाना चाहेंगे। प्रोटोटाइप पर काम आगे बढ़ने तक वेबसाइट में दूसरी भाषाओं और अभ्यासों को जोड़ने का फ्रेमवर्क तैयार नहीं होगा। लेकिन अगर आप अपनी पसंदीदा भाषाओं और अभ्यासों के लिए एनालाइज़र लिखना शुरू करना चाहते हैं, तो रुकने की कोई ज़रूरत नहीं! इस प्रोजेक्ट के GitHub रेपो पर एक इश्यू खोलिए और बताइए कि आप क्या करना चाहते हैं।
हम Exercism समुदाय के उन लोगों के साथ काम करने के लिए बहुत उत्साहित हैं जो पहले से मेंटरिंग में मदद के लिए स्टैटिक एनालिसिस का उपयोग कर रहे हैं, जैसे tehsphinx और bitfield, जिन्होंने Go ट्रैक के मेंटरों के लिए एक स्टैटिक एनालिसिस टूल बनाया है। इस टूल ने उस ट्रैक को एक बहुत बड़े बैकलॉग से निकालकर Exercism के सबसे तेज़ी से जवाब देने वाले ट्रैक में से एक बना दिया। इससे साफ़ पता चलता है कि ऑटोमेटेड मेंटर सपोर्ट कितना असरदार हो सकता है।
अगले कुछ हफ्तों में हम इन शुरुआती मुख्य कदमों के बारे में और यह भी बताएँगे कि चीज़ें कैसे काम करेंगी।
नीचे कमेंट सेक्शन में आपके किसी भी सवाल का जवाब देने में हमें खुशी होगी! :)