Ο φράχτης του Τσέστερτον

Μάθε πώς να εκφράζεις τις ιδέες και τις προτάσεις σου με τον καλύτερο τρόπο


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


Τι σημαίνει, λοιπόν, ο "Φράχτης του Chesterton";

Ο Φράχτης του Chesterton είναι μια ιδέα εμπνευσμένη από ένα απόσπασμα από το βιβλίο του συγγραφέα G.K. Chesterton, The Thing, του 1929. Έγινε ευρέως γνωστή όταν την ανέφερε ο John F. Kennedy. Αυτό είναι το αρχικό απόσπασμα:

Σε μια τέτοια περίπτωση υπάρχει κάποιος θεσμός ή κάποιος νόμος· ας πούμε, για λόγους απλότητας, ένας φράχτης ή μια πύλη στημένη κατά μήκος ενός δρόμου. Ο πιο μοντέρνος τύπος μεταρρυθμιστή πηγαίνει χαρούμενος προς αυτόν και λέει: "Δε βλέπω τη χρησιμότητα αυτού· ας το απομακρύνουμε." Σε αυτό, ο πιο έξυπνος τύπος μεταρρυθμιστή καλά θα κάνει να απαντήσει: "Αν δε βλέπεις τη χρησιμότητά του, εγώ σίγουρα δε θα σε αφήσω να το απομακρύνεις. Πήγαινε και σκέψου. Ύστερα, όταν μπορέσεις να γυρίσεις και να μου πεις ότι βλέπεις τη χρησιμότητά του, μπορεί να σου επιτρέψω να το καταστρέψεις."

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

Ένας απλός κανόνας για να θυμάσαι είναι: "Μη γκρεμίζεις έναν φράχτη αν δεν ξέρεις γιατί στήθηκε εξαρχής."

Πώς σχετίζεται αυτή η ιδέα με το Exercism;

Στο Exercism είμαστε τυχεροί, γιατί συνέχεια μπαίνουν στην κοινότητά μας πάρα πολλοί άνθρωποι και δημοσιεύουν τις σκέψεις και τις ιδέες τους. Πολλές από αυτές τις ιδέες είναι νέες, καινοτόμες, συναρπαστικές και ξεμπλοκάρουν τη σκέψη μας. Αν έχεις κι εσύ μια ιδέα ή μια πρόταση, την καλωσορίζουμε!

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

Το Exercism έχει σχεδιαστεί, κατασκευαστεί και χτιστεί από χιλιάδες πολύ ταλαντούχα άτομα. Είναι ένα προϊόν με πολλή πρόθεση: τα πράγματα βρίσκονται εκεί επειδή έχουν σχεδιαστεί να βρίσκονται εκεί, και συχνά κάποια πράγματα λείπουν επειδή έχει σχεδιαστεί να λείπουν. Σχεδόν τα πάντα στο Exercism έχουν συζητηθεί, αντιπαρατεθεί και επανασχεδιαστεί πολλές φορές.

Έτσι, πριν δημοσιεύσεις την ιδέα σου, αναρωτήσου αν μπορεί να την έχουμε ήδη εξετάσει και γιατί μπορεί να έχουμε κάνει τα πράγματα διαφορετικά από αυτό που προτείνεις. Και θυμήσου: όσο πιο προφανής φαίνεται η ιδέα σου, τόσο πιο πιθανό είναι να έχει συζητηθεί και αντιπαρατεθεί πολλές φορές. Γι' αυτό, όταν την παρουσιάζεις, παρουσίασέ την μαζί με τους πιθανούς ενδοιασμούς και τις παγίδες. Αν έχεις την παρόρμηση να πεις "γιατί να μην απλώς ...", τότε σχεδόν σίγουρα ανήκει σε αυτή την κατηγορία.

Μη φοβάσαι ποτέ να δημοσιεύσεις, αλλά σκέψου τα πράγματα προσεκτικά πρώτα!

Έχεις κάποιο παράδειγμα;

Μια συχνή πηγή απογοήτευσης είναι ότι οι μαθητές υποβάλλουν στους μέντορες κώδικα που δεν περνάει τα τεστ. Μια εξίσου συχνή πρόταση είναι: "Γιατί να μην τρέχουν αυτόματα τα τεστ στη γραμμή εντολών πριν κάποιος υποβάλει τον κώδικά του;" Φαίνεται σπουδαία ιδέα: η γραμμή εντολών μπορεί απλώς να καλέσει μια εντολή που τρέχει τα τεστ και να μην αφήσει τον μαθητή να υποβάλει αν αυτά αποτύχουν.

