Τυφλό σύστημα για προγραμματιστές: σύμβολα, αριθμοί και η ταχύτητα που μετράει

Το τυφλό σύστημα πληκτρολόγησης για προγραμματιστές αφορά κυρίως τα πλήκτρα που παραλείπει ένα κανονικό μάθημα πληκτρολόγησης: ψηφία, αγκύλες, τελεστές και τους συνδυασμούς με Shift γύρω τους. Ένας προγραμματιστής που γράφει κείμενο στα 90 WPM μπορεί να είναι αργός στον κώδικα, και κάποιος που γράφει κείμενο στα 50 WPM μπορεί να είναι γρήγορος σε αυτόν. Το προσέξαμε αυτό όταν επικολλούσαμε τα δικά μας αρχεία πηγαίου κώδικα στην προσαρμοσμένη λειτουργία κατά τις δοκιμές. Οι ταχύτητες έπεφταν κατά ένα τρίτο ή και περισσότερο σε σύγκριση με τη λειτουργία λέξεων, ο θερμικός χάρτης πλήκτρων φωτιζόταν στη σειρά αριθμών και στο δεξί μικρό δάχτυλο, και οι πιο αργές ριπές ήταν σε λεκτικές μονάδες με αγκύλες.

Γιατί τα WPM σε κείμενο είναι κακό μέτρο για την πληκτρολόγηση κώδικα

Ο κώδικας διαφέρει από το κείμενο με τρεις τρόπους, και ένα τεστ πληκτρολόγησης φτιαγμένο από συνηθισμένες αγγλικές λέξεις δεν μετρά κανέναν από αυτούς.

