GUIDE
Typing code
Code uses brackets, braces, operators and underscores at a density no prose reaches, and most of them are shifted keys on the number row or the right-hand edge. That makes code typing a different key distribution rather than the same one faster, and it is why a quick prose typist is often unremarkable at it.
Why your prose speed does not transfer
Typing speed is mostly prediction. In prose you are producing familiar word shapes as single motions, and the letters themselves are distributed the way the language distributes them — which is roughly what the layout was arranged around.
Code breaks both halves. Identifiers are not words your hands have seen a thousand times, so they are typed closer to letter by letter. And the character distribution is completely different: a page of code is perhaps a fifth punctuation and symbols, against a few percent for prose.
The result is a familiar experience — someone who types 90 words a minute of English finding themselves at half that in a source file, and assuming they have lost something. They have not; they are typing a different distribution they never drilled.
Which keys actually hurt
Almost all of the difficulty is concentrated in two places: the shifted number row, and the right-hand edge of the board where the little finger lives.
The little finger is the weakest and it owns the most in code. Shift, enter, backspace, the square brackets, the semicolon, the quotation marks and the slash are all its responsibility, and several are needed in the same line. Typists who let a neighbouring finger take over here get away with it in prose and cannot in code.
| Character | Where it is (US QWERTY) | Why it is awkward |
|---|---|---|
| ( and ) | Shift + 9, 0 | Right hand, number row, shifted — and they come in pairs |
| { and } | Shift + [ ] | Right little finger, shifted, at the far edge |
| [ and ] | Right of P | Right little finger, a long reach from the home key |
| _ (underscore) | Shift + hyphen | Right little finger stretching up and right |
| = and + | Right of the number row | Same reach, and + needs shift as well |
| < and > | Shift + comma, full stop | Right hand, shifted, common in several languages |
| | and \ | Above enter, varies by layout | Different position on nearly every national layout |
| " and ' | Right of the semicolon | Right little finger; the two are constantly confused |
What to drill, and in what order
Start with shift technique, because it is the single habit that limits everything else. A capital or a symbol should always be shifted with the opposite hand: left shift for a right-hand key, right shift for a left-hand one. Same-hand shifting pulls the hand out of position, and in code, where shifted characters arrive several to a line, it is the difference between fluid and stop-start.
Then drill the pairs rather than the characters. Brackets, braces, parentheses and quotation marks almost always arrive in twos, and typing the pair as one motion — open, close, then move back between them — is both faster and how most editors expect you to work.
Then the number row, which is covered in its own guide and which almost nobody has drilled. In code it carries the digits, the operators and half the punctuation.
Finally, practise on real code in the language you write. The symbol distribution differs enormously between them: Lisp is parentheses, C-family is braces and semicolons, Python is colons and indentation, shell is dollars and pipes.
- Opposite-hand shift
- The habit that matters most. Left shift for right-hand keys and the reverse.
- Brackets as pairs
- Type both, then move back between them. It is one motion, not two.
- The little fingers
- They own the edge of the board, which is where code lives. Do not let the ring finger take over.
- The number row
- Digits, operators and half the punctuation. Least drilled, most needed.
- Your own language
- Symbol density differs enormously between languages. Practise the one you write.
Does typing speed matter for programming?
Less than typing sites imply and more than programmers like to claim. The familiar objection is that thinking dominates and the keyboard is never the bottleneck, and for writing new logic that is broadly true.
It is less true for everything else the job consists of: renaming things, writing tests, replying to a review, describing a bug clearly, moving code around. Those are transcription rather than invention, and transcription is exactly where keyboard speed shows.
The stronger argument is the same one that applies everywhere else on this site, and it is about attention rather than throughput. When the keyboard needs no part of your attention, the thought you were holding survives being written down. That matters more in code than in prose, because the thing being held is usually more fragile.
Questions
Why am I slower at typing code than prose?
Because it is a different key distribution, not the same one attempted faster. Code is perhaps a fifth punctuation and symbols against a few percent for prose, most of them shifted keys on the number row or the right-hand edge, and identifiers are not word shapes your hands already know.
Which finger should type brackets and braces?
The right little finger, reaching right from the semicolon for the square brackets, with shift held by the LEFT hand for the curly ones. Letting the ring finger take over is the common shortcut and it caps your speed on any bracket-heavy line.
Should programmers learn Dvorak or Colemak?
It is a weaker case than for prose, not a stronger one. Alternative layouts optimise letter placement, and code is not mostly letters — while the symbols and the editor shortcuts they displace are used constantly. Some programmers are very happy on them; nobody should expect a speed gain from the switch.
Does typing speed actually matter for programming?
For writing new logic, rarely — thinking is the bottleneck. For everything else the job is made of, renaming and testing and explaining, it is ordinary transcription and speed shows. The real benefit is attention: a keyboard that needs none of it stops interrupting the thought you were holding.
Put it into practice
Reading about typing is the smaller half. The beginner course starts on the home row, the speed test will tell you where you stand, and all of it works in 86 languages without an account.