A vakon gépelés programozóknak főleg azokról a billentyűkről szól, amelyeket egy átlagos gépelési tanfolyam kihagy: számjegyekről, zárójelekről, operátorokról és a körülöttük lévő Shift-kombinációkról. Egy programozó, aki prózát 90 WPM-mel gépel, lehet lassú a kódnál, egy 50 WPM-es prózagépelő pedig lehet gyors. Ezt akkor vettük észre, amikor tesztelés közben a saját forrásfájljainkat illesztettük be egyéni módba. A sebességek a szavak módhoz képest legalább egyharmaddal estek, a billentyű-hőtérkép a számsoron és a jobb kisujjnál izzott fel, a leglassabb sprintek pedig a zárójeleket tartalmazó tokeneken voltak.
Miért rossz mérce a prózán mért WPM a kódgépeléshez
A kód három dologban különbözik a szövegtől, és egy gyakori angol szavakból összeállított gépelési teszt egyiket sem méri.
Az első a karakterösszetétel. Megszámoltuk. A blog első tíz bejegyzésében minden 100 nem szóköz karakterből körülbelül 93 betű, 5 írásjel és 2 számjegy. Az npm parancssori eszközének JavaScript-forrásában a betűk aránya körülbelül 80-ra esik, a jeleké 19-re nő. A Python json és email moduljai 80–85 betűt adnak, egy sűrű saját build szkriptünk pedig 64-et, a karaktereinek egyharmada jel. A kódban tehát nagyjából háromszor-hétszer annyi jel van, mint a prózánkban. A legtöbbjük a felső sorban van, vagy Shift kell hozzá, vagyis a jobb kisujjra és a nehezebb kinyúlásokra esik. Az angol szavas tesztjeink egy feliratkorpusz 1000 leggyakoribb szavából állnak; a „{” nincs köztük.
A második a ritmus. A prózát hosszú szakaszokban gépeljük. A kódot rövid sprintekben, a gondolkodásra, görgetésre és olvasásra szánt szünetek között. Dhakal és munkatársai 136 millió leütést elemző 2018-as vizsgálatának önkéntesei, akik mondatokat másoltak, átlagosan körülbelül 239 ms-ot hagytak a billentyűk között. Egy programozó napja tele van több másodperces szünetekkel, és a rövid szakaszokon belüli sprintsebesség minden átlagnál többet számít.
A harmadik a szerkesztő. Az automatikus kiegészítés, a kódrészlet-sablonok és a billentyűparancsok miatt egy dolgozó programozó a képernyőn lévő karaktereknek csak töredékét gépeli be. Ezt egyetlen gépelési teszt sem tudja mérni, és a miénk nem is tesz úgy, mintha mérné.
Fontos a gépelési sebesség a programozáshoz?
Kevésbé, mint gondolnák, és máshol. Ha valaki azt kérdezi, elég-e 60 WPM ahhoz, hogy programozó legyen, a válasz igen, egy kikötéssel: ha a jelekhez és a számokhoz lenézel, nem 60 WPM-mel gépeled a kódot. Fontosabb, hogy egy sort úgy tudj begépelni, hogy közben ne szakadjon meg a gondolatmeneted, mint a nyers sebesség, és éppen a billentyűzetre nézés szakítja meg.
Hogyan gépelj gyorsabban jeleket, és miért nem tanítja senki
Egy kérdés, amely újra meg újra előkerül a gépelős fórumokon: valaki tisztességes sebességgel gépeli vakon a betűket, de amint kódolni kezd, visszaesik a jelek, a számok, sőt a nagybetűk keresgélésébe, és fokozatos módot keres a megtanulásukra, ahogy a betűket is megtanulta, néhány billentyűnként.
A jelek nehézségének egy része a Shift. Az általunk megszámolt npm-forrásban a jelleütések körülbelül 45%-a Shifttel beírt karakter volt, például ( ) { } : és $, ami minden 100 nem szóköz karakterből közel 9, még mielőtt egyetlen nagybetűt is számolnánk. Ezért először a Shift-szokást javítsd: a Shiftet azzal a kezeddel nyomd, amelyik nem a karaktert üti. A ( és a ) a jobb kéz 9-esén és 0-ján van, ezért a bal Shift jár hozzájuk; a ! @ # $ a bal kéznél van, ezért a jobb Shift. A legtöbb autodidakta gépelő mindenhez a bal Shiftet nyomja, és a !-nél ez azt kéri a bal kisujjtól, hogy egyszerre két billentyűt nyomjon. Ellenőrizd a saját szokásodat: gépelj be egy sort, amelyben van @ és $, és figyeld, melyik kisujjad mozdul.
A jeleket nehéz önmagukban gyakorolni, és egyáltalán gyakorolni is unalmas: a betűk szavakkal jönnek, a zárójelek kóddal, a véletlenszerű kód pedig nem érdekes. A mi válaszunk az, hogy a jeleket valódi kódsorokon gyakoroljuk, egyszerre egy osztályt.
Egyszerre egy osztály
Ezt a sorrendet használnánk, és ez a sorrendje annak a jelgyakorló sorozatnak is, amelyet a gyakorlás oldalra építünk. Amíg el nem készül, ugyanezt megteheted, ha valódi kódot illesztesz be egyéni módba, egyszerre egy jelosztályt, és a következő osztályt csak akkor veszed hozzá, ha az aktuális már 95%-os pontosságon van:
- Számjegyek. A számsor, az alapsor ujjaival felfelé nyúlva. Ez az első, mert ez a leggyakrabban használt nem betű osztály, és mert itt szinte mindenkinek van rossz szokása, például hogy a mutatóujj üti a 4-est, az 5-öst, a 6-ost és a 7-est. A számteszt gyors ellenőrzés.
- Zárójelek párban. Először a ( ), aztán a [ ], végül a { }. Párban, mert szinte sosem gépeled be az egyiket a másik nélkül: abban az npm-forrásban a ( 6195-ször, a ) 6194-szer szerepel. A nyitó-záró mozdulat egy egységként való begyakorlása teszi gyorssá. A legtöbb embernél a záró zárójelnél törik meg a ritmus.
- Operátorok. = + - * / és a kacsacsőrök, plusz az összetett formák (==, =>, +=, !=). Ezek szét vannak szórva a számsoron és a jobb kéz írásjel-billentyűin, és közülük több ugyanazon a kézen kér Shiftet, ez a kényelmetlen rész.
- Idézőjelek és írásjelek. ' " ; : , . – a munka nagy részét a jobb kisujj végzi. A pontosvesszőknél és a kettőspontoknál különböznek leginkább a C-családú nyelvek és a Python gépelői, ezért az általad használt nyelv soraival gyakorolj.
- Shell és a különcök. Függőleges vonal, visszaperjel, tilde, visszafelé idézőjel (backtick), kalap, et-jel, kettőskereszt, dollár, kukac és az _ billentyű. Az _ és a backtick a legtöbb embert meglepi; a snake_case kód folyamatosan használja az _-t, és a legtöbb gépelő rossz ujjal üti.
Minden osztály a legtöbb embernek egy-két hétnyi tízperces gyakorlást igényel, így a teljes sorozat két-három hónap. Ez lassabb, mint a betűk megtanulása, mert a jelbillentyűk messzebb vannak, és a lecserélendő szokások régebbiek.
Ami félremegy a billentyűnkénti statisztikák alapján: az emberek megtanulják a jelet a helyes ujjal, aztán nyomás alatt visszaesnek, mert a régi mozdulat még néhány hétig gyorsabb. A statisztikában ez olyan billentyűként látszik, amelynek az ideje vadul ingadozik: gyors, amikor helyesen nyúlsz érte, és lassú, amikor nem. A megoldás az, hogy még egy hétig maradsz ennél az osztálynál.
Zárójelpárok és automatikus bezárás
A szerkesztők automatikusan bezárják a zárójeleket, ami jogos kérdést vet fel: miért tanuld meg begépelni a záró zárójelet?
Két okból. Az automatikus bezárás nem következetes: van, ahol működik, és van, ahol nem, például egy terminálban vagy egy csevegőablakban. Aki ráhagyatkozik, minden alkalommal megtorpan, hogy megnézze, működött-e, és a megtorpanás többe kerül, mint a leütés. Ráadásul egy automatikusan bezárt zárójel átgépelése (a „)” lenyomása, amikor a szerkesztő már beszúrt egyet) maga is leütés, vagyis a záró zárójelet így is, úgy is begépeled.
Ha itt kódot illesztesz be egyéni módba, a szöveget a szóközöknél daraboljuk fel, így a behúzás eltűnik, és minden token egy szó lesz. Ez egyszerre korlát és kényelem: nem kell négy szóközt gépelned minden Python-sor elején, de nem is gyakorlod őket. Egy valódi kódmód, amely a behúzást és az automatikusan bezárt párokat úgy kezeli, mint egy szerkesztő, szerepel a terveink között, és nehezebb, mint amilyennek hangzik.
Kód- és prózasebesség
Nincs elég kódmódos eredményünk ahhoz, hogy percentiliseket közöljünk, és inkább várunk, mint hogy kitaláljuk őket. A saját méréseinkben egy valószerű kódrészleten a kódsebesség ugyanannak az embernek a prózasebességének nagyjából a fele és kétharmada között volt, és az arány a jelgyakorlással jobban javul, mint az általános gyakorlással.
A szám, amely átvihető, a pontosság. Egy programozó, aki prózát 97%-os, kódot 90%-os pontossággal gépel, a jelekkel küzd, és a billentyű-hőtérkép pontosan megmutatja, melyikkel. Akinek mindkettőnél 97% a pontossága, annak egyszerűen csak több kódot kell gépelnie. A pontozási módszertanunk elmagyarázza, hogyan számítanak a kijavított hibák a pontosságba.
Szabványos viszonyítási pontként a bekapcsolt számokkal futtatott írásjeles teszt áll a legközelebb a kódhoz a szokásos módjaink közül. Kapcsos zárójelek nem lesznek benne, de bevonja a Shift billentyűt és a számsort, és a legtöbb embernél éppen ezek a hiányosságok.
Billentyűzetválasztás, ami segít
A programozók által kapott billentyűzet-tanácsok főleg a kapcsolókról szólnak, és többnyire mellékesek.
A kiosztás többet számít, mint a kapcsoló. A Dvorak a zárójeleket felviszi a számsorba, és a legtöbb írásjelet áthelyezi. A Colemak és a Workman ott hagyja a zárójeleket, ahol a QWERTY-n vannak, de mindkettő oda teszi a pontosvesszőt, ahol a QWERTY-n a P van, és ezt a C-családú nyelvekben programozók megérzik. A kiosztásokról szóló cikk a hosszú változat.
Egy jelréteg többet ér egy nagyobb billentyűzetnél. Sok osztott és kompakt billentyűzet lehetővé teszi, hogy a zárójeleket és az operátorokat az alapsor ujjai alá tedd egy rétegen, amelyet egy hüvelykujjas billentyű tart. A programozók által leírt összes hardveres változtatás közül ezt próbálnánk ki először, mert így soha többé nem kell lenézned egy jelért.
ISO vagy ANSI. ISO billentyűzeteken (brit és a legtöbb európai) a bal Shift melletti plusz billentyű és a magas Enter megváltoztatja, hol van a visszaperjel és a függőleges vonal. Ha az egyiken gyakorolsz, a másikon dolgozol, a kisujjad mellé fog ütni. Ezért az emulációnk a Colemak-DH mindkét változatát tartalmazza.
A kapcsolók alig számítanak a sebesség szempontjából. A lineáris, taktilis és kattogó kapcsolók érzetben és hangban különböznek, a leütésnapló pedig nem tudja, melyiket nyomtad. A mechanikus billentyűzetekről szóló cikkünk végigveszi a számokat.
A hang egyeseknek segít a visszajelzésben: a hibahang odanézés nélkül jelzi, hogy egy jel rossz volt. Kapcsold be, amíg a jeleket tanulod.
Tízperces gyakorlás programozóknak
Ezt csinálnánk naponta a jelgyakorló sorozat két-három hónapja alatt:
- Két perc: egy 30 másodperces szavas teszt bemelegítésként, 97%-os pontossággal.
- Hat perc: az aktuális jelosztály, a saját kódodból beillesztett egyéni szövegen. Állj meg, amint az első jelét látod, hogy visszatérsz a régi ujjhoz.
- Két perc: egy kódrészlet abban a nyelvben, amelyet a legtöbbet használsz. Utána a billentyű-hőtérképet nézd, ne a WPM-et.
Azokon a napokon, amikor nincs tíz perced, gépeld be magad a záró zárójelet. Ez a legkisebb szokás ebben a cikkben, és általában ez hozza meg elsőként a hasznát.
Gyakran ismételt kérdések
Milyen gépelési sebesség jó egy programozónak?
Nagyjából 40 WPM-től fölfelé bármi használható, ha a jeleket és a számokat vakon gépeled. Ezen túl a szűk keresztmetszet a gondolkodás, az olvasás és a szerkesztő ismerete, nem az ujjak sebessége.
Hogyan tanuljam meg vakon gépelni a számokat?
Gyakorold a számsort önmagában, amíg a pontosság 95%-on nem marad, minden számjegyhez azt az ujjat használva, amely az alapsoron közvetlenül alatta van, aztán keverd a számokat normál szövegbe.