Προτείνοντας βελτιώσεις ασκήσεων

Τι να λάβεις υπόψη πριν προτείνεις βελτιώσεις σε ασκήσεις


Βρήκες λοιπόν κάτι που θα ήθελες να βελτιώσεις σε μια άσκηση. Πρώτα απ' όλα, ευχαριστούμε που νοιάζεσαι και που βρήκες τον χρόνο να μας το πεις! 💙

Όταν αλλάζεις μια άσκηση, υπάρχουν μερικά πράγματα που πρέπει να σκεφτείς, και είναι ελαφρώς διαφορετικά για τις Ασκήσεις Μάθησης (αυτές που διδάσκουν θέματα στο πρόγραμμα σπουδών) και τις Ασκήσεις Εξάσκησης (τις υπόλοιπες). Τις διαφορές αυτές τις εξηγούμε παρακάτω.

Ωστόσο, πρώτα υπάρχουν μερικά γενικά πράγματα που αξίζει να σκεφτείς.

Η αλλαγή μιας άσκησης έχει συνέπειες

Το να αλλάξεις μια άσκηση έχει αρκετές συνέπειες:

  1. Η προσθήκη νέων tests μπορεί να σπάσει υπάρχουσες λύσεις. Αυτό έχει ως συνέπεια να απαρχαιωθεί η δουλειά χιλιάδων ανθρώπων, κάτι που είναι απογοητευτικό για εκείνους αν τα επιπλέον tests δεν αναδεικνύουν κάποιο υπάρχον bug.
  2. Πρέπει να ξαναελέγξουμε τη δουλειά όλων, κάτι που έχει και περιβαλλοντικό και οικονομικό κόστος.
  3. Ένας ή περισσότεροι maintainers πρέπει να διαθέσουν χρόνο για να ελέγξουν τις αλλαγές, που σημαίνει ότι δεν μπορούν να κάνουν άλλες βελτιώσεις στο track αυτό το διάστημα.

Για όλους αυτούς τους λόγους, προσέχουμε να αλλάζουμε ασκήσεις μόνο όταν υπάρχει σαφές και αναγνωρίσιμο όφελος.

Απόφυγε την τάση προς την εντροπία

Ο σκοπός των tests που συνοδεύουν μια άσκηση δεν είναι να καλύπτουν εξαντλητικά όλες τις πιθανές περιπτώσεις. Οι ασκήσεις μας δεν είναι λογισμικό παραγωγής, ούτε είναι σχεδιασμένες να μιμούνται πραγματικές περιπτώσεις χρήσης. Είναι σχεδιασμένες ως απλά προβλήματα-παιχνίδια που σε βοηθούν να αποκτήσεις ευχέρεια σε μια γλώσσα προγραμματισμού. Γι' αυτό αποφεύγουμε σκόπιμα να καλύπτουμε κάθε οριακή περίπτωση, να επιβάλλουμε πολλή επικύρωση εισόδου ή άλλα τέτοια ζητήματα του πραγματικού κόσμου. Αν η βελτίωση που προτείνεις αποσκοπεί στο να πιάσει μια οριακή περίπτωση ή να ελέγξει την επικύρωση εισόδου, είναι απίθανο να γίνει δεκτή, εκτός αν κάνει ουσιαστική διαφορά στην άσκηση.

Ασκήσεις Μάθησης

Οι Ασκήσεις Μάθησης σχεδιάζονται με έναν στόχο: να διδάσκουν έννοιες. Όλες οι αλλαγές σε μια άσκηση κρίνονται πρώτα απ' όλα με κριτήριο το κατά πόσο βελτιώνουν τη διδασκαλία των εννοιών.

Οι Ασκήσεις Μάθησης δεν είναι (ειδικά) σχεδιασμένες να είναι εξαντλητικές στα tests τους. Επίσης, συχνά μπορεί να είναι λίγο τεχνητές ή δυσνόητες, για να αποφεύγουν έννοιες που ο μαθητής δεν έχει μάθει ακόμη ή για να μην κατακλύζουν τον μαθητή.

