Kymmensormijärjestelmä ohjelmoijille: symbolit, numerot ja nopeus, jolla on väliä

Kymmensormijärjestelmä ohjelmoijille koskee pääosin niitä näppäimiä, jotka tavallinen kirjoituskurssi ohittaa: numeroita, sulkeita, operaattoreita ja niiden ympärillä olevia Shift-yhdistelmiä. Ohjelmoija, joka kirjoittaa proosaa 90 WPM, voi olla hidas koodissa, ja 50 WPM:n proosakirjoittaja voi olla siinä nopea. Huomasimme tämän, kun liitimme testauksen aikana omia lähdekooditiedostojamme Oma-tilaan. Nopeudet putosivat kolmanneksen tai enemmän verrattuna Sanat-tilaan, näppäinkohtainen lämpökartta syttyi numerorivillä ja oikean pikkusormen kohdalla, ja hitaimmat kirit osuivat sulkeita sisältäviin sanasteisiin (tokeneihin).

Miksi proosan WPM kuvaa huonosti koodin kirjoittamista

Koodi eroaa tekstistä kolmella tavalla, eikä yleisistä englannin sanoista koottu kirjoitusnopeustesti mittaa niistä yhtäkään.

Ensimmäinen on merkkien jakauma. Laskimme sen. Tämän blogin kymmenessä ensimmäisessä kirjoituksessa noin 93 jokaisesta 100 muusta kuin välilyöntimerkistä on kirjaimia, 5 välimerkkejä ja 2 numeroita. npm:n komentorivityökalun JavaScript-lähdekoodissa kirjainten osuus laskee noin 80:een ja symbolien nousee 19:ään. Pythonin json- ja email-moduuleissa kirjaimia on 80–85, ja eräässä tiiviissä koontiskriptissämme 64, ja kolmannes sen merkeistä on symboleja. Koodissa on siis noin kolmesta seitsemään kertaa niin paljon symboleja kuin proosassamme. Useimmat niistä ovat ylärivillä tai vaativat Shiftin, mikä tarkoittaa oikeaa pikkusormea ja heikompia kurotuksia. Englanninkieliset sanatestimme on koottu tekstitysaineiston 1 000 yleisimmästä sanasta; "{" ei ole niiden joukossa.

Toinen on rytmi. Proosaa kirjoitetaan pitkinä jaksoina. Koodia kirjoitetaan lyhyinä kireinä ajattelu-, vieritys- ja lukutaukojen välissä. Dhakalin ym. vuoden 2018 tutkimuksessa 136 miljoonasta näppäilystä vapaaehtoiset, jotka kopioivat lauseita, pitivät näppäinten välillä keskimäärin noin 239 ms. Ohjelmoijan päivä on täynnä useiden sekuntien taukoja, ja kirinopeus lyhyiden jaksojen sisällä merkitsee enemmän kuin mikään keskiarvo.

Kolmas on editori. Automaattinen täydennys, koodipohjat ja pikanäppäimet tarkoittavat, että työssä oleva ohjelmoija kirjoittaa vain murto-osan näytöllä näkyvistä merkeistä. Mikään kirjoitustesti ei pysty mittaamaan sitä, eikä meidän testimme esitä pystyvänsä.

Onko kirjoitusnopeus tärkeä ohjelmoinnissa?

Vähemmän kuin luullaan, ja eri kohdassa. Kun joku kysyy, riittääkö 60 WPM ohjelmoijalle, vastaus on kyllä, yhdellä varauksella: jos katsot alas symbolien ja numeroiden kohdalla, et kirjoita koodia 60 WPM:n nopeudella. Se, että pystyt kirjoittamaan rivin katkaisematta ajatuksenjuoksuasi, on tärkeämpää kuin raaka nopeus, ja näppäimistöön katsominen on juuri se, mikä sen katkaisee.

Miten kirjoitat symboleja nopeammin, ja miksi kukaan ei opeta sitä

Kirjoittamisfoorumeilla toistuu sama kysymys: joku osaa kirjoittaa kirjaimet kymmensormijärjestelmällä kohtuullista vauhtia, mutta heti kun hän alkaa koodata, hän etsii taas symboleja, numeroita ja jopa isoja kirjaimia, ja hän haluaa asteittaisen tavan opetella ne samalla tavalla kuin kirjaimet, muutama näppäin kerrallaan.

Osa symbolien vaikeudesta johtuu Shiftistä. Laskemassamme npm-lähdekoodissa noin 45 % symbolinäppäilyistä oli Shiftillä tehtyjä merkkejä, kuten ( ) { } : ja $, eli lähes 9 jokaisesta 100 muusta kuin välilyöntimerkistä ennen kuin yhtäkään isoa kirjainta on laskettu. Korjaa siis ensin Shift-tapasi: paina Shiftiä sillä kädellä, joka ei kirjoita merkkiä. Yhdysvaltalaisessa asettelussa ( ja ) ovat oikean käden 9:n ja 0:n kohdalla, joten niihin käytetään vasenta Shiftiä; ! @ # $ ovat vasemmalla kädellä, joten niihin käytetään oikeaa Shiftiä. Useimmat itse opetelleet pitävät vasenta Shiftiä pohjassa kaikessa, ja !-merkin kohdalla se vaatii vasenta pikkusormea painamaan kahta näppäintä yhtä aikaa. Tarkista oma tapasi kirjoittamalla rivi, jossa on @ ja $, ja katso, kumpi pikkusormi liikkuu.

