Programcılar için on parmak klavye: semboller, rakamlar ve önemli olan hız

Programcılar için on parmak klavye, büyük ölçüde sıradan bir klavye kursunun atladığı tuşlarla ilgilidir: rakamlar, parantezler, operatörler ve bunların çevresindeki Shift kombinasyonları. Düz metni 90 WPM ile yazan bir programcı kodda yavaş olabilir, düz metinde 50 WPM yazan biri de kodda hızlı olabilir. Bunu test sırasında kendi kaynak dosyalarımızı özel moda yapıştırırken fark ettik. Hızlar kelime moduna göre üçte bir ya da daha fazla düştü, tuş başına ısı haritası rakam sırasında ve sağ serçe parmakta yandı, en yavaş patlamalar da içinde parantez olan parçalardaydı.

Düz metindeki WPM neden kod yazımı için zayıf bir gösterge

Kod metinden üç açıdan ayrılır ve yaygın İngilizce kelimelerden oluşan bir yazma testi bunların hiçbirini ölçmez.

Birincisi karakter karışımı. Saydık. Bu blogdaki ilk on yazıda boşluk dışındaki her 100 karakterin yaklaşık 93'ü harf, 5'i noktalama, 2'si rakam. npm'in komut satırı aracının JavaScript kaynağında harfler yaklaşık 80'e iner, semboller 19'a çıkar. Python'un json ve email modülleri 80 ile 85 arasında harf çıkarıyor, bizim yoğun bir derleme betiğimiz ise 64; karakterlerinin üçte biri sembol. Yani kodda düz metnimize göre kabaca üç ila yedi kat fazla sembol var. Bunların çoğu üst sırada durur ya da Shift ister; yani sağ serçe parmak ve daha zayıf uzanışlar. İngilizce kelime testlerimiz, bir altyazı derlemindeki en yaygın 1.000 kelimeden oluşur; "{" bunların arasında yok.

İkincisi ritim. Düz metin uzun akışlarla yazılır. Kod ise düşünmek, kaydırmak ve okumak için verilen aralar arasında kısa patlamalarla yazılır. Dhakal ve arkadaşlarının 136 milyon tuş vuruşunu inceleyen 2018 araştırmasında cümle kopyalayan gönüllüler tuşlar arasında ortalama yaklaşık 239 ms geçirdi. Bir programcının günü birkaç saniye süren boşluklarla dolu ve kısa akışların içindeki patlama hızı herhangi bir ortalamadan daha önemli.

Üçüncüsü editör. Otomatik tamamlama, kod parçacıkları ve klavye kısayolları sayesinde çalışan bir programcı ekrandaki karakterlerin yalnızca bir kısmını kendisi yazar. Hiçbir yazma testi bunu ölçemez, bizimki de ölçüyormuş gibi yapmıyor.

Yazma hızı programlama için önemli mi?

İnsanların sandığından daha az ve farklı bir yerde. Biri programcı olmak için 60 WPM'nin yeterli olup olmadığını sorduğunda cevap evet, ama bir şartla: semboller ve rakamlar için klavyeye bakıyorsan kodu 60 WPM ile yazmıyorsun demektir. Bir satırı düşünce akışını bozmadan yazabilmek ham hızdan daha önemli ve o akışı bozan şey, klavyeye bakmaktır.

Semboller nasıl daha hızlı yazılır ve bunu neden kimse öğretmez

Yazma forumlarında tekrar tekrar sorulan bir soru var: biri harfleri on parmakla fena olmayan bir hızda yazabiliyor, ama kod yazmaya başladığı anda semboller, rakamlar, hatta büyük harfler için yeniden tuş aramaya dönüyor ve bunları da harfleri öğrendiği gibi, birkaç tuş birden, adım adım öğrenmenin bir yolunu istiyor.

Sembolleri zorlaştıran şeylerin bir kısmı Shift. Saydığımız npm kaynağında sembol vuruşlarının yaklaşık %45'i ( ) { } : ve $ gibi Shift'li karakterlerdi; bu, daha tek bir büyük harfi saymadan, boşluk dışındaki her 100 karakterde 9'a yakın demek. Bu yüzden önce Shift alışkanlığını düzelt: Shift'e karakteri yazmayan elle bas. ( ve ) sağ elin 9 ve 0 tuşlarında durur, dolayısıyla sol Shift alır; ! @ # $ sol eldedir, dolayısıyla sağ Shift alır. Kendi kendine öğrenenlerin çoğu her şey için sol Shift'i tutar ve ! için bu, sol serçe parmaktan aynı anda iki tuşa basmasını istemek demektir. Kendi alışkanlığını kontrol etmek için içinde @ ve $ olan bir satır yaz ve hangi serçe parmağın hareket ettiğine bak.

