تحديث: يسعدنا أن نعلن أن Mozilla منحتنا جائزة دعم المصادر المفتوحة لهذا المشروع. يمكنك قراءة المزيد هنا.
تُعلن هذه التدوينة انطلاق مشروع الدعم الآلي للإرشاد على Exercism، وهو مشروع سنطوّر فيه إطار عمل يحلّل حلول المستخدمين برمجيًا لتحسين حلقة الملاحظات لدى المتعلّمين وتخفيف العبء عن المرشدين. وهدفنا على المدى القصير هو الموافقة تلقائيًا على الحلول التي تستوفي معايير قبول محدّدة، وتقديم ملاحظات حول التحسينات الشائعة.
الغرض من هذه التدوينة هو وصف المشكلة التي نحاول حلّها والخطة العامة لطريقة معالجتنا لها خلال الأشهر القليلة القادمة. وسننشر تدوينات لاحقة نتعمّق فيها في خلفية المشكلة وتاريخ التحليل الآلي على Exercism، إضافة إلى مزيد من التفاصيل حول استراتيجية التنفيذ.
لماذا الدعم الآلي للإرشاد؟
أهم حاجز يقف أمام Exercism هو القدرة على التعامل مع التوسّع في الحجم.
مرشدونا المتطوّعون أساسيون في نجاح Exercism. وهم مسؤولون عن مراجعة حلول المتعلّمين، وتحليل ما إذا كانت تستوفي معايير النجاح في التمرين أم تحتاج إلى تحسين، وفهم طريقة تفكير المتعلّم بتعاطف، وتقديم ملاحظات مشجّعة ومفيدة، وتدريب الناس على أساليب اللغة. واليوم، بالكاد نتمكّن من مواكبة الطلب على الإرشاد. وإذا أردنا أن ننمو، فنحن بحاجة إلى استراتيجية أفضل من «إضافة المزيد من المرشدين».
بالنسبة إلى التمارين الأساسية التي تشكّل العمود الفقري لأي مسار لغة على Exercism، نقدّر أن نحو 25% من الحلول المُرسَلة جيدة بما يكفي لتُعلَّم كمكتملة من المحاولة الأولى. فيما تعاني 55% أخرى من الحلول المُرسَلة من مشكلات تندرج ضمن فئات شائعة، يمكن إرشادها بنسخ ولصق مقاطع ملاحظات جاهزة. ولا تتطلّب سوى نحو 20% من الحلول أن يكون المرشد مبتكرًا ومتأنّيًا في ملاحظاته.
ونسبة 80% من الحلول التي لا تشغل عقل المرشد فعلًا تستنزف وقت المتطوّعين المستعدّين لبذل وقتهم في مساعدة الآخرين وتُصيبهم بالإحباط، ولا تُحسن استغلال خبراتهم.
وعلى المنوال نفسه، قد ينتظر المتعلّم ما بين يوم وأسبوع قبل أن يتلقّى الملاحظات، ولا يستطيع في هذه الأثناء إحراز أي تقدّم في المسار. وبالنسبة إلى من أرسلوا نسخة تقع ضمن نسبة 25% من الحلول الصحيحة تمامًا، فإن هذا التأخير محبِط للغاية. أما بالنسبة إلى البقية، فهو دون المستوى المطلوب في أفضل الأحوال. وكثيرًا ما يفقد المتعلّمون حماسهم بسبب هذا التأخير، ويشعرون بالإحباط من العملية برمتها.
ومن خلال تطوير منظومة قادرة على تحليل أي حل تلقائيًا، ثم إمّا الموافقة عليه أو تقديم ملاحظات جاهزة بشأن مشكلات معروفة، نقدّر أننا سنتمكّن من تقليص عبء العمل على المرشدين جذريًا بإزالة الأجزاء «المملة»، مع تحسين تجربة المتعلّم بدرجة كبيرة. وميزة إضافية هي أن الناس سيتلقّون ملاحظات أكثر اتساقًا فيما يتعلّق بالمسائل البنيوية والأسلوبية، وهو ما يهيّئهم لخوض نقاشات أكثر تشويقًا حول الموضوعات الأقل وضوحًا.
كيف سيعمل؟
هدفنا على المدى البعيد هو تطوير خوارزميات تعلّم عميق قادرة على تحليل أشجار التركيب المجرّدة (ASTs) لما يقرب من مليون حل أُرسل منذ انطلاق Exercism عام 2013. وقد تكشف أداة كهذه عن أنماط شائعة وما يرتبط بها من تعليقات المرشدين. وعلى المدى القريب، هدفنا هو استخدام التحليل الساكن لتحديد الملاحظات التي يمكن تقديمها استنادًا إلى الأخطاء الأكثر تكرارًا التي يراها المرشدون.
ينقسم المشروع إلى المجالات التالية تقريبًا:
- تغييرات المنتج: علينا أن نحدّد كيف يتلاءم هذا التحليل الآلي مع واجهة الإرشاد الحالية، وكيف نبلّغ هذه الملاحظات (رسائل النظام، «روبوت»، وما إلى ذلك)، ثم ننفّذ ذلك على موقع Exercism.
- البنية التحتية: سنصمّم ونبني بنية تحتية قادرة على دعم تشغيل التحليل الساكن عبر لغات متعددة بكفاءة.
- نموذج أولي للتحليل الساكن: تطوير محلّل نموذجي يوافق تلقائيًا على الحلول الجيدة لتمرين Ruby / Two-fer، وتوثيق هذه العملية حتى يتمكّن المجتمع الأوسع من المساهمة.
ونهدف إلى إطلاق النموذج الأولي بحلول منتصف عام 2019. وبمجرد أن تكتمل أساسات المشروع، نتوقّع أن نوسّعه ليشمل لغات غير Ruby وتمارين غير Two Fer. ومع أننا لن نكون قد أنجزنا إطار العمل اللازم لدمج لغات وتمارين أخرى في الموقع قبل أن نحرز تقدمًا في النموذج الأولي، فإذا كنت ترغب في البدء بكتابة محلّلات للغات والتمارين التي تفضّلها، فلا داعي للانتظار! افتح مشكلة على مستودع GitHub الخاص بهذا المشروع وأخبرنا بما ترغب في القيام به.
ونحن متحمّسون جدًا للعمل مع آخرين في مجتمع Exercism سبق أن استخدموا التحليل الساكن للمساعدة في الإرشاد، مثل tehsphinx وbitfield اللذين طوّرا أداة تحليل ساكن لمرشدي مسار Go. والطريقة التي نقلت بها المسار من تراكم هائل للملاحظات إلى كونه أحد أسرع مسارات اللغات استجابةً على Exercism تُظهر مدى تأثير الدعم الآلي للإرشاد.
خلال الأسابيع القليلة القادمة، سنوضّح المزيد عن هذه الخطوات الأساسية الأولى وعن كيفية سير الأمور.
يسعدنا الإجابة عن أي من أسئلتكم في قسم التعليقات أدناه! :)