Symboleja on vaikea harjoitella erillään ja tylsää harjoitella ylipäätään: kirjaimet tulevat sanojen mukana, sulkeet koodin mukana, eikä satunnainen koodi ole kiinnostavaa. Meidän vastauksemme on harjoitella symboleja oikeilla koodiriveillä, ryhmä kerrallaan.

Ryhmä kerrallaan

Tätä järjestystä käyttäisimme, ja tässä järjestyksessä etenee myös symboliharjoitusten polku, jota rakennamme harjoitussivulle. Ennen kuin se julkaistaan, voit tehdä saman liittämällä oikeaa koodia Oma-tilaan symboliryhmä kerrallaan ja lisäämällä seuraavan ryhmän vasta, kun nykyisen tarkkuus on 95 %:

  • Numerot. Numerorivi, jolle perusrivin sormet kurottavat ylös. Tämä tulee ensin, koska se on käytetyin muu kuin kirjainryhmä ja koska lähes kaikilla on tässä huono tapa, esimerkiksi etusormi hoitaa 4:n, 5:n, 6:n ja 7:n. Numerotesti on nopea tarkistus.
  • Sulkeet pareina. Ensin ( ), sitten [ ], sitten { }. Pareina, koska tuskin koskaan kirjoitat toista ilman toista: tuossa npm-lähdekoodissa ( esiintyy 6 195 kertaa ja ) 6 194 kertaa. Avaavan ja sulkevan liikkeen harjoittaminen yhtenä kokonaisuutena tekee siitä nopean. Sulkeva sulje on kohta, jossa useimpien rytmi katkeaa.
  • Operaattorit. = + - * / ja kulmasulkeet sekä yhdistelmämuodot (==, =>, +=, !=). Nämä ovat hajallaan numerorivillä ja oikean käden välimerkkinäppäimissä, ja useat vaativat Shiftin samalla kädellä, mikä on se hankala osa.
  • Lainausmerkit ja välimerkit. ' " ; : , . ja oikea pikkusormi tekee suurimman osan työstä. Puolipisteissä ja kaksoispisteissä C-perheen ja Pythonin kirjoittajat eroavat eniten, joten harjoittele käyttämäsi kielen riveillä.
  • Komentotulkki ja erikoiset. Pystyviiva, kenoviiva, tilde, gravis (backtick), sirkumfleksi, et-merkki, risuaita, dollari, ät-merkki ja _-näppäin. _ ja gravis yllättävät useimmat; snake_case-koodi käyttää _-merkkiä jatkuvasti, ja useimmat kirjoittajat painavat sitä väärällä sormella.

Kukin ryhmä vie useimmilta viikon tai kaksi kymmenen minuutin harjoituskertoja, joten koko polku kestää kahdesta kolmeen kuukautta. Se on hitaampaa kuin kirjainten oppiminen, koska symbolinäppäimet ovat kauempana ja korvattavat tavat ovat vanhempia.

Mikä menee pieleen näppäinkohtaisten tilastojen perusteella: ihmiset oppivat symbolin oikealla sormella ja palaavat sitten paineen alla vanhaan, koska vanha liike on muutaman viikon ajan nopeampi. Tilastoissa se näkyy näppäimenä, jonka väliaika vaihtelee rajusti: nopea, kun kurotat oikein, ja hidas, kun et. Korjaus on pysyä samassa ryhmässä vielä viikon.

Sulkeparit ja automaattinen sulkeminen

Editorit sulkevat sulkeet automaattisesti, mikä herättää aiheellisen kysymyksen: miksi opetella kirjoittamaan sulkeva sulje?

Kahdesta syystä. Automaattinen sulkeminen on epäjohdonmukaista: se toimii joissakin paikoissa ja toisissa ei, esimerkiksi päätteessä tai chat-ikkunassa. Siihen tukeutuva kirjoittaja epäröi joka kerta tarkistaakseen, toimiko se, ja epäröinti maksaa enemmän kuin näppäily. Lisäksi automaattisesti suljetun sulkeen yli kirjoittaminen (")"-merkin painaminen, kun editori on jo lisännyt sen) on sekin näppäily, joten kirjoitat sulkevan sulkeen joka tapauksessa.

Kun liität koodia täällä Oma-tilaan, teksti jaetaan tyhjien merkkien kohdalta, joten sisennykset katoavat ja jokaisesta sanasteesta tulee sana. Se on yhtä aikaa rajoitus ja mukavuus: et kirjoita neljää välilyöntiä jokaisen Python-rivin alkuun, mutta et myöskään harjoittele niitä. Oikea kooditila, joka käsittelee sisennykset ja automaattisesti suljetut parit samoin kuin editori, on listallamme, ja se on vaikeampi kuin miltä kuulostaa.

