Ενημέρωση: Είμαστε στην ευχάριστη θέση να ανακοινώσουμε ότι η Mozilla μας απένειμε το Open Source Support Award για αυτό το έργο. Μπορείς να διαβάσεις περισσότερα εδώ.
Αυτή η ανάρτηση στο blog σηματοδοτεί την έναρξη του Έργου Αυτοματοποιημένης Υποστήριξης Καθοδήγησης του Exercism, στο πλαίσιο του οποίου θα αναπτύξουμε ένα framework που αναλύει προγραμματιστικά τις λύσεις των χρηστών, ώστε να βελτιώσουμε τον βρόχο ανατροφοδότησης για τους μαθητές και να μειώσουμε τον φόρτο των μεντόρων. Στόχος μας βραχυπρόθεσμα είναι να εγκρίνουμε αυτόματα λύσεις που πληρούν συγκεκριμένα κριτήρια αποδοχής και να παρέχουμε ανατροφοδότηση για τις βελτιώσεις που συναντάμε συχνά.
Σκοπός αυτής της ανάρτησης είναι να περιγράψει το πρόβλημα που προσπαθούμε να λύσουμε και το σχέδιο σε γενικές γραμμές για το πώς θα το αντιμετωπίσουμε τους επόμενους μήνες. Θα ακολουθήσουν κι άλλες αναρτήσεις που θα εμβαθύνουν στο υπόβαθρο του προβλήματος και στην ιστορία της αυτοματοποιημένης ανάλυσης στο Exercism, καθώς και σε περισσότερες λεπτομέρειες για τη στρατηγική υλοποίησής μας.
Γιατί αυτοματοποιημένη υποστήριξη καθοδήγησης;
Το πιο σημαντικό εμπόδιο για το Exercism είναι να μπορέσει να ανταπεξέλθει στην κλίμακα.
Οι εθελοντές μέντορές μας είναι κρίσιμοι για την επιτυχία του Exercism. Είναι υπεύθυνοι για την αξιολόγηση των λύσεων των μαθητών, την ανάλυση του κατά πόσο πληρούν τα κριτήρια επιτυχίας της άσκησης ή χρειάζονται βελτίωση, την κατανόηση με ενσυναίσθηση του τρόπου σκέψης του μαθητή, την παροχή ενθαρρυντικής και χρήσιμης ανατροφοδότησης και την καθοδήγηση των ανθρώπων στους ιδιωματισμούς μιας γλώσσας. Σήμερα, μετά βίας προλαβαίνουμε να ανταποκριθούμε στη ζήτηση για καθοδήγηση. Αν θέλουμε να αναπτυχθούμε, χρειαζόμαστε καλύτερη στρατηγική από το "προσθέτουμε κι άλλους μέντορες".
Για τις βασικές ασκήσεις που αποτελούν τη ραχοκοκαλιά μιας γλωσσικής διαδρομής του Exercism, εκτιμούμε ότι περίπου το 25% των υποβολών είναι αρκετά καλές ώστε να χαρακτηριστούν ολοκληρωμένες με την πρώτη προσπάθεια. Ένα ακόμη 55% των υποβολών έχει προβλήματα που ανήκουν σε συνηθισμένες κατηγορίες, για τα οποία αρκεί να αντιγράψεις και να επικολλήσεις έτοιμα αποσπάσματα ανατροφοδότησης. Μόνο περίπου το 20% των λύσεων απαιτεί από έναν μέντορα να είναι ευρηματικός και στοχαστικός στην ανατροφοδότησή του.
Το 80% των λύσεων που δεν απασχολούν πραγματικά το μυαλό ενός μέντορα είναι μια εκνευριστική σπατάλη χρόνου για ανθρώπους που είναι πρόθυμοι να προσφέρουν τον χρόνο τους βοηθώντας άλλους και δεν αξιοποιούν στο έπακρο την εξειδίκευσή τους.
Παρομοίως, ένας μαθητής μπορεί να περιμένει από μία μέρα έως μία εβδομάδα μέχρι να λάβει ανατροφοδότηση και στο μεταξύ δεν μπορεί να προχωρήσει στη διαδρομή. Για όσους έχουν υποβάλει μια εκδοχή που ανήκει στο 25% των απόλυτα σωστών λύσεων, αυτή η καθυστέρηση είναι εξαιρετικά εκνευριστική. Για τους υπόλοιπους, είναι στην καλύτερη περίπτωση μη ιδανική. Οι μαθητές συχνά χάνουν τη δυναμική τους εξαιτίας αυτής της καθυστέρησης και απογοητεύονται με τη διαδικασία.
Αναπτύσσοντας ένα σύστημα που μπορεί να αναλύει αυτόματα μια λύση και είτε να την εγκρίνει είτε να παρέχει τυποποιημένη ανατροφοδότηση για γνωστά ζητήματα, εκτιμούμε ότι θα μπορέσουμε να μειώσουμε δραστικά τον φόρτο εργασίας των μεντόρων εξαλείφοντας τα "βαρετά" κομμάτια, βελτιώνοντας παράλληλα σημαντικά την εμπειρία του μαθητή. Ως επιπλέον όφελος, οι άνθρωποι θα λαμβάνουν πιο συνεπή ανατροφοδότηση σε δομικά και υφολογικά ζητήματα, κάτι που τους προετοιμάζει για πιο ενδιαφέρουσες συζητήσεις γύρω από τα λιγότερο ξεκάθαρα θέματα.
Πώς θα λειτουργήσει;
Ο μακροπρόθεσμος στόχος μας είναι να αναπτύξουμε αλγορίθμους βαθιάς μάθησης που μπορούν να αναλύουν τα Δέντρα Αφηρημένης Σύνταξης (ASTs) των σχεδόν ενός εκατομμυρίου υποβολών που έχουν κατατεθεί από τότε που το Exercism ξεκίνησε το 2013. Ένα τέτοιο εργαλείο θα μπορούσε να εντοπίζει κοινά μοτίβα και σχετικά σχόλια των μεντόρων. Βραχυπρόθεσμα, στόχος μας είναι να χρησιμοποιήσουμε τη στατική ανάλυση για να προσδιορίσουμε ποια ανατροφοδότηση μπορεί να δοθεί με βάση τα πιο συχνά επαναλαμβανόμενα λάθη που βλέπουν οι μέντορες.
Το έργο χωρίζεται χονδρικά στους εξής τομείς:
- Αλλαγές στο προϊόν: Πρέπει να βρούμε πώς ταιριάζει αυτή η αυτοματοποιημένη ανάλυση με την τρέχουσα διεπαφή χρήστη (UI) της καθοδήγησης, πώς μεταδίδουμε αυτή την ανατροφοδότηση (μηνύματα συστήματος, ένα "bot" κ.λπ.) και έπειτα να το υλοποιήσουμε για τον ιστότοπο του Exercism.
- Υποδομή: Θα σχεδιάσουμε και θα κατασκευάσουμε υποδομή που μπορεί να υποστηρίξει αποδοτικά την εκτέλεση στατικής ανάλυσης σε πολλές γλώσσες.
- Πρωτότυπο στατικής ανάλυσης: Ανάπτυξη ενός δειγματικού αναλυτή που θα εγκρίνει αυτόματα τις καλές λύσεις για το Ruby / Two-fer, και τεκμηρίωση αυτής της διαδικασίας, ώστε να μπορεί να συνεισφέρει η ευρύτερη κοινότητα.
Στόχος μας είναι να παρουσιάσουμε το αρχικό πρωτότυπο μέχρι τα μέσα του 2019. Μόλις μπουν οι βάσεις, αναμένουμε να το επεκτείνουμε και σε άλλες γλώσσες πέρα από τη Ruby και σε άλλες ασκήσεις πέρα από το Two Fer. Αν και δεν θα έχουμε έτοιμο το framework για να ενσωματώσουμε άλλες γλώσσες και ασκήσεις στον ιστότοπο πριν σημειώσουμε πρόοδο στο πρωτότυπο, αν θέλεις να αρχίσεις να γράφεις αναλυτές για τις αγαπημένες σου γλώσσες και ασκήσεις, δεν υπάρχει λόγος να περιμένεις! Άνοιξε ένα issue στο αποθετήριο GitHub αυτού του έργου και πες μας τι θα ήθελες να κάνεις.
Είμαστε πολύ ενθουσιασμένοι που συνεργαζόμαστε με άλλα μέλη της κοινότητας του Exercism που χρησιμοποιούν ήδη στατική ανάλυση για να βοηθήσουν στην καθοδήγηση, όπως οι tehsphinx και bitfield, οι οποίοι ανέπτυξαν ένα εργαλείο στατικής ανάλυσης για μέντορες στη διαδρομή της Go. Ο τρόπος με τον οποίο πήγε τη διαδρομή από ένα τεράστιο απόθεμα εκκρεμοτήτων στο να είναι μία από τις πιο άμεσες γλωσσικές διαδρομές στο Exercism δείχνει πόσο μεγάλο αντίκτυπο μπορεί να έχει η αυτοματοποιημένη υποστήριξη καθοδήγησης.
Τις επόμενες εβδομάδες θα περιγράψουμε αναλυτικότερα αυτά τα πρώτα βασικά βήματα και το πώς θα λειτουργήσουν τα πράγματα.
Θα χαρούμε πολύ να απαντήσουμε σε όποια ερώτησή σου στην ενότητα σχολίων παρακάτω! :)