La mecanografia per a programadors tracta sobretot de les tecles que un curs normal de mecanografia se salta: xifres, claudàtors, parèntesis, operadors i les combinacions amb Maj que els envolten. Un programador que escriu text corrent a 90 WPM pot ser lent escrivint codi, i algú que escriu text a 50 WPM pot ser-hi ràpid. Ens en vam adonar mentre enganxàvem els nostres propis fitxers de codi font al mode personalitzat durant les proves. Les velocitats queien un terç o més respecte al mode de paraules, el mapa de calor per tecla s'encenia a la fila de números i al dit petit dret, i les ràfegues més lentes eren en elements que contenien parèntesis o claus.
Per què el WPM amb text corrent és un mal indicador per escriure codi
El codi es diferencia del text en tres coses, i un test d'escriptura fet amb paraules angleses comunes no en mesura cap.
La primera és la barreja de caràcters. Ho vam comptar. En els deu primers articles d'aquest blog, uns 93 de cada 100 caràcters que no són espais són lletres, 5 són signes de puntuació i 2 són xifres. En el codi font JavaScript de l'eina de línia d'ordres d'npm, les lletres baixen a unes 80 i els símbols pugen a 19. Els mòduls json i email de Python donen entre 80 i 85 lletres, i un script de compilació nostre molt dens, 64, amb un terç dels caràcters que són símbols. Així que el codi té aproximadament de tres a set vegades més símbols que la nostra prosa. La majoria són a la fila superior o necessiten Maj, és a dir, feina per al dit petit dret i per als desplaçaments més febles. Les nostres proves amb paraules en anglès es fan amb les 1.000 paraules més comunes d'un corpus de subtítols; «{» no hi és.
La segona és el ritme. El text corrent s'escriu en tirades llargues. El codi s'escriu en ràfegues curtes entre pauses per pensar, desplaçar-se i llegir. Els voluntaris de l'estudi de Dhakal i col·laboradors del 2018 sobre 136 milions de pulsacions, que copiaven frases, feien una mitjana d'uns 239 ms entre tecla i tecla. La jornada d'un programador és plena de buits de diversos segons, i la velocitat de ràfega dins de les tirades curtes compta més que qualsevol mitjana.
La tercera és l'editor. L'autocompletat, els fragments predefinits i les dreceres de teclat fan que un programador en actiu escrigui només una fracció dels caràcters que hi ha a la pantalla. Cap test d'escriptura no ho pot mesurar, i el nostre no fa veure que ho faci.
La velocitat d'escriptura és important per programar?
Menys del que es pensa la gent, i en un altre lloc. Quan algú pregunta si 60 WPM n'hi ha prou per ser programador, la resposta és que sí, amb un matís: si mires el teclat per buscar símbols i números, 60 WPM no és la velocitat a la qual escrius codi. Poder escriure una línia sense perdre el fil del pensament compta més que la velocitat bruta, i mirar el teclat és el que el fa perdre.
Com escriure símbols més ràpid, i per què ningú no ho ensenya
Una pregunta que surt una vegada i una altra als fòrums de mecanografia: algú sap escriure les lletres sense mirar a una velocitat decent, però tan bon punt comença a programar torna a buscar símbols, números i fins i tot majúscules, i vol una manera gradual d'aprendre'ls, com va aprendre les lletres, unes quantes tecles cada vegada.
Part del que fa difícils els símbols és la tecla Maj. En el codi font d'npm que vam comptar, aproximadament el 45% de les pulsacions de símbols eren caràcters amb Maj com ( ) { } : i $, prop de 9 de cada 100 caràcters que no són espais abans de comptar cap majúscula. Així que primer corregeix l'hàbit de la Maj: prem-la amb la mà que no escriu el caràcter. ( i ) són al 9 i al 0 de la mà dreta, de manera que van amb la Maj esquerra; ! @ # $ són a la mà esquerra, de manera que van amb la Maj dreta. La majoria d'autodidactes fan servir la Maj esquerra per a tot, i per a ! això obliga el dit petit esquerre a prémer dues tecles alhora. Comprova el teu hàbit escrivint una línia amb @ i $ i mirant quin dit petit es mou.
Els símbols són difícils d'exercitar aïllats i avorrits d'exercitar en general: les lletres vénen amb paraules, els parèntesis vénen amb codi, i el codi aleatori no té cap interès. La nostra resposta és exercitar els símbols amb línies de codi reals, una classe cada vegada.
Una classe cada vegada
Aquest és l'ordre que faríem servir, i l'ordre de la seqüència de símbols que preparem per a la pàgina de pràctica. Mentre no surti, pots fer el mateix enganxant codi real al mode personalitzat, una classe de símbols cada vegada, sense afegir la classe següent fins que l'actual no arribi al 95% de precisió:
- Xifres. La fila de números, amb els dits de la fila guia estirant-se cap amunt. Va primer perquè és la classe no alfabètica més utilitzada i perquè gairebé tothom hi té algun mal hàbit, com ara que l'índex faci el 4, el 5, el 6 i el 7. La prova de números és una comprovació ràpida.
- Parèntesis i claudàtors per parelles. Primer ( ), després [ ] i després { }. Per parelles, perquè gairebé mai no n'escrius un sense l'altre: en aquell codi font d'npm, ( apareix 6.195 vegades i ) 6.194. Entrenar el moviment d'obrir i tancar com una sola unitat és el que el fa ràpid. El de tancament és on es trenca el ritme de la majoria de gent.
- Operadors. = + - * / i els angles, a més de les formes compostes (==, =>, +=, !=). Estan repartits per la fila de números i les tecles de puntuació de la mà dreta, i diversos necessiten la Maj de la mateixa mà, que és la part incòmoda.
- Cometes i puntuació. ' " ; : , . amb el dit petit dret fent la major part de la feina. El punt i coma i els dos punts són on més es diferencien els que escriuen llenguatges de la família C i els que escriuen Python, així que practica amb línies del llenguatge que fas servir.
- Intèrpret d'ordres i els estranys. Barra vertical, barra inversa, titlla, accent greu, accent circumflex, et, coixinet, dòlar, arrova i la tecla _. La _ i l'accent greu sorprenen la majoria de gent; el codi en snake_case fa servir la _ constantment, i la majoria la premen amb el dit equivocat.
Cada classe porta a la majoria de gent una o dues setmanes de sessions de deu minuts, així que la seqüència sencera són dos o tres mesos. És més lent que aprendre les lletres, perquè les tecles de símbols són més lluny i els hàbits que substitueixes són més antics.
El que va malament, segons el que veiem a les estadístiques per tecla: la gent aprèn el símbol amb el dit correcte i després hi torna amb el vell quan va amb pressa, perquè durant unes setmanes el moviment antic és més ràpid. Les estadístiques ho mostren com una tecla amb un interval molt variable, ràpid quan hi arribes bé i lent quan no. La solució és quedar-te una setmana més en aquella classe.
Parelles de parèntesis i tancament automàtic
Els editors tanquen automàticament els parèntesis, cosa que planteja una pregunta raonable: per què aprendre a escriure el de tancament?
Per dos motius. El tancament automàtic és irregular: funciona en uns llocs i no en altres, com ara un terminal o una finestra de xat. Qui en depèn dubta cada vegada per comprovar si ha funcionat, i el dubte costa més que la pulsació. I escriure per sobre d'un parèntesi tancat automàticament (prémer «)» quan l'editor ja n'ha inserit un) també és una pulsació, així que escrius el de tancament igualment.
Quan aquí enganxes codi al mode personalitzat, el text es divideix pels espais en blanc, de manera que el sagnat desapareix i cada element es converteix en una paraula. És una limitació i alhora una comoditat: no escrius quatre espais al principi de cada línia de Python, però tampoc no els practiques. Un mode de codi de debò que gestioni el sagnat i les parelles tancades automàticament com ho fa un editor és a la nostra llista, i és més difícil del que sembla.
Velocitat amb codi i velocitat amb text corrent
No tenim prou resultats amb codi per publicar percentils, i preferim esperar que inventar-los. En les nostres pròpies proves, la velocitat amb un fragment de codi realista ha estat aproximadament entre la meitat i dues terceres parts de la velocitat amb text corrent de la mateixa persona, i la proporció millora més amb pràctica de símbols que amb pràctica general.
El número que sí que es transfereix és la precisió. Un programador que escriu text corrent amb un 97% de precisió i codi amb un 90% té un problema amb els símbols, i el mapa de calor per tecla mostra exactament quins. Un programador amb un 97% en tots dos casos només ha d'escriure més codi. La nostra metodologia de puntuació explica com compta la precisió els errors corregits.
Com a referència estàndard, la prova amb puntuació amb els números activats és, dels nostres modes habituals, el més proper al codi. No hi haurà claus, però hi entren la tecla Maj i la fila de números, i per a la majoria de gent la diferència és aquí.
Opcions de teclat que ajuden
Els consells de teclat que reben els programadors tracten sobretot dels interruptors, i gairebé sempre no venen al cas.
La distribució compta més que l'interruptor. Dvorak puja els claudàtors a la fila de números i canvia de lloc la majoria de signes de puntuació. Colemak i Workman deixen els claudàtors on els té QWERTY, però totes dues mouen el punt i coma on QWERTY té la P, cosa que els programadors de la família C notaran. L'article sobre distribucions en té la versió llarga.
Una capa de símbols és millor que un teclat més gran. Molts teclats partits i compactes et permeten posar parèntesis i operadors sota els dits de la fila guia en una capa que s'activa mantenint premuda una tecla de polze. De tots els canvis de maquinari que expliquen els programadors, aquest és el que provaríem primer, perquè vol dir que no tornaràs a mirar mai més el teclat per trobar un símbol.
ISO o ANSI. En els teclats ISO (Regne Unit i la major part d'Europa), la tecla addicional al costat de la Maj esquerra i el Retorn alt canvien el lloc de la barra inversa i la barra vertical. Si practiques amb un i treballes amb l'altre, el dit petit fallarà. Per aquest motiu la nostra emulació inclou totes dues variants de Colemak-DH.
Els interruptors gairebé no compten per a la velocitat. Els interruptors lineals, tàctils i amb clic es diferencien en el tacte i el so, i el registre de pulsacions no sap quin has premut. El nostre article sobre teclats mecànics repassa els números.
El so ajuda algunes persones com a retroacció: el so d'error t'avisa que un símbol era incorrecte sense haver de mirar. Activa'l mentre aprens els símbols.
Una sessió de deu minuts per a programadors
El que faríem cada dia durant els dos o tres mesos que dura la seqüència de símbols:
- Dos minuts: una prova de paraules de 30 segons per escalfar, amb un 97% de precisió.
- Sis minuts: la classe de símbols actual, amb text personalitzat enganxat del teu propi codi. Atura't al primer senyal que tornes al dit antic.
- Dos minuts: un fragment de codi del llenguatge que més fas servir. Després mira el mapa de calor per tecla, no el WPM.
Els dies que no tinguis deu minuts, escriu tu mateix el parèntesi de tancament. És l'hàbit més petit d'aquest article i normalment el primer que dona fruit.
Preguntes freqüents
Quina és una bona velocitat d'escriptura per a un programador?
Qualsevol cosa a partir d'uns 40 WPM és viable si escrius els símbols i els números sense mirar. Per sobre d'això, el coll d'ampolla és pensar, llegir i dominar l'editor, no la velocitat dels dits.
Com aprenc a escriure els números sense mirar?
Practica la fila de números tota sola fins que la precisió es mantingui al 95%, fent servir el dit que hi ha just a sota de cada xifra a la fila guia, i després barreja números amb text normal.