Touch-metoden for programmerere handler mest om tastene et vanlig skrivekurs hopper over: sifre, parenteser, operatorer og Shift-kombinasjonene rundt dem. En programmerer som skriver vanlig tekst i 90 WPM, kan være treg til å skrive kode, og en som skriver tekst i 50 WPM, kan være rask. Vi la merke til dette da vi limte inn våre egne kildefiler i egen tekst-modus under testingen. Farten falt med en tredjedel eller mer sammenlignet med ordmodus, varmekartet for taster lyste opp på tallraden og høyre lillefinger, og de tregeste spurtene var på kodeord med parenteser i.
Hvorfor WPM på vanlig tekst er et dårlig mål for kodeskriving
Kode skiller seg fra tekst på tre måter, og en skrivetest bygd av vanlige engelske ord måler ingen av dem.
Den første er tegnblandingen. Vi telte. I de ti første innleggene på denne bloggen er omtrent 93 av hver 100 tegn som ikke er mellomrom, bokstaver, 5 er tegnsetting og 2 er sifre. I JavaScript-kildekoden til kommandolinjeverktøyet til npm faller bokstavene til omtrent 80 og symbolene stiger til 19. Python-modulene json og email ender på 80 til 85 bokstaver, og et tett byggeskript av oss på 64, der en tredjedel av tegnene er symboler. Kode har altså omtrent tre til sju ganger så mange symboler som tekstene våre. De fleste ligger på øverste rad eller krever Shift, og det betyr høyre lillefinger og de svakere strekkene. De engelske ordtestene våre er bygd av de 1 000 vanligste ordene i et korpus av undertekster; «{» er ikke blant dem.
Den andre er rytmen. Tekst skrives i lange sekvenser. Kode skrives i korte spurter mellom pauser for å tenke, rulle og lese. De frivillige i studien til Dhakal m.fl. fra 2018 med 136 millioner tastetrykk, som skrev av setninger, hadde i snitt omtrent 239 ms mellom tastene. En programmerers dag er full av opphold på flere sekunder, og spurtfarten inne i de korte sekvensene betyr mer enn noe snitt.
Den tredje er editoren. Autofullføring, kodesnutter og hurtigtaster gjør at en programmerer i arbeid bare skriver en brøkdel av tegnene på skjermen. Ingen skrivetest kan måle det, og vår later ikke som den gjør det.
Er skrivehastighet viktig for programmering?
Mindre enn folk tror, og på et annet sted. Når noen spør om 60 WPM er nok til å være programmerer, er svaret ja, med et forbehold: hvis du ser ned for å finne symboler og tall, er det ikke 60 WPM du skriver kode i. Å kunne skrive en linje uten å miste tankerekken betyr mer enn rå fart, og det er nettopp blikket ned på tastaturet som bryter den.
Hvordan du skriver symboler raskere, og hvorfor ingen lærer det bort
Et spørsmål som stadig dukker opp på skriveforum: noen kan skrive bokstaver med touch-metoden i grei fart, men så snart de begynner å kode, er de tilbake til å lete etter symboler, tall og til og med store bokstaver, og de vil ha en gradvis måte å lære dem på, slik de lærte bokstavene, noen få taster om gangen.
Noe av det som gjør symboler vanskelige, er Shift. I npm-kildekoden vi telte, var omtrent 45 % av tastetrykkene for symboler skiftede tegn som ( ) { } : og $, nær 9 av hver 100 tegn som ikke er mellomrom, før du har telt en eneste stor bokstav. Rett derfor opp Shift-vanen først: trykk Shift med den hånden som ikke skriver tegnet. ( og ) ligger på høyre hånds 9 og 0, så de tar venstre Shift; ! @ # $ ligger på venstre hånd, så de tar høyre Shift. De fleste selvlærte skrivere holder venstre Shift til alt, og for ! betyr det at venstre lillefinger må trykke to taster samtidig. Sjekk din egen vane ved å skrive en linje med @ og $ i og se hvilken lillefinger som beveger seg.
Symboler er vanskelige å drille hver for seg og kjedelige å drille i det hele tatt: bokstaver kommer med ord, parenteser kommer med kode, og tilfeldig kode er ikke interessant. Vårt svar er å drille symboler på ekte kodelinjer, én klasse om gangen.
Én klasse om gangen
Dette er rekkefølgen vi ville brukt, og rekkefølgen i symbolsporet vi bygger for øvingssiden. Til det er klart, kan du gjøre det samme ved å lime inn ekte kode i egen tekst-modus, én symbolklasse om gangen, og ikke legge til neste klasse før den du holder på med, er på 95 % nøyaktighet:
- Sifre. Tallraden, med fingrene fra grunnraden som strekker seg opp. Dette kommer først fordi det er den mest brukte klassen utenom bokstaver, og fordi nesten alle har en dårlig vane her, som at pekefingeren tar 4, 5, 6 og 7. Talltesten er en rask sjekk.
- Parenteser i par. ( ) først, så [ ], så { }. I par, fordi du nesten aldri skriver den ene uten den andre: i den npm-kildekoden forekommer ( 6 195 ganger og ) 6 194. Det er å trene åpne-lukke-bevegelsen som én enhet som gjør den rask. Den avsluttende parentesen er der rytmen ryker for de fleste.
- Operatorer. = + - * / og vinkelparentesene, pluss de sammensatte formene (==, =>, +=, !=). Disse er spredt over tallraden og tegnsettingstastene for høyre hånd, og flere krever Shift på samme hånd, som er det kronglete.
- Anførselstegn og tegnsetting. ' " ; : , . der høyre lillefinger gjør det meste av jobben. Semikolon og kolon er der skrivere av C-familien og Python skiller seg mest, så øv på linjer fra språket du bruker.
- Skall og de rare. Loddrett strek (pipe), omvendt skråstrek, tilde, backtick, cirkumfleks, og-tegn, firkanttegn, dollar, krøllalfa og _-tasten. _ og backtick overrasker de fleste; snake_case-kode bruker _ hele tiden, og de fleste treffer den med feil finger.
Hver klasse tar for de fleste en uke eller to med økter på ti minutter, så hele sporet tar to til tre måneder. Det er tregere enn å lære bokstavene, fordi symboltastene ligger lenger unna og vanene du erstatter, er eldre.
Hva som går galt, ut fra statistikken per tast: folk lærer symbolet med riktig finger og faller så tilbake under press, fordi den gamle bevegelsen er raskere i noen uker. Statistikken viser det som en tast der intervallet varierer voldsomt, raskt når du strekker deg riktig og tregt når du ikke gjør det. Løsningen er å bli på den klassen én uke til.
Parentespar og automatisk lukking
Editorer lukker parenteser automatisk, og det reiser et rimelig spørsmål: hvorfor lære å skrive den avsluttende?
To grunner. Automatisk lukking er ukonsekvent: den slår inn noen steder og ikke andre, som i en terminal eller et chattevindu. En skriver som stoler på den, nøler hver gang for å sjekke om den slo inn, og nølingen koster mer enn tastetrykket. Og å skrive over en automatisk lukket parentes (å trykke «)» når editoren allerede har satt inn en) er i seg selv et tastetrykk, så du skriver den avsluttende parentesen uansett.
Når du limer inn kode i egen tekst-modus her, deles teksten opp ved mellomrom, så innrykk forsvinner og hvert kodeord blir et ord. Det er en begrensning og en fordel på en gang: du skriver ikke fire mellomrom i starten av hver Python-linje, og du øver ikke på dem heller. En ordentlig kodemodus som håndterer innrykk og automatisk lukkede par slik en editor gjør, står på listen vår, og den er vanskeligere enn den høres ut.
Fart på kode mot fart på tekst
Vi har ikke nok resultater fra kodemodus til å publisere persentiler, og vi venter heller enn å finne på noen. I våre egne runder har farten på en realistisk kodesnutt ligget et sted rundt halvparten til to tredjedeler av den samme personens fart på tekst, og forholdet blir bedre av symboløving enn av generell øving.
Tallet som faktisk kan overføres, er nøyaktighet. En programmerer som skriver tekst med 97 % nøyaktighet og kode med 90 %, har et symbolproblem, og varmekartet for taster viser nøyaktig hvilke symboler. En programmerer på 97 % på begge trenger bare å skrive mer kode. Metoden for poengberegning forklarer hvordan nøyaktighet teller feil du har rettet.
Som standard referanse er tegnsettingstesten med tall slått på den av de vanlige modusene våre som ligger nærmest kode. Den har ikke krøllparenteser, men den tar med Shift-tasten og tallraden, og for de fleste er det der gapet ligger.
Tastaturvalg som hjelper
Tastaturrådene programmerere får, handler mest om brytere, og mest på siden av saken.
Tastaturoppsett betyr mer enn brytere. Dvorak flytter parentesene opp til tallraden og flytter det meste av tegnsettingen. Colemak og Workman holder parentesene der QWERTY har dem, men begge flytter semikolon dit QWERTY har P, noe programmerere i C-familien vil merke. Artikkelen om tastaturoppsett har den lange versjonen.
Et symbollag slår et større tastatur. Mange delte og kompakte tastaturer lar deg legge parenteser og operatorer under grunnradfingrene på et lag du holder inne med en tommeltast. Av alle maskinvareendringene programmerere beskriver, er dette den vi ville prøvd først, fordi det betyr at du aldri mer ser ned etter et symbol.
ISO mot ANSI. På ISO-tastaturer (Storbritannia og det meste av Europa) endrer ekstratasten ved venstre Shift og den høye Enter-tasten hvor omvendt skråstrek og loddrett strek ligger. Hvis du øver på det ene og jobber på det andre, kommer lillefingeren til å bomme. Emuleringen vår leveres med begge variantene av Colemak-DH av den grunnen.
Brytere betyr knapt noe for fart. Lineære, taktile og klikkende brytere skiller seg i følelse og lyd, og tastaturloggen vet ikke hvilken du trykket. Artikkelen om mekaniske tastaturer går gjennom tallene.
Lyd hjelper noen med tilbakemelding: feillyden forteller deg at et symbol ble feil uten at du ser ned. Slå den på mens du lærer symboler.
En økt på ti minutter for programmerere
Dette ville vi gjort hver dag i de to eller tre månedene symbolsporet tar:
- To minutter: en ordtest på 30 sekunder som oppvarming, med 97 % nøyaktighet.
- Seks minutter: den gjeldende symbolklassen, på egen tekst limt inn fra din egen kode. Stopp ved første tegn på at du faller tilbake til den gamle fingeren.
- To minutter: én kodesnutt i språket du bruker mest. Se på varmekartet for taster etterpå, ikke på WPM-en.
De dagene du ikke har ti minutter, skriver du den avsluttende parentesen selv. Det er den minste vanen i denne artikkelen og som regel den første som lønner seg.
Ofte stilte spørsmål
Hva er en god skrivehastighet for programmerere?
Alt fra omtrent 40 WPM og oppover er brukbart hvis du skriver symboler og tall med touch-metoden. Utover det er det tenking, lesing og ferdigheter i editoren som er flaskehalsen, ikke fingerfarten.
Hvordan lærer jeg å skrive tall med touch-metoden?
Øv på tallraden for seg til nøyaktigheten holder seg på 95 %, med fingeren som står rett under hvert siffer på grunnraden, og bland deretter tall inn i vanlig tekst.