Αν η αλλαγή που προτείνεις μπορεί ενδεχομένως να αποσπάσει την προσοχή από τη μάθηση της έννοιας, μάλλον θα απορριφθεί. Αν η αλλαγή κάνει τη μάθηση πιο εύκολη, θα εξεταστεί σοβαρά. Αν βρίσκεται κάπου στη μέση, μπορεί να γίνει δεκτή, αλλά είναι απίθανο να προτεραιοποιηθεί.

Ασκήσεις Εξάσκησης

Το βασικό που πρέπει να καταλάβεις για τις Ασκήσεις Εξάσκησης είναι ότι σχεδόν όλες ζουν σε ένα κεντρικό αποθετήριο (γνωστό ως "Problem Specifications"). Επομένως, το να αλλάξεις μια άσκηση έχει αλυσιδωτές επιπτώσεις σε όλα τα track. Αυτό σημαίνει ότι μια καλή αλλαγή είναι ακόμη πιο ισχυρή, γιατί θα βοηθήσει όλες τις γλώσσες. Αλλά αυξάνει και το βάρος της αλλαγής, καθώς πολλοί maintainers από διαφορετικά track πρέπει να συμφωνήσουν με την αλλαγή για να γίνει δεκτή, και ύστερα οι maintainers κάθε γλώσσας πρέπει να μεταφέρουν τις αλλαγές στα δικά τους track.

Οι αλλαγές σε ασκήσεις μπορεί επίσης να σημαίνουν ότι οι έννοιες με τις οποίες συνδέονται στα προγράμματα σπουδών γίνονται πιο θολές, ή ότι οι ασκήσεις χρειάζονται επιπλέον χαρακτηριστικά για να λυθούν, κάτι που αλλάζει το σημείο στο οποίο ξεκλειδώνονται. Αυτό πρέπει επίσης να λαμβάνεται υπόψη σε όλα τα track προτού γίνουν δεκτές οι αλλαγές.

Αν και έχουμε μηχανισμούς ώστε μόνο μερικά track να έχουν ορισμένα tests, τείνουμε να το αποθαρρύνουμε, γιατί αυτή η διακλάδωση μπορεί να προκαλέσει σύγχυση τόσο στους maintainers όσο και στους μαθητές. Έτσι, όταν προτείνεις αλλαγές σε Ασκήσεις Εξάσκησης, σκέψου τη μεγαλύτερη εικόνα σε όλα τα track.

Πώς να κάνεις τις αλλαγές σου δεκτές

Αν και υπάρχουν πολλοί λόγοι για τους οποίους δεν δεχόμαστε προτάσεις, πολλές φορές οι άνθρωποι έχουν εξαιρετικές ιδέες που τελικά δεχόμαστε!

Είμαστε επίσης σχεδόν πάντα ανοιχτοί σε αλλαγές στη διατύπωση που προσθέτουν σαφήνεια, ειδικά στις Ασκήσεις Μάθησης.

Για να δώσεις στις προτάσεις σου τη μεγαλύτερη πιθανότητα να εγκριθούν, γράψε τις προτάσεις σου δείχνοντας ότι έχεις σκεφτεί τα εξής:

  • Την απτή βελτίωση που φέρνει αυτή η αλλαγή (ιδανικά με παραδείγματα κώδικα που δείχνουν τι επιτρέπει ή τι σταματά η αλλαγή σου).
  • Τον αντίκτυπο στις υπάρχουσες λύσεις και γιατί αξίζει τον κόπο.
  • Τυχόν αλλαγές στις έννοιες που διδάσκονται ή χρησιμοποιούνται.
  • Κατανόηση του γιατί τα πράγματα μπορεί να είναι όπως είναι. (Διάβασε το άρθρο μας για τον φράχτη του Τσέστερτον.)

Και θυμήσου να εκφράζεις τις απόψεις ως απόψεις και τα γεγονότα ως γεγονότα. Αυτό συνήθως οδηγεί στις πιο παραγωγικές συζητήσεις.

Ευχαριστούμε ξανά που βρήκες τον χρόνο να κάνεις μια πρόταση και που διάβασες αυτό το κείμενο!