Microdecisions and Typing

I remember learning to touch type when I was in high school. It was really useful – I could look at the screen instead of my keyboard when I typed, and that allows me to monitor what was going on.

That is, I learned to touch type through instant messenger and online games (where you don’t necessarily want to look down for a few seconds).

The problem with learning to touch type in that fashion was twofold:

  1. First, accuracy was less important than speed. This lead to a high (ish) error rate.
  2. Second, speed was achieved on “familiar” words; I got good at typing regular words, and the keys the words those used.

That was good enough through college – getting 50 words per minute was fine for essays, and my error rate was under 10%.

More recently, however, I’ve become aware of how frustrating it is to have a high error rate in typing.

Errors are nasty things. You need to watch closely for them, and then identifying them requires you to stop your chain of thought, correct it, and then move on. It’s mentally “draining” particularly for words you’re not really experienced with.

Worse, the less familiar with typing and the keyboard you are, the more you have to focus on articulating what’s in your brain – need to recall where the keys are, how to spell the word, and so on.

It’s not much – and in most cases, barely noticeable – but it adds friction to the process of getting things out of your head and onto the computer.

If you feel more comfortable with a pen and paper than with a keyboard, that’s probably because of the additional marginal energy you need to exert to put it through your input device (mouse/keyboard).

And, of course, the problem is more apparent when programming. Hitting brackets, equal signs, etc – not normally used in English – are very, very necessary in programming.

So, a few months ago I endeavored to learn to touch type. The good news: it’s not very difficult, doesn’t take that long, and works pretty well. The bad news: your typing speed drops a lot initially.


For general purpose “learning to type” I found TypingWeb to be the best. The interface is clean, the lessons helpful.


For special characters, typing.io is excellent. You can type through code from open source projects, and – in the premium version – upload your own code and type through that.

Typing.io also has a really useful grading summary. It counts – unlike so many other typing tools – backspaces and eliminated characters to develop an efficiency score. That’s great – an error rate of, say 2% doesn’t fully encompass how much trouble you go to in order to fix the errors,. Counting incorrectly typed, collaterally typed, and backspaces does account for that trouble – and from experience, I’ll say that an error rate of 5% can lead to an overall efficiency of 80% – 85%. That’s not very good.

The above lesson was a little easier than most – Python, using variable names I’d typed quite a bit before – but coding feels so much smoother when the unproductive keystrokes are under 5% (usually, aka for Javascript or PHP, I’m at ~60 WPM with 9% – 12% unproductive keystrokes).

I’m going to keep practicing until I can get to > 75 WPM with < 3% error rate across multiple languages (PHP, Javascript, C, Clojure, Python, etc). At that point I think I won’t have to worry about what to type – it’ll just be seamless – and I’ll reduce the friction, very slightly, from getting things inside my head onto the computer.

Post Revisions: