Touch typing. Its Wikipedia definition is lapidary.
Touch typing is typing without using the sense of sight to find the keys. -- Wikipedia
Is touch typing a mandatory skill for programmers?
Jeff Atwood thinks so:
When you're a fast, efficient typist, you spend less time between thinking that thought and expressing it in code. Which means, if you're me at least, that you might actually get some of your ideas committed to screen before you completely lose your train of thought. Again. -- Jeff Atwood
I can't take slow typists seriously as programmers. When was the last time you saw a hunt-and-peck pianist? -- Jeff Atwood
But often, the typing speed is not the bottleneck:
Programming is more like composing music than performing music. Most composers can play piano well, but some cannot. -- John D. Cook
In fact, only when I am doing something I already know very well I find that my typing speed is limiting me. When exploring new ideas or concepts, or tuning some algorithm, I won't write more than some lines per minute.
Yet being able to quickly change and add code is one less barrier to efficient refactoring and modelling. If you had to pay a cent for each character you write, how much code you will write? Note that I'm talking about writing code, not committing it: you should indeed try to limit as much as possible the code you'll have to maintain in the future, and delete mercilessly lines you have written in the past minutes. I've also seen programmers typing so fast that they could actually make a big mess in a very short time.
What do you think of touch typing for programmers? Does it matter?