Slepo tipkanje za programerje: simboli, številke in hitrost, ki šteje

Pri slepem tipkanju za programerje gre večinoma za tipke, ki jih običajen tečaj tipkanja preskoči: števke, oklepaje, operatorje in kombinacije s Shiftom okoli njih. Programer, ki besedilo tipka s 90 WPM, je lahko pri kodi počasen, nekdo s 50 WPM pri besedilu pa pri njej hiter. To smo opazili, ko smo med testiranjem v način po meri lepili lastne izvorne datoteke. Hitrosti so v primerjavi z načinom z besedami padle za tretjino ali več, toplotni zemljevid po tipkah je zasvetil na vrsti s številkami in pri desnem mezincu, najpočasnejši sunki pa so bili pri žetonih z oklepaji.

Zakaj je WPM pri besedilu slab nadomestek za tipkanje kode

Koda se od besedila razlikuje na tri načine, test tipkanja iz pogostih angleških besed pa ne meri nobenega od njih.

Prvi je mešanica znakov. Prešteli smo. V prvih desetih zapisih na tem blogu je od vsakih 100 znakov, ki niso presledki, približno 93 črk, 5 ločil in 2 števki. V izvorni kodi JavaScript orodja za ukazno vrstico npm črke padejo na približno 80, simboli pa narastejo na 19. Pythonova modula json in email prideta na 80 do 85 črk, naš gost gradbeni skript pa na 64, pri čemer je tretjina njegovih znakov simbolov. Koda ima torej približno tri- do sedemkrat toliko simbolov kot naše besedilo. Večina jih je v zgornji vrsti ali potrebuje Shift, kar pomeni desni mezinec in šibkejše iztege. Naši testi z angleškimi besedami so sestavljeni iz 1.000 najpogostejših besed v korpusu podnapisov; „{“ ni med njimi.

Drugi je ritem. Besedilo se tipka v dolgih nizih. Koda se tipka v kratkih sunkih med premori za razmišljanje, pomikanje in branje. Prostovoljci v študiji Dhakala in sodelavcev iz leta 2018 o 136 milijonih pritiskov tipk, ki so prepisovali stavke, so med tipkama v povprečju potrebovali približno 239 ms. Programerjev dan je poln vrzeli, dolgih več sekund, in hitrost sunka znotraj kratkih nizov je pomembnejša od katerega koli povprečja.

Tretji je urejevalnik. Samodejno dokončanje, izrezki kode in bližnjice na tipkovnici pomenijo, da delujoči programer natipka le del znakov na zaslonu. Tega ne more izmeriti noben test tipkanja in naš se ne pretvarja, da lahko.

Je hitrost tipkanja pomembna za programiranje?

Manj, kot ljudje mislijo, in na drugem mestu. Ko nekdo vpraša, ali je 60 WPM dovolj za programerja, je odgovor da, z zadržkom: če pri simbolih in številkah gledaš navzdol, kode ne tipkaš s 60 WPM. Pomembneje od surove hitrosti je, da lahko vrstico natipkaš, ne da bi prekinil tok misli, in prav pogled navzdol na tipkovnico ga prekine.

Kako hitreje tipkati simbole in zakaj tega nihče ne uči

Vprašanje, ki se na forumih o tipkanju vedno znova pojavlja: nekdo zna črke slepo tipkati s spodobno hitrostjo, a ko začne programirati, spet išče simbole, številke in celo velike črke, in bi se jih rad naučil postopoma, tako kot črk, nekaj tipk naenkrat.

Del tega, kar simbole naredi težke, je Shift. V izvorni kodi npm, ki smo jo prešteli, je bilo približno 45 % pritiskov simbolov znakov s Shiftom, kot so ( ) { } : in $, kar je blizu 9 od vsakih 100 znakov, ki niso presledki, še preden prešteješ eno samo veliko črko. Zato najprej popravi navado s Shiftom: Shift pritisni z roko, ki ne tipka znaka. ( in ) sta na desni roki, na 9 in 0, zato vzameta levi Shift; ! @ # $ so na levi roki, zato vzamejo desni Shift. Večina samoukih tipkarjev za vse drži levi Shift, kar pri ! od levega mezinca zahteva, da hkrati pritisne dve tipki. Svojo navado preveri tako, da natipkaš vrstico z @ in $ ter opazuješ, kateri mezinec se premakne.

Simbole je težko uriti ločeno in dolgočasno uriti sploh: črke pridejo z besedami, oklepaji s kodo, naključna koda pa ni zanimiva. Naš odgovor je, da simbole uriš na resničnih vrsticah kode, en razred naenkrat.

En razred naenkrat

To je vrstni red, ki bi ga uporabili mi, in vrstni red sklopa simbolov, ki ga gradimo za stran za vadbo. Dokler ga ne izdamo, lahko isto narediš tako, da v način po meri lepiš resnično kodo, en razred simbolov naenkrat, in naslednjega razreda ne dodaš, dokler trenutni ni pri 95 % natančnosti:

  • Števke. Vrsta s številkami, do katere prsti z osnovne vrste segajo navzgor. Ta je prva, ker je to najpogosteje uporabljen razred, ki ni črke, in ker ima tu skoraj vsak slabo navado, na primer da kazalec pritiska 4, 5, 6 in 7. Test številk je hiter preizkus.
  • Oklepaji v parih. Najprej ( ), nato [ ], nato { }. V parih, ker skoraj nikoli ne natipkaš enega brez drugega: v tisti izvorni kodi npm se ( pojavi 6.195-krat, ) pa 6.194-krat. Gib odpri–zapri postane hiter, ko ga uriš kot eno enoto. Zaklepaj je mesto, kjer se večini ljudi ritem zlomi.
  • Operatorji. = + - * / in lomljena oklepaja ter sestavljene oblike (==, =>, +=, !=). Razpršeni so po vrsti s številkami in ločilih desne roke, več jih potrebuje Shift na isti roki, in to je nerodni del.
  • Narekovaji in ločila. ' " ; : , ., pri katerih večino dela opravi desni mezinec. Podpičja in dvopičja so mesto, kjer se tipkarji jezikov iz družine C in Pythona najbolj razlikujejo, zato vadi na vrsticah iz jezika, ki ga uporabljaš.
  • Lupina in posebneži. Navpičnica, poševnica nazaj, tilda, krativec, strešica, znak &, lojtra, dolar, afna in tipka _. _ in krativec presenetita večino ljudi; koda v slogu snake_case _ uporablja nenehno, večina tipkarjev pa ga zadene z napačnim prstom.

Vsak razred večini ljudi vzame teden ali dva desetminutnih vaj, zato ves sklop traja dva do tri mesece. To je počasneje kot učenje črk, ker so tipke simbolov dlje in so navade, ki jih zamenjuješ, starejše.

Kaj gre narobe, glede na opazovanje statistike po tipkah: ljudje se simbola naučijo s pravim prstom, nato pa se pod pritiskom vrnejo na staro, ker je stari gib nekaj tednov hitrejši. Statistika to pokaže kot tipko, katere interval divje niha: hiter, ko sežeš pravilno, in počasen, ko ne. Rešitev je, da pri tem razredu ostaneš še en teden.

Pari oklepajev in samodejno zapiranje

Urejevalniki oklepaje zapirajo samodejno, kar odpre upravičeno vprašanje: zakaj bi se učil tipkati zaklepaj?

Iz dveh razlogov. Samodejno zapiranje ni dosledno: ponekod se sproži, drugje ne, na primer v terminalu ali oknu za klepet. Tipkar, ki se zanaša nanj, vsakič zaokleva, da preveri, ali se je sprožilo, in to oklevanje stane več kot pritisk tipke. In tipkanje čez samodejno zaprt oklepaj (pritisk „)“, ko ga je urejevalnik že vstavil) je samo po sebi pritisk tipke, zato zaklepaj tako ali tako natipkaš.

