Agreed; if you're truly horrible at typing, then you're probably not a good programmer. I did some pair programming with several of my interview candidates and here's what I saw.
(1) There's something important you can tell about a person's relationship to computers just by watching them type. The terrible typists were also the worst programmers. How can I take you seriously if you aren't comfortable at the keyboard? I can't believe that somebody who loves to code hasn't spent enough hours at a computer to figure out how where all the keys are, even if they aren't touch typists. Several observations: (a) staring down at the keyboard instead of having eyes on screen results in typos missed until several characters later, requiring extra navigation time, or simply missed until the compiler yells at you, if you've even got a compiler to save you; (b) programming makes use of a lot of symbolic characters, so people who can't even find alphabetic characters on the keyboard are even worse writing code. The most frustrating typist I encountered would occasionally hold down enter instead of shift for several seconds while hunting for '(', only to look up several seconds later and notice they had inserted a huge amount of blank space in the file, followed by a '9'. Did not hire.
(2) Once above a certain minimal threshold of typing competence, there didn't seem to be much correlation between typing skill and programming skill. The person we ended up hiring was also (gently) asked to take an online typing course. Their speed quickly increased from a two-finger 30 wpm to full touch-typing 60 wpm. A noticeable increase in productivity was also observable just by watching them type, especially as typo corrections happened quickly with eyes focused on the insertion point and not on the keyboard. Once you have in mind the code you want to write, then your fingers and text editor can either get out of the way or be a limiting factor.
From a cognitive standpoint: if you're a great programmer but a horrible typist, then how can you not want to increase the data transfer bandwidth between your mind and the editor?
I'm a shitty typist, but a really good coder. I've tried to make myself faster, but I think my brain isn't wired for it. Occasionally my typing becomes a productivity bottleneck, but most of the time it just doesn't matter, as I'm spending 90% of my time figuring out what to type anyway.
Try a new keyboard. If you have a standard keyboard, get an ergonomic one. If you have an ergonomic keyboard, get a standard one. A few years ago, I found that using my laptop more frequently made me a better typist because I hadn't developed such bad habits and compressed layout drove my hands closer to the home row. Tape a piece of paper over the home/end/arrows/keypad/etc if you can't keep your fingers from wandering.
I think a standard laptop is pretty much the most ergonomic possible layout. The too-big keyboard is one bad thing about the standard layout and the mouse on the side is the other.
My wrists disagree vigorously with you, sir, on that. Standard laptops have terrible ergonomics not only related to key spacing issues (frequently too tight) but also the abruptness with which the keys stop (being as it is almost entirely rigid instead of the progressive resistance a good, say, Model M has).
I agree completely... The only thing is that since I've been using a colemak layout for some time now, when typing in qwerty on someone else computer I might look like a rather bad typist :-)
But yes, I think that someone who can't touch type can't concentrate as much on the code and is likely to make more typing mistake.
Heavily agreed on your first point. I don't think typing speed so much causes productivity - more like typing speed is an indicator of experience and interest in the subject matter.
Odds are, if you are actually interested in programming, you've spent an ungodly number of hours at some point in your life in front of a machine. You spend enough time in front of a keyboard and you will get really fast at typing.
And odds are, if you've never spent enough time in front of a machine to get fast at it, you haven't really had much coding experience.
I usually use a Kinesis Keyboard (http://www.kinesis-ergo.com/images/kb_adv-blk720x471.jpg) and a (rather customized) Emacs when I'm programming. I spend 90% of my programming time in front of my terminal - so it makes sense for me to optimize for that case instead of the general case.
When I program on a different keyboard/editor I am much slower than normal. I remember one interview I kept trying to use the Emacs kill ring (C-k) in Eclipse. (I just did a typing test and apparently I do hit about 60WPM on my laptop keyboard - but that's about half my real speed ...).
I have this problem with ctrl. I have a habit of making capslock act as another control key. When I get to other systems I'm constantly fumbling and turning caps lock on and off. However, I think it's pretty obvious from the speed of my fingers that I know what I'm typing but I just seem to be hitting the wrong keys.
And of course, switching editors and operating systems can really confuse you. I can't count the number of times I've copied something, gone to insert it into the editor, and realized that the system I'm on doesn't automatically copy highlighted text.
(1) There's something important you can tell about a person's relationship to computers just by watching them type. The terrible typists were also the worst programmers. How can I take you seriously if you aren't comfortable at the keyboard? I can't believe that somebody who loves to code hasn't spent enough hours at a computer to figure out how where all the keys are, even if they aren't touch typists. Several observations: (a) staring down at the keyboard instead of having eyes on screen results in typos missed until several characters later, requiring extra navigation time, or simply missed until the compiler yells at you, if you've even got a compiler to save you; (b) programming makes use of a lot of symbolic characters, so people who can't even find alphabetic characters on the keyboard are even worse writing code. The most frustrating typist I encountered would occasionally hold down enter instead of shift for several seconds while hunting for '(', only to look up several seconds later and notice they had inserted a huge amount of blank space in the file, followed by a '9'. Did not hire.
(2) Once above a certain minimal threshold of typing competence, there didn't seem to be much correlation between typing skill and programming skill. The person we ended up hiring was also (gently) asked to take an online typing course. Their speed quickly increased from a two-finger 30 wpm to full touch-typing 60 wpm. A noticeable increase in productivity was also observable just by watching them type, especially as typo corrections happened quickly with eyes focused on the insertion point and not on the keyboard. Once you have in mind the code you want to write, then your fingers and text editor can either get out of the way or be a limiting factor.
From a cognitive standpoint: if you're a great programmer but a horrible typist, then how can you not want to increase the data transfer bandwidth between your mind and the editor?