I cannot fathom how people can find the time to actually approach any particular problem at a reasonable depth if it will take them more time to type out the solution than reading and understanding the existing code and determining how to solve the problem. Sure there's code where there's boilerplate, or add a line to a bunch of files, or tons of ways that raw typing speed doesn't play much of a benefit, but when it comes time to type, having to move your hands and look to find the { is akin to a carpenter having to read every label to find the bottle of glue.
As far as you wondering what use typing speed is to a programmer:
1) if you can type faster, it takes less effort to fix cosmetic mistakes and you do so more often. you must have noticed as well when looking over the shoulder of a slow typer they seem to make more errors? or maybe it just seems more tedious because you're waiting on it. you must have also seen that a really skilled typist can make an error and have it corrected before you hardly notice it (which is because they feel their fingers slipped).
2) in a similar sense, if you type faster, it takes less effort to quickly try something out. just type it out, maybe not even immediately test it, because as you see it on the screen you can more easily reason about it and make corrections before you do. if you type slower, you're more likely to get stuck halfway writing a block of code because you're thinking "wait this isn't right" and start doing proto premature optimization (well, that's my problem, I start thinking about what is the best/most concise/pythonic/readable way to write this code halfway, before I even got the rough structure down. I find it's almost always better to first write down something that works).
3) if you type faster you spend less time writing comments on HN and can get back to programming sooner.
At the risk of painting with a wide brush, I am currently under the impression that any developer who sits down and cranks out code non-stop at their maximum typing rate is either :
a) cranking out a complete mess that will require extensive refactoring down the road
b) the protagonist of "Hackers" or "Swordfish"
For what it's worth, I am a reasonably fast typist (~115 wpm, qwerty) and can't even imagine myself ever coding as fast as I can type. I wouldn't mind for this to be the case, though :)
Well then. Time for me to get busy on one of those touch-type-training applications, that's nearly 2x what I just did.
Indeed at that speed you're sufficiently CPU bound to make that claim.
But can you crack a 2048 bit RSA code in your head within a minute while .. you know? Plus, in the later scene when he was doing the real job, he wasn't just typing at 115wpm, he was simultaneously dancing around at at least 145bpm. So there's always room for improvement.
Also, I live in the shell and typing 200 char long one liners to do something useful and if you are a fast typist very quick too. It's great for generating on the fly reports, searches etc. This is the kind of thing that would take a slow typist a lot of time. Most of slow typists I know don't bother with these things because it takes too long. As a consequence they also get rusty with their shell foo, or never get good at it to begin with.
I need to improve my typing speed and reduce the interruption as much as possible.
The blog post[1] Steve Yegge was the one that triggered me to consider touch typing seriously.
1. http://steve-yegge.blogspot.in/2008/09/programmings-dirtiest...
Previously I've thought a lot about architecture, code, algorithms, etc. And then typed that in ~1 hour per day. However when I started doing real TDD with running tests every few dozen seconds, everything changed. Now I actualy code almost all the day - play with ideas, throw them away, implement in a multiple ways, refactor a lot. And that is a blessing when you may implement your ideas as fast as you may, so that instead of analyzing the solution, you verify it.
Other reason is I've changed my approach to application architecture. Previously I've used the standard PHP/Ruby/JS frameworks and fit my code into predefined places, generated scaffolds, etc. However then I started applying DDD, PoEAA and similar ideas. All the advanced design principles require a lot of boilerplate code - a lot of mappers, DTO transformers, domain classes, view models, etc. So I actually need to type ~3 times more code than before.
And then I've started using VIM. You better not make typos when using VIM - crazy staff happens and it breaks the flow.