Сляпо писане за програмисти: символи, цифри и скоростта, която има значение

Сляпото писане за програмисти е главно за клавишите, които обикновеният курс по писане пропуска: цифри, скоби, оператори и комбинациите с Shift около тях. Програмист, който пише обикновен текст с 90 WPM, може да е бавен при кода, а някой с 50 WPM при текст може да е бърз. Забелязахме това, докато поставяхме собствените си изходни файлове в режим „Свой текст“ по време на тестването. Скоростите паднаха с една трета или повече в сравнение с режим „Думи“, топлинната карта на клавишите светна на реда с цифрите и при десния малък пръст, а най-бавните изблици бяха на лексеми със скоби.

Защо WPM при обикновен текст е лош заместител за писането на код

Кодът се различава от текста по три начина и тест за писане, съставен от често срещани английски думи, не измерва нито един от тях.

Първият е съставът на знаците. Преброихме ги. В първите десет статии в този блог около 93 от всеки 100 знака, които не са интервали, са букви, 5 са пунктуация и 2 са цифри. В изходния код на JavaScript на инструмента за команден ред на npm буквите падат до около 80, а символите се покачват до 19. Модулите json и email на Python дават от 80 до 85 букви, а един наш плътен скрипт за компилация – 64, като една трета от знаците му са символи. Така че кодът има приблизително три до седем пъти повече символи от нашия текст. Повечето от тях са на горния ред или изискват Shift, което означава десния малък пръст и по-слабите посягания. Нашите тестове с английски думи са съставени от 1000-те най-често срещани думи в корпус от субтитри; „{“ не е сред тях.

Вторият е ритъмът. Обикновеният текст се пише на дълги отсечки. Кодът се пише на кратки изблици между паузи за мислене, превъртане и четене. Доброволците в изследването на Дхакал и колеги от 2018 г. със 136 милиона натискания на клавиши, които преписват изречения, имат средно около 239 ms между клавишите. Денят на програмиста е пълен с паузи от по няколко секунди и скоростта на изблика в кратките отсечки има по-голямо значение от всяка средна стойност.

Третият е редакторът. Автоматичното довършване, шаблоните и клавишните комбинации означават, че работещият програмист пише само част от знаците на екрана. Никой тест за писане не може да измери това и нашият не се преструва, че го прави.

Важна ли е скоростта на писане за програмирането?

По-малко, отколкото хората мислят, и на друго място. Когато някой пита дали 60 WPM са достатъчни, за да е програмист, отговорът е да, с една уговорка: ако гледаш надолу за символите и цифрите, 60 WPM не е скоростта, с която пишеш код. Да можеш да напишеш ред, без да прекъснеш мисълта си, е по-важно от бруто скоростта, а гледането надолу към клавиатурата е това, което я прекъсва.

Как да пишеш символите по-бързо и защо никой не го преподава

Въпрос, който се появява отново и отново във форумите за писане: някой може да пише буквите сляпо с прилична скорост, но в момента, в който започне да програмира, отново търси с поглед символите, цифрите и дори главните букви, и иска постепенен начин да ги научи, както е научил буквите – по няколко клавиша наведнъж.

Част от това, което прави символите трудни, е Shift. В изходния код на npm, който преброихме, около 45% от натисканията за символи са знаци с Shift като ( ) { } : и $ – близо 9 от всеки 100 знака, които не са интервали, преди да броиш дори една главна буква. Затова първо оправи навика с Shift: натискай Shift с ръката, която не пише знака. ( и ) са на 9 и 0 на дясната ръка, така че вземат левия Shift; ! @ # $ са на лявата ръка, така че вземат десния Shift. Повечето самоуки държат левия Shift за всичко, а за ! това кара левия малък пръст да натиска два клавиша едновременно. Провери навика си, като напишеш ред с @ и $ и гледаш кой малък пръст се движи.

Символите са трудни за упражняване поотделно и изобщо скучни за упражняване: буквите идват с думите, скобите идват с кода, а случаен код не е интересен. Нашият отговор е символите да се упражняват върху истински редове код, по един клас наведнъж.

По един клас наведнъж

Това е редът, който бихме използвали, и редът на поредицата за символи, която изграждаме за страницата за тренировка. Докато тя излезе, можеш да правиш същото, като поставяш истински код в режим „Свой текст“, по един клас символи наведнъж, и не добавяш следващия клас, докато текущият не е на 95% точност:

  • Цифри. Редът с цифрите, като пръстите от основния ред посягат нагоре. Това е първо, защото е най-използваният клас, който не е букви, и защото почти всеки има лош навик тук, например показалецът да натиска 4, 5, 6 и 7. Тестът с цифри е бърза проверка.
  • Скоби по двойки. Първо ( ), после [ ], после { }. По двойки, защото почти никога не пишеш едната без другата: в този изходен код на npm ( се среща 6195 пъти, а ) – 6194. Ако тренираш движението отваряне-затваряне като едно цяло, то става бързо. Затварящата скоба е мястото, където ритъмът на повечето хора се чупи.
  • Оператори. = + - * / и ъгловите скоби, плюс съставните форми (==, =>, +=, !=). Те са пръснати по реда с цифрите и пунктуационните клавиши на дясната ръка, а няколко изискват Shift на същата ръка, което е неудобната част.
  • Кавички и пунктуация. ' " ; : , . като десният малък пръст върши повечето работа. Точката и запетаята и двоеточието са мястото, където пишещите на езици от семейството на C и на Python се различават най-много, така че тренирай върху редове от езика, който използваш.
  • Обвивката и странните. Вертикална черта, обратна наклонена черта, тилда, обратен апостроф, карета, амперсанд, диез, долар, кльомба и клавишът _. _ и обратният апостроф изненадват повечето хора; кодът в snake_case използва _ постоянно, а повечето пишещи го натискат с грешния пръст.

Всеки клас отнема на повечето хора седмица-две с десетминутни сесии, така че цялата поредица е два до три месеца. Това е по-бавно от ученето на буквите, защото клавишите със символи са по-далеч, а навиците, които заменяш, са по-стари.

Какво се обърква, ако се съди по статистиката по клавиши: хората научават символа с правилния пръст и после се връщат към стария под напрежение, защото старото движение е по-бързо няколко седмици. Статистиката го показва като клавиш, чийто интервал варира силно – бърз, когато посягаш правилно, и бавен, когато не. Решението е да останеш на този клас още една седмица.

Двойки скоби и автоматично затваряне

Редакторите затварят скобите автоматично, което повдига резонен въпрос: защо да се учиш да пишеш затварящата?

По две причини. Автоматичното затваряне е непоследователно: задейства се на някои места, а на други не, например в терминал или в прозорец за чат. Пишещ, който разчита на него, се колебае всеки път, за да провери дали се е задействало, а колебанието струва повече от натискането. А писането върху автоматично затворена скоба (натискането на „)“, когато редакторът вече е вмъкнал такава) само по себе си е натискане, така че пишеш затварящата скоба и в двата случая.

