Aklasis rašymas programuotojams daugiausia susijęs su klavišais, kuriuos įprastas rašymo kursas praleidžia: skaitmenimis, skliaustais, operatoriais ir aplink juos esančiomis Shift kombinacijomis. Programuotojas, kuris tekstą rašo 90 WPM greičiu, kodą gali rašyti lėtai, o 50 WPM teksto rašytojas – greitai. Tai pastebėjome testuodami, kai savo pačių kodo failus įklijavome į režimą „Savas“. Palyginti su režimu „Žodžiai“, greitis nukrito trečdaliu ar daugiau, klavišų šilumos žemėlapis nušvito skaičių eilėje ir ties dešiniuoju mažyliu, o lėčiausi spurtai buvo ties simbolių sekomis su skliaustais.
Kodėl teksto WPM prastai atspindi kodo rašymą
Kodas nuo teksto skiriasi trimis aspektais, ir rašymo testas, sudarytas iš dažnų anglų kalbos žodžių, nematuoja nė vieno iš jų.
Pirmasis – simbolių mišinys. Suskaičiavome. Pirmuose dešimtyje šio tinklaraščio įrašų iš kiekvienų 100 ne tarpo simbolių maždaug 93 yra raidės, 5 – skyrybos ženklai ir 2 – skaitmenys. npm komandinės eilutės įrankio JavaScript kode raidžių sumažėja iki maždaug 80, o simbolių padaugėja iki 19. Python json ir email moduliuose raidžių yra 80–85, o viename tankiame mūsų kūrimo scenarijuje – 64, ir trečdalis jo simbolių yra specialieji simboliai. Taigi kode simbolių yra maždaug nuo trijų iki septynių kartų daugiau nei mūsų tekstuose. Dauguma jų yra viršutinėje eilėje arba reikalauja Shift, o tai reiškia dešinįjį mažylį ir silpnesnius pasiekimus. Mūsų anglų kalbos žodžių testai sudaryti iš 1 000 dažniausių žodžių subtitrų tekstyne; „{“ tarp jų nėra.
Antrasis – ritmas. Tekstas rašomas ilgomis atkarpomis. Kodas rašomas trumpais spurtais tarp pauzių, skirtų mąstyti, slinkti ir skaityti. Dhakalo ir kt. 2018 m. tyrimo, kuriame išanalizuota 136 milijonai klavišų paspaudimų, savanoriai, perrašinėję sakinius, tarp klavišų vidutiniškai užtrukdavo apie 239 ms. Programuotojo diena pilna kelių sekundžių pertraukų, o spurto greitis trumpose atkarpose svarbesnis už bet kokį vidurkį.
Trečiasis – redaktorius. Dėl automatinio užbaigimo, šablonų ir klaviatūros sparčiųjų klavišų dirbantis programuotojas parašo tik dalį ekrane matomų simbolių. To joks rašymo testas išmatuoti negali, ir mūsiškis neapsimeta galintis.
Ar rašymo greitis svarbus programuojant?
Mažiau, nei manoma, ir kitoje vietoje. Kai kas nors klausia, ar 60 WPM pakanka programuotojui, atsakymas yra taip, su išlyga: jei simbolių ir skaičių ieškai žiūrėdamas žemyn, kodo nerašai 60 WPM greičiu. Gebėjimas parašyti eilutę nenutraukiant minties svarbesnis už gryną greitį, o mintį nutraukia būtent žvilgsnis į klaviatūrą.
Kaip greičiau rašyti simbolius ir kodėl to niekas nemoko
Klausimas, kuris rašymo forumuose iškyla vėl ir vėl: žmogus padoriu greičiu aklai rašo raides, bet vos pradėjęs programuoti vėl ieško simbolių, skaičių ir net didžiųjų raidžių akimis, ir nori palaipsniui jų išmokti taip pat, kaip išmoko raides – po kelis klavišus.
Simbolius sunkius iš dalies daro Shift. Mūsų suskaičiuotame npm kode apie 45 % simbolių paspaudimų buvo simboliai su Shift, tokie kaip ( ) { } : ir $ – beveik 9 iš kiekvienų 100 ne tarpo simbolių, dar neskaičiuojant nė vienos didžiosios raidės. Todėl pirmiausia sutvarkyk Shift įprotį: Shift spausk ta ranka, kuri nerašo simbolio. ( ir ) yra ant dešinės rankos 9 ir 0, todėl jiems reikia kairiojo Shift; ! @ # $ yra kairėje rankoje, todėl jiems reikia dešiniojo Shift. Dauguma savamokslių viskam laiko kairįjį Shift, o rašant ! tai reikalauja, kad kairysis mažylis vienu metu spaustų du klavišus. Patikrink savo įprotį: parašyk eilutę su @ ir $ ir stebėk, kuris mažylis juda.
Simbolius sunku treniruoti atskirai ir apskritai nuobodu: raidės ateina su žodžiais, skliaustai – su kodu, o atsitiktinis kodas nėra įdomus. Mūsų atsakymas – treniruoti simbolius tikrose kodo eilutėse, po vieną klasę.
Po vieną klasę
Tokia tvarka mes naudotume, ir tokia tvarka kuriame simbolių treniruočių seką treniruotės puslapiui. Kol ji nepasirodė, tą patį gali daryti įklijuodamas tikrą kodą į režimą „Savas“, po vieną simbolių klasę, ir nepridėdamas kitos klasės, kol dabartinės tikslumas nepasiekia 95 %:
- Skaitmenys. Skaičių eilė, pagrindinės eilės pirštams siekiant į viršų. Ji pirmoji, nes tai dažniausiai naudojama ne raidžių klasė ir nes beveik visi čia turi blogą įprotį, pavyzdžiui, kai smilius spaudžia 4, 5, 6 ir 7. Skaičių testas – greitas patikrinimas.
- Skliaustai poromis. Pirmiausia ( ), tada [ ], tada { }. Poromis, nes vieno beveik niekada nerašai be kito: tame npm kode ( pasitaiko 6 195 kartus, o ) – 6 194. Atidarymo ir uždarymo judesio treniravimas kaip vieno vieneto ir daro jį greitą. Uždarantis skliaustas – vieta, kur daugumos ritmas lūžta.
- Operatoriai. = + - * / ir kampiniai skliaustai, taip pat sudėtinės formos (==, =>, +=, !=). Jie išbarstyti po skaičių eilę ir dešinės rankos skyrybos klavišus, o keliems reikia Shift toje pačioje rankoje – tai ir yra nepatogioji dalis.
- Kabutės ir skyrybos ženklai. ' " ; : , . – daugumą darbo atlieka dešinysis mažylis. Kabliataškiai ir dvitaškiai yra vieta, kur C šeimos ir Python rašytojai skiriasi labiausiai, todėl treniruokis su eilutėmis iš kalbos, kurią naudoji.
- Apvalkalas ir keistieji. Vertikalus brūkšnys, atvirkštinis pasvirasis brūkšnys, tildė, atvirkštinis apostrofas, stogelis, ampersandas, grotelės, doleris, eta ženklas ir _ klavišas. _ ir atvirkštinis apostrofas nustebina daugumą; snake_case kode _ naudojamas nuolat, o dauguma rašytojų jį spaudžia ne tuo pirštu.
Daugumai žmonių kiekviena klasė užtrunka savaitę ar dvi dešimties minučių sesijų, taigi visa seka – du ar trys mėnesiai. Tai lėčiau nei mokytis raidžių, nes simbolių klavišai toliau, o įpročiai, kuriuos keiti, senesni.
Kas nutinka ne taip, sprendžiant iš klavišų statistikos: žmonės išmoksta simbolį teisingu pirštu, o paskui, spaudžiami laiko, grįžta prie seno, nes kelias savaites senas judesys būna greitesnis. Statistikoje tai matyti kaip klavišas, kurio intervalas labai svyruoja: greitas, kai pasieki teisingai, ir lėtas, kai ne. Sprendimas – likti prie tos klasės dar savaitę.
Skliaustų poros ir automatinis uždarymas
Redaktoriai skliaustus uždaro automatiškai, todėl kyla pagrįstas klausimas: kam mokytis rašyti uždarantį?
Dvi priežastys. Automatinis uždarymas nenuoseklus: vienose vietose jis suveikia, kitose ne, pavyzdžiui, terminale ar pokalbių lange. Rašytojas, kuris juo pasikliauja, kaskart dvejoja tikrindamas, ar jis suveikė, o dvejonė kainuoja daugiau nei paspaudimas. Be to, rašymas per automatiškai uždarytą skliaustą (paspaudžiant „)“, kai redaktorius jį jau įterpė) pats yra paspaudimas, taigi uždarantį skliaustą rašai bet kuriuo atveju.
Kai čia įklijuoji kodą į režimą „Savas“, tekstas skaidomas pagal tarpus, todėl įtraukos dingsta ir kiekviena simbolių seka tampa žodžiu. Tai ir apribojimas, ir patogumas: nereikia rašyti keturių tarpų kiekvienos Python eilutės pradžioje, bet jų ir netreniruoji. Tikras kodo režimas, kuris įtraukas ir automatiškai uždaromas poras tvarkytų taip, kaip redaktorius, yra mūsų sąraše, ir tai sunkiau, nei atrodo.
Kodo ir teksto greičiai
Neturime pakankamai kodo režimo rezultatų, kad paskelbtume procentiles, ir verčiau palauksime, nei jas išgalvosime. Mūsų pačių bandymuose kodo greitis su realistišku fragmentu buvo maždaug nuo pusės iki dviejų trečdalių to paties žmogaus teksto greičio, o santykis labiau gerėja treniruojant simbolius nei treniruojantis apskritai.
Skaičius, kuris persikelia, yra tikslumas. Programuotojas, kuris tekstą rašo 97 % tikslumu, o kodą – 90 %, turi simbolių problemą, ir klavišų šilumos žemėlapis tiksliai parodo, kurių simbolių. Programuotojui, kurio tikslumas abiem atvejais 97 %, tiesiog reikia daugiau rašyti kodo. Mūsų vertinimo metodika paaiškina, kaip tikslumas skaičiuoja ištaisytas klaidas.
Kaip standartinis orientyras, skyrybos testas su įjungtais skaičiais yra artimiausias kodui iš mūsų įprastų režimų. Riestinių skliaustų jame nebus, bet jis įtraukia Shift klavišą ir skaičių eilę, o daugumai žmonių spraga yra būtent ten.
Klaviatūros pasirinkimai, kurie padeda
Programuotojams duodami klaviatūros patarimai dažniausiai susiję su jungikliais ir dažniausiai ne į temą.
Išdėstymas svarbesnis už jungiklį. Dvorak perkelia skliaustus į skaičių eilę ir perstato daugumą skyrybos ženklų. Colemak ir Workman skliaustus palieka ten, kur jie yra QWERTY, bet abu perkelia kabliataškį į vietą, kur QWERTY yra P, ir tai pajus C šeimos programuotojai. Išsamią versiją rasi straipsnyje apie išdėstymus.
Simbolių sluoksnis geriau nei didesnė klaviatūra. Daugelis skeltų ir kompaktiškų klaviatūrų leidžia skliaustus ir operatorius padėti po pagrindinės eilės pirštais sluoksnyje, kuris įjungiamas laikant nykščio klavišą. Iš visų programuotojų aprašomų aparatinės įrangos pakeitimų šį išbandytume pirmiausia, nes tada simbolio daugiau niekada neieškosi žiūrėdamas žemyn.
ISO ar ANSI. ISO klaviatūrose (JK ir didžiojoje Europos dalyje) papildomas klavišas šalia kairiojo Shift ir aukštas Enter klavišas pakeičia atvirkštinio pasvirojo brūkšnio ir vertikalaus brūkšnio vietas. Jei treniruojiesi su viena, o dirbi su kita, mažylis nepataikys. Būtent todėl mūsų emuliacija pateikia abu Colemak-DH variantus.
Jungikliai greičiui beveik nesvarbūs. Linijiniai, taktiliniai ir spragsintys jungikliai skiriasi pojūčiu ir garsu, o klavišų paspaudimų žurnalas nežino, kurį paspaudei. Mūsų straipsnyje apie mechanines klaviatūras aptariami skaičiai.
Kai kuriems žmonėms grįžtamąjį ryšį padeda gauti garsas: klaidos garsas praneša, kad simbolis buvo neteisingas, nežiūrint žemyn. Įjunk jį, kol mokaisi simbolių.
Dešimties minučių programuotojo sesija
Ką darytume kasdien tuos du ar tris mėnesius, kuriuos užtrunka simbolių seka:
- Dvi minutės: 30 sekundžių žodžių testas apšilimui, tikslumas 97 %.
- Šešios minutės: dabartinė simbolių klasė, naudojant savą tekstą, įklijuotą iš tavo paties kodo. Sustok pirmą kartą pastebėjęs, kad grįžti prie seno piršto.
- Dvi minutės: vienas kodo fragmentas kalba, kurią naudoji dažniausiai. Paskui žiūrėk į klavišų šilumos žemėlapį, o ne į WPM.
Tomis dienomis, kai neturi dešimties minučių, uždarantį skliaustą rašyk pats. Tai mažiausias įprotis šiame straipsnyje ir dažniausiai pirmasis, kuris atsiperka.
Dažnai užduodami klausimai
Koks rašymo greitis yra geras programuotojui?
Tinka bet kas nuo maždaug 40 WPM, jei simbolius ir skaičius rašai aklai. Toliau kliūtis yra mąstymas, skaitymas ir redaktoriaus įgūdžiai, o ne pirštų greitis.
Kaip išmokti aklai rašyti skaičius?
Treniruok skaičių eilę atskirai, kol tikslumas išsilaikys ties 95 %, kiekvieną skaitmenį spausdamas pirštu, kuris pagrindinėje eilėje yra tiesiai po juo, o tada maišyk skaičius su įprastu tekstu.