Sembolleri tek başına çalışmak zor, zaten çalışması da sıkıcı: harfler kelimelerle gelir, parantezler kodla gelir ve rastgele kod ilgi çekici değildir. Bizim cevabımız, sembolleri gerçek kod satırları üzerinde, her seferinde bir sınıf olarak çalışmak.

Her seferinde bir sınıf

Bizim izleyeceğimiz sıra bu; alıştırma sayfası için hazırladığımız sembol programının sırası da bu. O yayına girene kadar aynısını, gerçek kodu özel moda yapıştırarak, her seferinde bir sembol sınıfıyla ve mevcut sınıf %95 doğruluğa ulaşmadan bir sonrakini eklemeden yapabilirsin:

  • Rakamlar. Temel sıradaki parmakların yukarı uzandığı rakam sırası. İlk sırada bu var, çünkü harf dışı en çok kullanılan sınıf ve neredeyse herkesin burada 4, 5, 6 ve 7'ye işaret parmağıyla basmak gibi kötü bir alışkanlığı var. Rakam testi hızlı bir kontrol.
  • Çiftler hâlinde parantezler. Önce ( ), sonra [ ], sonra { }. Çiftler hâlinde, çünkü neredeyse hiçbir zaman birini ötekisiz yazmazsın: o npm kaynağında ( 6.195 kez, ) 6.194 kez geçiyor. Açma-kapama hareketini tek bir birim olarak çalışmak onu hızlandıran şey. Çoğu insanın ritmi kapanan parantezde bozulur.
  • Operatörler. = + - * / ve açılı parantezler, ayrıca bileşik biçimler (==, =>, +=, !=). Bunlar rakam sırasına ve sağ eldeki noktalama tuşlarına dağılmış durumda ve birkaçı aynı elde Shift istiyor; zor kısım da bu.
  • Tırnaklar ve noktalama. ' " ; : , . ve işin çoğunu sağ serçe parmak yapıyor. Noktalı virgül ve iki nokta, C ailesiyle Python yazanların en çok ayrıştığı yer; bu yüzden kullandığın dilden satırlarla çalış.
  • Kabuk ve tuhaf olanlar. Dikey çizgi, ters eğik çizgi, tilde, ters tırnak, şapka, ve işareti, diyez, dolar, et işareti ve _ tuşu. _ ve ters tırnak çoğu insanı şaşırtır; snake_case kod _'yi sürekli kullanır ve çoğu kişi ona yanlış parmakla basar.

Her sınıf çoğu insan için on dakikalık seanslarla bir ila iki hafta sürer, dolayısıyla programın tamamı iki üç ay. Bu harfleri öğrenmekten daha yavaş, çünkü sembol tuşları daha uzakta ve değiştirdiğin alışkanlıklar daha eski.

Tuş başına istatistikleri izleyerek gördüğümüz ters giden şey şu: insanlar sembolü doğru parmakla öğreniyor, sonra baskı altında eskiye dönüyor, çünkü eski hareket birkaç hafta boyunca daha hızlı. İstatistiklerde bu, aralığı çılgınca değişen bir tuş olarak görünür: doğru uzandığında hızlı, uzanmadığında yavaş. Çaresi o sınıfta bir hafta daha kalmak.

Parantez çiftleri ve otomatik kapatma

Editörler parantezleri otomatik kapatır; bu da haklı bir soru doğurur: kapanan parantezi yazmayı neden öğrenesin?

İki sebep var. Otomatik kapatma tutarsızdır: bazı yerlerde çalışır, terminal ya da sohbet penceresi gibi başka yerlerde çalışmaz. Ona güvenen biri her seferinde çalışıp çalışmadığını kontrol etmek için duraksar ve bu duraksama tuş vuruşundan daha pahalıya gelir. Ayrıca otomatik kapatılmış bir parantezin üzerine yazmak (editör zaten bir tane eklemişken ")" tuşuna basmak) da bir tuş vuruşudur; yani kapanan parantezi her durumda yazıyorsun.

Burada özel moda kod yapıştırdığında metin boşluklardan bölünür; girinti kaybolur ve her parça bir kelimeye dönüşür. Bu hem bir sınırlama hem de bir kolaylık: her Python satırının başında dört boşluk yazmıyorsun ama onları çalışmış da olmuyorsun. Girintiyi ve otomatik kapatılan çiftleri bir editörün yaptığı gibi ele alan düzgün bir kod modu listemizde ve göründüğünden daha zor.