Ko tu kodo prilepiš v način po meri, se besedilo razdeli pri presledkih, zato zamik izgine in vsak žeton postane beseda. To je hkrati omejitev in udobje: na začetku vsake vrstice v Pythonu ne tipkaš štirih presledkov, a jih tudi ne vadiš. Pravi način za kodo, ki zamik in samodejno zaprte pare obravnava tako kot urejevalnik, je na našem seznamu in je težji, kot se sliši.

Hitrost pri kodi in pri besedilu

Za objavo percentilov nimamo dovolj rezultatov iz načina za kodo in raje počakamo, kot da bi si jih izmislili. V naših lastnih poskusih je bila hitrost pri realističnem odlomku kode nekje med polovico in dvema tretjinama hitrosti iste osebe pri besedilu, razmerje pa se bolj izboljša z vadbo simbolov kot s splošno vadbo.

Številka, ki se prenese, je natančnost. Programer, ki besedilo tipka s 97 % natančnostjo, kodo pa z 90 %, ima težavo s simboli, toplotni zemljevid po tipkah pa pokaže točno, s katerimi. Programer, ki je pri obojem pri 97 %, mora samo tipkati več kode. Naša metodologija točkovanja pojasni, kako natančnost šteje popravljene napake.

Kot standardno merilo je test z ločili z vklopljenimi številkami od naših običajnih načinov najbližji kodi. Zavitih oklepajev ne bo imel, prinese pa tipko Shift in vrsto s številkami, in za večino ljudi je vrzel prav tam.