Когато поставиш код в режим „Свой текст“ тук, текстът се разделя по празните места, така че отстъпът изчезва и всяка лексема става дума. Това е едновременно ограничение и удобство: не пишеш четири интервала в началото на всеки ред на Python, но и не ги тренираш. Истински режим за код, който обработва отстъпа и автоматично затворените двойки така, както го прави редакторът, е в списъка ни и е по-труден, отколкото звучи.

Скорост при код и при текст

Нямаме достатъчно резултати в режим за код, за да публикуваме перцентили, и предпочитаме да изчакаме, отколкото да ги измисляме. В нашите собствени опити скоростта при код върху реалистичен откъс е била някъде между половината и две трети от скоростта на същия човек при текст, а съотношението се подобрява повече с тренировка на символите, отколкото с обща тренировка.

Числото, което наистина се пренася, е точността. Програмист, който пише текст с 97% точност, а код с 90%, има проблем със символите и топлинната карта на клавишите показва точно кои символи. Програмист с 97% и при двете просто трябва да пише повече код. Нашата методика за оценяване обяснява как точността брои поправените грешки.

Като стандартен ориентир тестът с пунктуация с включени цифри е най-близкият до кода от обикновените ни режими. В него няма къдрави скоби, но включва клавиша Shift и реда с цифрите, а за повечето хора точно там е разликата.

Избор на клавиатура, който помага

Съветите за клавиатури, които получават програмистите, са главно за суичовете и главно не по същество.

Подредбата има по-голямо значение от суича. Dvorak премества скобите горе на реда с цифрите и пренарежда повечето пунктуация. Colemak и Workman оставят скобите там, където са на QWERTY, но и двете преместват точката и запетаята на мястото на P от QWERTY, което програмистите на езици от семейството на C ще усетят. Статията за подредбите има дългата версия.

Слой със символи е по-добър от по-голяма клавиатура. Много разделени и компактни клавиатури позволяват да сложиш скобите и операторите под пръстите от основния ред на слой, задържан с клавиш за палеца. От всички хардуерни промени, които описват програмистите, тази бихме опитали първо, защото означава никога повече да не гледаш надолу за символ.

ISO или ANSI. На ISO клавиатурите (британски и в по-голямата част от Европа) допълнителният клавиш до левия Shift и високият Enter променят мястото на обратната наклонена черта и вертикалната черта. Ако тренираш на едната, а работиш на другата, малкият ти пръст ще пропуска. Затова нашата емулация предлага и двата варианта на Colemak-DH.

Суичовете почти нямат значение за скоростта. Линейните, тактилните и кликащите суичове се различават по усещане и звук, а записът на натисканията не знае кой си натиснал. Статията ни за механичните клавиатури разглежда числата.

Звукът помага на някои хора с обратната връзка: звукът при грешка ти казва, че символът е бил грешен, без да гледаш надолу. Включи го, докато учиш символите.

Десетминутна сесия за програмисти

Какво бихме правили всеки ден през двата-три месеца, които отнема поредицата за символи:

  • Две минути: 30-секунден тест с думи за загрявка, точност 97%.
  • Шест минути: текущият клас символи, върху свой текст, поставен от собствения ти код. Спри при първия признак на връщане към стария пръст.
  • Две минути: един откъс код на езика, който използваш най-много. След това погледни топлинната карта на клавишите, а не WPM.

В дните, когато нямаш десет минути, пиши затварящата скоба сам. Това е най-малкият навик в тази статия и обикновено първият, който се отплаща.

Често задавани въпроси

Каква скорост на писане е добра за програмисти?

Всичко от около 40 WPM нагоре е работещо, ако пишеш сляпо символите и цифрите. Отвъд това тясното място е мисленето, четенето и уменията с редактора, а не скоростта на пръстите.

Как да се науча да пиша сляпо цифрите?

Тренирай реда с цифрите самостоятелно, докато точността не се задържи на 95%, като използваш пръста, който е точно под всяка цифра на основния ред, после смесвай цифри в обикновен текст.

Източници