Koodin ja proosan nopeudet

Meillä ei ole tarpeeksi kooditilan tuloksia persentiilien julkaisemiseen, ja odotamme mieluummin kuin keksimme niitä. Omissa ajoissamme koodin nopeus realistisella koodinpätkällä on ollut jossain puolen ja kahden kolmasosan välillä saman ihmisen proosanopeudesta, ja suhde paranee enemmän symbolien harjoittelulla kuin yleisellä harjoittelulla.

Luku, joka siirtyy, on tarkkuus. Ohjelmoijalla, joka kirjoittaa proosaa 97 %:n ja koodia 90 %:n tarkkuudella, on symboliongelma, ja näppäinkohtainen lämpökartta näyttää tarkalleen, mitkä symbolit. Ohjelmoijan, jolla molemmat ovat 97 %, tarvitsee vain kirjoittaa enemmän koodia. Pisteytyksen menetelmät selittävät, miten tarkkuus laskee korjatut virheet.

Vakiovertailuna tavallisista tiloistamme lähimpänä koodia on välimerkkitesti numerot päällä. Siinä ei ole aaltosulkeita, mutta se tuo mukaan Shift-näppäimen ja numerorivin, ja useimmilla ero on juuri niissä.

Näppäimistövalinnat, jotka auttavat

Ohjelmoijien saamat näppäimistöneuvot koskevat enimmäkseen kytkimiä ja ovat enimmäkseen asian vierestä.

Asettelulla on enemmän väliä kuin kytkimellä. Dvorak siirtää sulkeet ylös numeroriville ja siirtää useimmat välimerkit muualle. Colemak ja Workman pitävät sulkeet siellä, missä ne ovat QWERTYssä, mutta kumpikin siirtää puolipisteen QWERTYn P:n paikalle, minkä C-perheen ohjelmoijat huomaavat. Asetteluja käsittelevässä kirjoituksessa on pitkä versio.

Symbolikerros voittaa isomman näppäimistön. Monissa jaetuissa ja kompakteissa näppäimistöissä sulkeet ja operaattorit voi sijoittaa perusrivin sormien alle kerrokselle, jota pidetään peukalonäppäimellä. Kaikista ohjelmoijien kuvaamista laitteistomuutoksista tätä kokeilisimme ensimmäisenä, koska silloin et enää koskaan katso alas symbolin takia.

ISO vai ANSI. ISO-näppäimistöissä (Iso-Britannia ja suurin osa Eurooppaa) vasemman Shiftin vieressä oleva ylimääräinen näppäin ja korkea Enter-näppäin muuttavat kenoviivan ja pystyviivan paikkaa. Jos harjoittelet toisella ja työskentelet toisella, pikkusormesi osuu ohi. Emulointimme sisältää siksi Colemak-DH:sta molemmat versiot.

Kytkimillä ei ole juuri merkitystä nopeudelle. Lineaariset, tuntopalautteiset ja napsuvat kytkimet eroavat tuntumaltaan ja ääneltään, eikä näppäilyloki tiedä, mitä painoit. Mekaanisia näppäimistöjä käsittelevä kirjoituksemme käy luvut läpi.

Ääni auttaa joitakin palautteen kanssa: virheääni kertoo, että symboli meni väärin, ilman että katsot alas. Kytke se päälle symboleja opetellessasi.

Ohjelmoijan kymmenen minuutin harjoitus

Näin toimisimme päivittäin ne kaksi tai kolme kuukautta, jotka symbolipolku vie:

  • Kaksi minuuttia: 30 sekunnin sanatesti lämmittelynä, tarkkuus 97 %.
  • Kuusi minuuttia: nykyinen symboliryhmä omasta koodistasi liitetyllä tekstillä. Lopeta heti, kun huomaat ensimmäisen merkin paluusta vanhaan sormeen.
  • Kaksi minuuttia: yksi koodinpätkä eniten käyttämälläsi kielellä. Katso sen jälkeen näppäinkohtaista lämpökarttaa, älä WPM:ää.

Päivinä, joina sinulla ei ole kymmentä minuuttia, kirjoita sulkeva sulje itse. Se on tämän kirjoituksen pienin tapa ja yleensä ensimmäinen, joka maksaa itsensä takaisin.

Usein kysytyt kysymykset

Mikä on hyvä kirjoitusnopeus ohjelmoijalle?

Mikä tahansa noin 40 WPM:stä ylöspäin on toimiva, jos kirjoitat symbolit ja numerot katsomatta. Sen jälkeen pullonkaula on ajattelu, lukeminen ja editorin hallinta, ei sormien nopeus.

Miten opettelen kirjoittamaan numerot kymmensormijärjestelmällä?

Harjoittele numeroriviä erikseen, kunnes tarkkuus pysyy 95 %:ssa, käyttäen kunkin numeron alla perusrivillä olevaa sormea, ja sekoita sitten numeroita tavalliseen tekstiin.

Lähteet