Izbire tipkovnice, ki pomagajo

Nasveti o tipkovnicah, ki jih dobijo programerji, so večinoma o stikalih in večinoma mimo bistva.

Razporeditev je pomembnejša od stikala. Dvorak oklepaje premakne gor v vrsto s številkami in prestavi večino ločil. Colemak in Workman oklepaje pustita tam, kjer jih ima QWERTY, a oba podpičje premakneta tja, kjer ima QWERTY P, kar bodo programerji jezikov iz družine C občutili. Dolgo različico ima članek o razporeditvah.

Plast simbolov je boljša od večje tipkovnice. Mnoge deljene in kompaktne tipkovnice omogočajo, da oklepaje in operatorje postaviš pod prste osnovne vrste na plast, ki jo držiš s tipko pod palcem. Od vseh sprememb strojne opreme, ki jih opisujejo programerji, bi to poskusili prvo, ker pomeni, da za simbolom nikoli več ne pogledaš navzdol.

ISO proti ANSI. Na tipkovnicah ISO (Velika Britanija in večina Evrope) dodatna tipka ob levem Shiftu in visoka tipka Enter spremenita, kje sta poševnica nazaj in navpičnica. Če vadiš na eni in delaš na drugi, bo tvoj mezinec zgrešil. Naša emulacija zato vsebuje obe različici Colemak-DH.

Stikala na hitrost skoraj ne vplivajo. Linearna, taktilna in klikajoča stikala se razlikujejo po občutku in zvoku, dnevnik pritiskov pa ne ve, katero si pritisnil. Naš članek o mehanskih tipkovnicah gre skozi številke.

Zvok nekaterim pomaga s povratno informacijo: zvok napake ti pove, da je bil simbol napačen, ne da bi pogledal navzdol. Med učenjem simbolov ga vklopi.

Desetminutna vaja za programerja

Kaj bi delali vsak dan v dveh ali treh mesecih, kolikor traja sklop simbolov:

  • Dve minuti: 30-sekundni test z besedami za ogrevanje, natančnost pri 97 %.
  • Šest minut: trenutni razred simbolov na besedilu po meri, prilepljenem iz tvoje kode. Ustavi se ob prvem znaku vračanja k staremu prstu.
  • Dve minuti: en odlomek kode v jeziku, ki ga uporabljaš največ. Nato poglej toplotni zemljevid po tipkah, ne WPM.

Na dneve, ko desetih minut nimaš, zaklepaj natipkaj sam. To je najmanjša navada v tem članku in običajno prva, ki se obrestuje.

Pogosta vprašanja

Kakšna je dobra hitrost tipkanja za programerje?

Vse od približno 40 WPM navzgor je uporabno, če simbole in številke tipkaš slepo. Nad tem je ozko grlo razmišljanje, branje in spretnost z urejevalnikom, ne hitrost prstov.

Kako se naučim slepo tipkati številke?

Vrsto s številkami vadi samostojno, dokler natančnost ne ostane pri 95 %, pri čemer uporabljaš prst, ki je na osnovni vrsti neposredno pod vsako števko, nato pa številke pomešaj v običajno besedilo.

Viri