Kod ve düz metin hızları

Yüzdelik dilimleri yayımlayacak kadar kod modu sonucumuz yok ve bunları uydurmaktansa beklemeyi tercih ediyoruz. Kendi denemelerimizde gerçekçi bir kod parçasındaki hız, aynı kişinin düz metin hızının kabaca yarısı ile üçte ikisi arasında çıktı ve bu oran genel alıştırmadan çok sembol alıştırmasıyla iyileşiyor.

Gerçekten aktarılabilen sayı doğruluk. Düz metni %97, kodu %90 doğrulukla yazan bir programcının sembol sorunu vardır ve tuş başına ısı haritası hangi semboller olduğunu tam olarak gösterir. İkisinde de %97 olan bir programcının ise sadece daha çok kod yazması gerekir. Puanlama yöntemimiz, doğruluğun düzeltilmiş hataları nasıl saydığını açıklıyor.

Standart bir ölçüt istersen, normal modlarımız arasında koda en yakın olanı rakamlar açıkken noktalama testi. Süslü parantez içermez ama Shift tuşunu ve rakam sırasını işin içine katar; çoğu insan için eksik olan da bunlardır.

İşe yarayan klavye tercihleri

Programcıların aldığı klavye tavsiyeleri çoğunlukla anahtar (switch) üzerine ve çoğunlukla konunun dışında.

Düzen, anahtardan daha önemli. Dvorak parantezleri rakam sırasına taşır ve noktalamanın çoğunun yerini değiştirir. Colemak ve Workman parantezleri QWERTY'deki yerinde tutar, ama ikisi de noktalı virgülü QWERTY'de P'nin olduğu yere taşır; C ailesi programcıları bunu hisseder. Uzun hâli klavye düzenleri yazısında.

Sembol katmanı, daha büyük bir klavyeden iyidir. Birçok bölünmüş ve kompakt klavye, parantezleri ve operatörleri bir başparmak tuşuyla tutulan bir katmanda temel sıradaki parmakların altına koymana izin verir. Programcıların anlattığı bütün donanım değişiklikleri arasında ilk deneyeceğimiz bu olurdu, çünkü bir daha bir sembol için aşağı bakmaman demek.

ISO ve ANSI. ISO klavyelerde (Birleşik Krallık ve Avrupa'nın çoğu) sol Shift'in yanındaki fazladan tuş ve uzun Enter tuşu, ters eğik çizgi ile dikey çizginin yerini değiştirir. Birinde çalışıp ötekinde iş yaparsan serçe parmağın ıskalar. Emülasyonumuzun Colemak-DH'nin iki varyantını da sunmasının sebebi bu.

Anahtarlar hız için neredeyse hiç fark etmez. Lineer, taktil ve tıklamalı anahtarlar his ve ses bakımından farklıdır, tuş vuruşu kaydı ise hangisine bastığını bilmez. Mekanik klavyeler yazımız sayıları tek tek ele alıyor.

Ses bazı insanlara geri bildirim olarak yardımcı olur: hata sesi, aşağı bakmadan bir sembolün yanlış olduğunu söyler. Sembolleri öğrenirken aç.

Bir programcı için on dakikalık seans

Sembol programının sürdüğü iki üç ay boyunca her gün yapacağımız şey:

  • İki dakika: ısınma olarak 30 saniyelik bir kelime testi, doğruluk %97.
  • Altı dakika: mevcut sembol sınıfı, kendi kodundan yapıştırılmış özel metin üzerinde. Eski parmağa dönmenin ilk işaretinde dur.
  • İki dakika: en çok kullandığın dilde bir kod parçası. Sonrasında WPM'ye değil, tuş başına ısı haritasına bak.

On dakikan olmayan günlerde kapanan parantezi kendin yaz. Bu yazıdaki en küçük alışkanlık bu ve genellikle karşılığını ilk veren de o.

Sık sorulan sorular

Programcılar için iyi bir yazma hızı nedir?

Sembolleri ve rakamları on parmakla yazıyorsan yaklaşık 40 WPM'den itibaren her hız iş görür. Bunun ötesinde darboğaz parmak hızı değil; düşünmek, okumak ve editör becerisidir.

Rakamları on parmakla yazmayı nasıl öğrenirim?

Rakam sırasını, her rakamın tam altındaki temel sıra parmağını kullanarak, doğruluk %95'te kalana kadar tek başına çalış; sonra rakamları normal metne karıştır.

Kaynaklar