Ο πρώτος είναι το μείγμα χαρακτήρων. Μετρήσαμε. Στα δέκα πρώτα άρθρα αυτού του ιστολογίου, περίπου 93 στους 100 χαρακτήρες εκτός κενών είναι γράμματα, 5 είναι σημεία στίξης και 2 είναι ψηφία. Στον πηγαίο κώδικα JavaScript του εργαλείου γραμμής εντολών του npm, τα γράμματα πέφτουν σε περίπου 80 και τα σύμβολα ανεβαίνουν στα 19. Τα modules json και email της Python βγαίνουν στα 80 έως 85 γράμματα, και ένα πυκνό δικό μας script δόμησης στα 64, με το ένα τρίτο των χαρακτήρων του να είναι σύμβολα. Οπότε ο κώδικας έχει περίπου τρεις έως επτά φορές περισσότερα σύμβολα από τα κείμενά μας. Τα περισσότερα βρίσκονται στην πάνω σειρά ή χρειάζονται Shift, που σημαίνει το δεξί μικρό δάχτυλο και τα πιο αδύναμα τεντώματα. Τα τεστ μας με αγγλικές λέξεις είναι φτιαγμένα από τις 1.000 πιο συνηθισμένες λέξεις ενός σώματος υποτίτλων· το «{» δεν είναι ανάμεσά τους.

Ο δεύτερος είναι ο ρυθμός. Το κείμενο πληκτρολογείται σε μεγάλες συνεχείς σειρές. Ο κώδικας πληκτρολογείται σε σύντομες ριπές ανάμεσα σε παύσεις για σκέψη, κύλιση και ανάγνωση. Οι εθελοντές στη μελέτη του 2018 των Dhakal et al. με 136 εκατομμύρια πατήματα πλήκτρων, που αντέγραφαν προτάσεις, είχαν κατά μέσο όρο περίπου 239 ms ανάμεσα στα πλήκτρα. Η μέρα ενός προγραμματιστή είναι γεμάτη κενά που διαρκούν αρκετά δευτερόλεπτα, και η ταχύτητα ριπής μέσα στις σύντομες σειρές μετράει περισσότερο από οποιονδήποτε μέσο όρο.

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

Είναι σημαντική η ταχύτητα πληκτρολόγησης για τον προγραμματισμό;

Λιγότερο απ' όσο νομίζουν οι περισσότεροι, και σε άλλο σημείο. Όταν κάποιος ρωτά αν τα 60 WPM φτάνουν για να γίνει προγραμματιστής, η απάντηση είναι ναι, με μια επιφύλαξη: αν κοιτάς κάτω για σύμβολα και αριθμούς, δεν γράφεις κώδικα στα 60 WPM. Το να μπορείς να γράψεις μια γραμμή χωρίς να χάσεις τον ειρμό σου μετράει περισσότερο από την ωμή ταχύτητα, και αυτό που τον χαλάει είναι το βλέμμα στο πληκτρολόγιο.

Πώς να γράφεις σύμβολα πιο γρήγορα, και γιατί κανείς δεν το διδάσκει

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

Μέρος του τι κάνει τα σύμβολα δύσκολα είναι το Shift. Στον πηγαίο κώδικα του npm που μετρήσαμε, περίπου το 45% των πατημάτων συμβόλων ήταν χαρακτήρες με Shift όπως ( ) { } : και $, κοντά στους 9 σε κάθε 100 χαρακτήρες εκτός κενών, πριν μετρήσεις έστω και ένα κεφαλαίο. Οπότε διόρθωσε πρώτα τη συνήθεια με το Shift: πάτα το Shift με το χέρι που δεν πληκτρολογεί τον χαρακτήρα. Οι ( και ) βρίσκονται στα 9 και 0 του δεξιού χεριού, οπότε παίρνουν αριστερό Shift· τα ! @ # $ βρίσκονται στο αριστερό χέρι, οπότε παίρνουν δεξί Shift. Οι περισσότεροι αυτοδίδακτοι κρατούν το αριστερό Shift για τα πάντα, και για το ! αυτό ζητά από το αριστερό μικρό δάχτυλο να πατήσει δύο πλήκτρα ταυτόχρονα. Έλεγξε τη δική σου συνήθεια γράφοντας μια γραμμή με @ και $ και παρατηρώντας ποιο μικρό δάχτυλο κινείται.

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

Μία κατηγορία τη φορά

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

  • Ψηφία. Η σειρά αριθμών, με τα δάχτυλα της βασικής σειράς να τεντώνονται προς τα πάνω. Αυτή έρχεται πρώτη γιατί είναι η πιο χρησιμοποιούμενη κατηγορία εκτός γραμμάτων και γιατί σχεδόν όλοι έχουν εδώ μια κακή συνήθεια, όπως ο δείκτης να πατά τα 4, 5, 6 και 7. Το τεστ αριθμών είναι ένας γρήγορος έλεγχος.
  • Αγκύλες ως ζεύγη. Πρώτα ( ), μετά [ ], μετά { }. Ζεύγη, γιατί σχεδόν ποτέ δεν πληκτρολογείς τη μία χωρίς την άλλη: σε εκείνον τον κώδικα του npm, η ( εμφανίζεται 6.195 φορές και η ) 6.194. Η εξάσκηση της κίνησης άνοιγμα-κλείσιμο ως μιας ενιαίας μονάδας είναι αυτό που την κάνει γρήγορη. Η αγκύλη κλεισίματος είναι το σημείο όπου σπάει ο ρυθμός των περισσότερων.
  • Τελεστές. = + - * / και τα σύμβολα μικρότερο/μεγαλύτερο, συν τις σύνθετες μορφές (==, =>, +=, !=). Αυτοί είναι σκορπισμένοι στη σειρά αριθμών και στα πλήκτρα στίξης του δεξιού χεριού, και αρκετοί χρειάζονται Shift στο ίδιο χέρι, που είναι το άβολο κομμάτι.
  • Εισαγωγικά και στίξη. ' " ; : , . με το δεξί μικρό δάχτυλο να κάνει το μεγαλύτερο μέρος της δουλειάς. Το ερωτηματικό και η άνω και κάτω τελεία είναι εκεί όπου διαφέρουν περισσότερο όσοι γράφουν γλώσσες της οικογένειας C και όσοι γράφουν Python, οπότε εξασκήσου σε γραμμές από τη γλώσσα που χρησιμοποιείς.
  • Shell και τα παράξενα. Pipe, backslash, tilde, backtick, caret, ampersand, δίεση, δολάριο, παπάκι και το πλήκτρο _. Το _ και το backtick εκπλήσσουν τους περισσότερους· ο κώδικας σε snake_case χρησιμοποιεί συνέχεια το _, και οι περισσότεροι το πατούν με λάθος δάχτυλο.

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

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

Ζεύγη αγκυλών και αυτόματο κλείσιμο

Οι επεξεργαστές κλείνουν αυτόματα τις αγκύλες, κάτι που γεννά ένα εύλογο ερώτημα: γιατί να μάθεις να πληκτρολογείς την αγκύλη κλεισίματος;

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

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

Ταχύτητες σε κώδικα και σε κείμενο

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

Ο αριθμός που μεταφέρεται είναι η ακρίβεια. Ένας προγραμματιστής που γράφει κείμενο με ακρίβεια 97% και κώδικα με 90% έχει πρόβλημα με τα σύμβολα, και ο θερμικός χάρτης πλήκτρων δείχνει ακριβώς ποια σύμβολα. Ένας προγραμματιστής με 97% και στα δύο απλώς χρειάζεται να γράψει περισσότερο κώδικα. Η μεθοδολογία βαθμολόγησής μας εξηγεί πώς η ακρίβεια μετρά τα λάθη που διορθώθηκαν.

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

Επιλογές πληκτρολογίου που βοηθούν

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

Η διάταξη μετράει περισσότερο από τον διακόπτη. Το Dvorak ανεβάζει τις αγκύλες στη σειρά αριθμών και μετακινεί τα περισσότερα σημεία στίξης. Το Colemak και το Workman κρατούν τις αγκύλες εκεί όπου τις έχει το QWERTY, αλλά και τα δύο μετακινούν το ερωτηματικό εκεί όπου το QWERTY έχει το P, κάτι που θα νιώσουν οι προγραμματιστές της οικογένειας C. Το άρθρο για τις διατάξεις έχει την αναλυτική εκδοχή.

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

ISO έναντι ANSI. Στα πληκτρολόγια ISO (Ηνωμένο Βασίλειο και το μεγαλύτερο μέρος της Ευρώπης), το επιπλέον πλήκτρο δίπλα στο αριστερό Shift και το ψηλό Enter αλλάζουν τη θέση του backslash και του pipe. Αν εξασκείσαι στο ένα και δουλεύεις στο άλλο, το μικρό σου δάχτυλο θα αστοχεί. Γι' αυτόν τον λόγο η προσομοίωσή μας περιλαμβάνει και τις δύο παραλλαγές του Colemak-DH.

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

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

Μια δεκάλεπτη συνεδρία για προγραμματιστές

Τι θα κάναμε καθημερινά για τους δύο ή τρεις μήνες που παίρνει η διαδρομή των συμβόλων:

  • Δύο λεπτά: ένα τεστ λέξεων 30 δευτερολέπτων για ζέσταμα, με ακρίβεια 97%.
  • Έξι λεπτά: η τρέχουσα κατηγορία συμβόλων, σε προσαρμοσμένο κείμενο επικολλημένο από τον δικό σου κώδικα. Σταμάτα με το πρώτο σημάδι επιστροφής στο παλιό δάχτυλο.
  • Δύο λεπτά: ένα απόσπασμα κώδικα στη γλώσσα που χρησιμοποιείς περισσότερο. Κοίτα μετά τον θερμικό χάρτη πλήκτρων, όχι τα WPM.

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

Συχνές ερωτήσεις

Ποια είναι μια καλή ταχύτητα πληκτρολόγησης για προγραμματιστές;

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

Πώς μαθαίνω να γράφω αριθμούς με τυφλό σύστημα;

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

Πηγές