Λοιπόν, πρώτα απ' όλα, τι σημαίνει "απλώς καλώ μια εντολή που τρέχει τα τεστ"; Σημαίνει να γράψουμε ένα script για καθεμία από τις 52 γλώσσες στο Exercism, που να μπορεί να τρέξει τα τεστ και να ελέγξει το αποτέλεσμα. Είναι λίγη δουλειά, αλλά γίνεται.

Αλλά σημαίνει επίσης να γράψουμε αυτό το script έτσι ώστε να τρέχει σε Windows, MacOSX και Linux, σε όλες τις πιθανές εκδόσεις και διαμορφώσεις. Αυτό είναι πολλή δουλειά (αν όχι ατελείωτη). "Γιατί πρέπει να είναι κάθε διαμόρφωση;" μπορεί να ρωτήσεις. Λοιπόν, επειδή στην πραγματικότητα εμποδίζεις κάποιον να χρησιμοποιήσει το Exercism αν δεν μπορεί να τρέξει αυτό το script. Αυτό σημαίνει επίσης ότι δεν μπορεί ποτέ να αποτύχει. Αν για κάποιο λόγο το script δεν τρέξει, τότε ο μαθητής αποκλείεται εντελώς. Ένα bug σε ένα από αυτά τα 52*3*n scripts σημαίνει ότι ο μαθητής δεν μπορεί πια να χρησιμοποιήσει τη διαδρομή σε αυτό το λειτουργικό σύστημα. Πώς το δοκιμάζεις αυτό; Δε μπορείς.

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

"Αλλά ο κόσμος δεν θα το έκανε αυτό γενικά", μπορεί να αντιτείνεις. Αλήθεια, για κάποιες γλώσσες όπου το τρέξιμο των τεστ παίρνει 0,5 δευτερόλεπτα. Αλλά για γλώσσες όπου το τρέξιμο των τεστ παίρνει 20 δευτερόλεπτα, το να περιμένεις 20 επιπλέον δευτερόλεπτα για να υποβάλεις είναι απίστευτα εκνευριστικό για τους μαθητές, οπότε η παράλειψη των τελικών τεστ θα γινόταν συνηθισμένη.

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

Έτσι, αντί να θέσουμε την πρόταση "γιατί να μην τρέχουν τα τεστ πριν την υποβολή", ας κάνουμε μια ερώτηση: "Γιατί ο κόσμος δημοσιεύει λύσεις που δεν περνούν τα τεστ;" Και τότε τα πράγματα γίνονται ενδιαφέροντα. Η γενική απάντηση είναι ότι έχουν κολλήσει ή είναι μπερδεμένοι. Και χρειάζονται βοήθεια. Που σημαίνει ότι η υποβολή σπασμένων τεστ είναι μια πολύ σημαντική ένδειξη για τους μέντορες ότι αυτός ο μαθητής χρειάζεται βοήθεια. Ναι, είναι εκνευριστικό, επειδή οι μέντορες δεν ξέρουν αμέσως αν ο κώδικας είναι "σωστός" ή όχι. Ωστόσο, μπορούν να κατεβάσουν τον κώδικα και να τον τρέξουν για να τον επαληθεύσουν (κάτι που κάνουν οι περισσότεροι μέντορες σε μη τετριμμένες λύσεις) και τότε ξέρουν με 100% βεβαιότητα αν είναι σωστός ή όχι. Και οι μαθητές που έχουν κολλήσει και χρειάζονται βοήθεια δεν καταλήγουν ακόμα πιο κολλημένοι, να χρειάζονται ακόμα περισσότερη βοήθεια, αλλά φτάνουν σε έναν μέντορα που μπορεί να δει και να προτείνει διορθώσεις πιο γρήγορα.

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

Κάτι άλλο;

Τρία πράγματα:

  1. Αυτό το άρθρο στο Second Order Thinking αξίζει να το διαβάσεις. Το απόσπασμα "Μη γκρεμίζεις έναν φράχτη αν δεν ξέρεις γιατί στήθηκε εξαρχής" προέρχεται από αυτή τη δημοσίευση.
  2. Το The Thing του G.K. Chesterton είναι διαθέσιμο εδώ https://archive.org/details/G.K.ChestertonTheThing.
  3. Η ιδέα σου μπορεί πραγματικά να είναι νέα και σπουδαία. Μη φοβάσαι και μη ντρέπεσαι να την προτείνεις!