Beim Zehnfingersystem für Programmierer geht es vor allem um die Tasten, die ein normaler Tippkurs auslässt: Ziffern, Klammern, Operatoren und die Shift-Kombinationen drumherum. Wer Fließtext mit 90 WPM tippt, kann bei Code langsam sein, und wer Fließtext mit 50 WPM tippt, kann bei Code flott sein. Aufgefallen ist uns das, als wir beim Testen unsere eigenen Quelldateien in den Modus „Eigener Text“ eingefügt haben. Die Geschwindigkeit fiel im Vergleich zum Wörter-Modus um ein Drittel oder mehr, die Tasten-Heatmap leuchtete auf der Zahlenreihe und beim rechten kleinen Finger auf, und die langsamsten Abschnitte waren Tokens mit Klammern.
Warum WPM bei Fließtext wenig über das Tippen von Code aussagen
Code unterscheidet sich in drei Punkten von Text, und ein Schreibtest aus häufigen englischen Wörtern misst keinen davon.
Der erste ist die Zeichenmischung. Wir haben gezählt. In den ersten zehn Beiträgen dieses Blogs sind von 100 Zeichen ohne Leerzeichen etwa 93 Buchstaben, 5 Satzzeichen und 2 Ziffern. Im JavaScript-Quellcode des Kommandozeilenwerkzeugs von npm fallen die Buchstaben auf etwa 80, und die Symbole steigen auf 19. Pythons Module json und email kommen auf 80 bis 85 Buchstaben, und eines unserer dichten Build-Skripte auf 64, wobei ein Drittel seiner Zeichen Symbole sind. Code hat also ungefähr drei- bis siebenmal so viele Symbole wie unser Fließtext. Die meisten davon liegen in der obersten Reihe oder brauchen Shift, also den rechten kleinen Finger und die schwächeren Griffe. Unsere englischen Wörtertests bestehen aus den 1.000 häufigsten Wörtern eines Untertitelkorpus; „{“ ist nicht dabei.
Der zweite ist der Rhythmus. Fließtext tippt man in langen Strecken. Code tippt man in kurzen Schüben zwischen Pausen zum Nachdenken, Scrollen und Lesen. Die Freiwilligen in der Studie von Dhakal et al. aus dem Jahr 2018 mit 136 Millionen Tastenanschlägen, die Sätze abtippten, brauchten im Schnitt etwa 239 ms zwischen zwei Tasten. Der Tag eines Programmierers ist voller Lücken von mehreren Sekunden, und das Tempo innerhalb der kurzen Schübe zählt mehr als jeder Durchschnitt.
Der dritte ist der Editor. Autovervollständigung, Snippets und Tastenkürzel bedeuten, dass ein arbeitender Programmierer nur einen Bruchteil der Zeichen auf dem Bildschirm selbst tippt. Das kann kein Schreibtest messen, und unserer tut auch nicht so.
Ist Tippgeschwindigkeit beim Programmieren wichtig?
Weniger, als viele denken, und an einer anderen Stelle. Wenn jemand fragt, ob 60 WPM zum Programmieren reichen, lautet die Antwort Ja, mit einem Vorbehalt: Wenn du für Symbole und Zahlen nach unten schaust, tippst du Code nicht mit 60 WPM. Eine Zeile tippen zu können, ohne den Gedankengang zu unterbrechen, ist wichtiger als die reine Geschwindigkeit, und genau der Blick auf die Tastatur unterbricht ihn.
Wie du Sonderzeichen schneller tippst und warum das niemand unterrichtet
Eine Frage, die in Tippforen immer wieder auftaucht: Jemand tippt Buchstaben blind in ordentlichem Tempo, aber sobald er programmiert, sucht er wieder nach Symbolen, Zahlen und sogar Großbuchstaben, und er möchte sie schrittweise lernen, so wie die Buchstaben, ein paar Tasten auf einmal.
Ein Teil dessen, was Symbole schwer macht, ist Shift. In dem npm-Quellcode, den wir ausgezählt haben, waren etwa 45 % der Symbol-Anschläge Zeichen mit Shift wie ( ) { } : und $, fast 9 von 100 Zeichen ohne Leerzeichen, bevor auch nur ein einziger Großbuchstabe mitgezählt ist. Bring also zuerst die Shift-Gewohnheit in Ordnung: Drück Shift mit der Hand, die das Zeichen nicht tippt. ( und ) liegen auf der 9 und 0 der rechten Hand, also gehört dazu die linke Shift-Taste; ! @ # $ liegen auf der linken Hand, also gehört dazu die rechte Shift-Taste. Die meisten, die sich das Tippen selbst beigebracht haben, halten für alles die linke Shift-Taste, und bei ! muss der linke kleine Finger dann zwei Tasten gleichzeitig drücken. Prüf deine eigene Gewohnheit, indem du eine Zeile mit @ und $ tippst und darauf achtest, welcher kleine Finger sich bewegt.
Symbole lassen sich schwer isoliert üben und sind überhaupt langweilig zu üben: Buchstaben kommen mit Wörtern, Klammern kommen mit Code, und zufälliger Code ist nicht interessant. Unsere Antwort ist, Symbole an echten Codezeilen zu üben, eine Klasse nach der anderen.
Eine Klasse nach der anderen
Das ist die Reihenfolge, die wir nehmen würden, und die Reihenfolge des Symbol-Trainings, das wir gerade für die Übungsseite bauen. Bis es fertig ist, kannst du dasselbe tun, indem du echten Code in den Modus „Eigener Text“ einfügst, eine Symbolklasse nach der anderen, und die nächste Klasse erst dazunimmst, wenn die aktuelle bei 95 % Genauigkeit liegt:
- Ziffern. Die Zahlenreihe, die Finger der Grundreihe greifen nach oben. Sie kommt zuerst, weil sie die meistgenutzte Klasse jenseits der Buchstaben ist und weil fast jeder hier eine schlechte Angewohnheit hat, etwa dass der Zeigefinger 4, 5, 6 und 7 drückt. Der Zahlentest ist eine schnelle Kontrolle.
- Klammern als Paare. Erst ( ), dann [ ], dann { }. Als Paare, weil du fast nie die eine ohne die andere tippst: In diesem npm-Quellcode kommt ( 6.195-mal vor und ) 6.194-mal. Die Bewegung aus Öffnen und Schließen als eine Einheit zu trainieren, macht sie schnell. Bei der schließenden Klammer bricht bei den meisten der Rhythmus.
- Operatoren. = + - * / und die spitzen Klammern, dazu die zusammengesetzten Formen (==, =>, +=, !=). Sie verteilen sich auf die Zahlenreihe und die Satzzeichentasten der rechten Hand, und mehrere brauchen Shift auf derselben Hand, was der unangenehme Teil ist.
- Anführungszeichen und Satzzeichen. ' " ; : , . wobei der rechte kleine Finger die meiste Arbeit macht. Bei Semikolon und Doppelpunkt unterscheiden sich Tippende aus der C-Familie und aus Python am stärksten, übe also mit Zeilen aus der Sprache, die du benutzt.
- Shell und die Exoten. Pipe, Backslash, Tilde, Backtick, Zirkumflex, kaufmännisches Und, Raute, Dollar, At-Zeichen und die Taste _. Der _ und der Backtick überraschen die meisten; Code in snake_case verwendet _ ständig, und die meisten treffen ihn mit dem falschen Finger.
Für jede Klasse brauchen die meisten ein oder zwei Wochen mit Zehn-Minuten-Einheiten, das ganze Training dauert also zwei bis drei Monate. Das ist langsamer als das Lernen der Buchstaben, weil die Symboltasten weiter weg liegen und die Gewohnheiten, die du ersetzt, älter sind.
Was schiefgeht, wenn man die Statistik pro Taste beobachtet: Man lernt das Symbol mit dem richtigen Finger und fällt dann unter Druck zurück, weil die alte Bewegung ein paar Wochen lang schneller ist. In der Statistik zeigt sich das als Taste, deren Abstand stark schwankt, schnell, wenn du richtig greifst, und langsam, wenn nicht. Die Lösung ist, noch eine Woche bei dieser Klasse zu bleiben.
Klammerpaare und automatisches Schließen
Editoren schließen Klammern automatisch, was eine berechtigte Frage aufwirft: Warum die schließende überhaupt tippen lernen?
Aus zwei Gründen. Automatisches Schließen ist unzuverlässig: Es greift an manchen Stellen und an anderen nicht, etwa im Terminal oder in einem Chatfenster. Wer sich darauf verlässt, zögert jedes Mal, um zu prüfen, ob es gegriffen hat, und das Zögern kostet mehr als der Anschlag. Und das Überschreiben einer automatisch geschlossenen Klammer (also „)“ drücken, wenn der Editor schon eine eingefügt hat) ist selbst ein Anschlag, du tippst die schließende Klammer also so oder so.
Wenn du hier Code in den Modus „Eigener Text“ einfügst, wird der Text an Leerraum getrennt, die Einrückung verschwindet also, und jedes Token wird zu einem Wort. Das ist Einschränkung und Bequemlichkeit zugleich: Du tippst nicht vier Leerzeichen am Anfang jeder Python-Zeile, übst sie aber auch nicht. Ein richtiger Code-Modus, der Einrückung und automatisch geschlossene Paare so behandelt wie ein Editor, steht auf unserer Liste, und er ist schwieriger, als er klingt.
Code- und Fließtext-Geschwindigkeit im Vergleich
Wir haben nicht genug Ergebnisse im Code-Modus, um Perzentile zu veröffentlichen, und wir warten lieber, als sie zu erfinden. In unseren eigenen Durchgängen lag die Code-Geschwindigkeit bei einem realistischen Ausschnitt irgendwo zwischen der Hälfte und zwei Dritteln der Fließtext-Geschwindigkeit derselben Person, und das Verhältnis verbessert sich durch Symbolübungen stärker als durch allgemeines Üben.
Die Zahl, die sich übertragen lässt, ist die Genauigkeit. Wer Fließtext mit 97 % Genauigkeit tippt und Code mit 90 %, hat ein Symbolproblem, und die Tasten-Heatmap zeigt genau, welche Symbole. Wer bei beidem auf 97 % kommt, muss einfach mehr Code tippen. Unsere Erklärung der Bewertung zeigt, wie korrigierte Fehler in die Genauigkeit eingehen.
Als Standard-Vergleichswert kommt der Satzzeichentest mit eingeschalteten Zahlen dem Code unter unseren regulären Modi am nächsten. Geschweifte Klammern hat er nicht, aber er bringt die Shift-Taste und die Zahlenreihe ins Spiel, und genau da liegt bei den meisten die Lücke.
Tastaturentscheidungen, die helfen
Die Tastaturtipps, die Programmierer bekommen, drehen sich meist um Schalter und gehen meist am Thema vorbei.
Das Layout ist wichtiger als der Schalter. Dvorak verlegt die Klammern in die Zahlenreihe und versetzt die meisten Satzzeichen. Colemak und Workman lassen die Klammern dort, wo QWERTY sie hat, verschieben aber beide das Semikolon an die Stelle, an der bei QWERTY das P liegt, was Programmierer aus der C-Familie merken werden. Der Artikel über Layouts hat die ausführliche Fassung.
Eine Symbolebene schlägt eine größere Tastatur. Viele geteilte und kompakte Tastaturen erlauben es, Klammern und Operatoren auf eine Ebene unter die Finger der Grundreihe zu legen, die du mit einer Daumentaste aktivierst. Von allen Hardware-Änderungen, die Programmierer beschreiben, würden wir diese zuerst ausprobieren, weil du dann nie wieder für ein Symbol nach unten schauen musst.
ISO gegen ANSI. Auf ISO-Tastaturen (Großbritannien und der Großteil Europas) verändern die zusätzliche Taste neben der linken Shift-Taste und die hohe Enter-Taste, wo Backslash und Pipe liegen. Wenn du auf der einen übst und auf der anderen arbeitest, wird dein kleiner Finger danebengreifen. Unsere Emulation enthält deshalb beide Varianten von Colemak-DH.
Für die Geschwindigkeit spielen Schalter kaum eine Rolle. Lineare, taktile und klickende Schalter unterscheiden sich in Gefühl und Klang, und das Anschlagsprotokoll weiß nicht, welchen du gedrückt hast. Unser Artikel über mechanische Tastaturen geht die Zahlen durch.
Ton hilft manchen als Rückmeldung: Der Fehlerton sagt dir, dass ein Symbol falsch war, ohne dass du nach unten schauen musst. Schalte ihn ein, während du Symbole lernst.
Eine Zehn-Minuten-Einheit für Programmierer
Was wir in den zwei bis drei Monaten, die das Symbol-Training dauert, täglich machen würden:
- Zwei Minuten: ein 30-Sekunden-Wörtertest zum Aufwärmen, Genauigkeit bei 97 %.
- Sechs Minuten: die aktuelle Symbolklasse, mit eigenem Text, den du aus deinem Code einfügst. Hör beim ersten Anzeichen auf, dass du zum alten Finger zurückfällst.
- Zwei Minuten: ein Code-Ausschnitt in der Sprache, die du am meisten benutzt. Schau danach auf die Tasten-Heatmap, nicht auf die WPM.
An Tagen, an denen du keine zehn Minuten hast, tipp die schließende Klammer selbst. Das ist die kleinste Gewohnheit in diesem Artikel und meist die erste, die sich auszahlt.
Häufige Fragen
Was ist eine gute Tippgeschwindigkeit für Programmierer?
Alles ab etwa 40 WPM ist brauchbar, wenn du Symbole und Zahlen blind tippst. Darüber hinaus sind Denken, Lesen und der Umgang mit dem Editor der Engpass, nicht die Geschwindigkeit der Finger.
Wie lerne ich, Zahlen blind zu tippen?
Übe die Zahlenreihe für sich, bis die Genauigkeit bei 95 % hält, und nimm dabei für jede Ziffer den Finger, der in der Grundreihe direkt darunter liegt; dann misch Zahlen in normalen Text.