Wednesday, September 10, 2008

Programming's Dirtiest Little Secret

"And as for this non-college bullshit I got two words for that: learn to fuckin' type"— Mr. Pink

This is another one I've wanted to write forever. Man, I've tried a bunch of times. No ruck. Not Rucky. Once again I'm stuck feeling so strongly about something that I'm tripping over myself trying to get my point across.

So! Only one thing left to try: bust open a bottle of wine and see if that gets the ol' creative juices flowing all over my keyboard. Rather than top-down, which is boring, let's go bottoms-up.

Once upon a time...

...in, uh, let's see... it was about 1982. Yeah. A looooong time ago. This is practically a fairy tale.

Once upon a time in '82, there was this completely hypothetical fictitious made-up dorky 12-year-old kid named Yeev Staigey, who was enduring his sophomore year at Paradise High School in Paradise, California. Yeev had skipped 3rd, 7th and 8th grades and entered high school at age 11, in a heroic and largely successful effort to become socially inept for the rest of his life.

Boy, I could tell you all sorts of stories about little Yeev at that age. He was even lamer and more pathetic than you're probably already imagining.

However, our story today concerns Yeev's need to take a, um, an... elective of some sort. I'm not sure what they called it, but at Yeev's school, you couldn't just take math and science and languages and history and all that boring stuff. No! Yeev was being educated in the United States of America, so he had to take "electives", which were loosely defined as "Classes Taught by the Football Coach because Some Law Said that Football Coaches Had to Teach A Course Other Than Football."

These "electives" (which you could "elect" not to take, in which case they would "elect" not to graduate you) were the kinds of courses that put the "Red" in Red-Blooded American. These were courses like Wood Shop, Metal Shop, Auto Shop, and of course that perennial favorite, Just Chop Your Hand Off For Five Credits Shop.

At the time our story begins, our pathetic hero Yeev is peering through his giant scratched bifocal goggles at the electives list, trying to find one that doesn't involve grease and sparks and teachers screaming for a medic, can anyone here make a tourniquet, help help help oh god my pension, and all that manly American stuff you find in Shop class.

Yeev noticed that one of the electives, surely placed there by mistake, was Typing. Like, on a typewriter. Yeev thought this seemed, in the grand scheme of things, relatively harmless. The worst that could happen was maybe getting your fingers jammed in an electric typewriter just as lightning hit the building, causing you to jerk wildly in such a way that your pants accidentally fall down around your ankles and everyone laughs loudly at the Mervyn's white briefs your mom bought you. That would be mildly embarrassing, yes, but in a few years almost nobody would remember, except when they saw you.

Yeev checked, and sure enough, the school's football coach was actually teaching the class. For real. Seeing as this was going to be the closest Yeev would ever get to a football field during his educational career, Yeev decided to go for it.

Yeev didn't know it at the time, but they say coaches make the best teachers. You know. "Them." "They" say it. It's got some truth to it, actually. Coaches have to get a bunch of complicated information through to people with the attention spans of hungry billy goats. That takes mad skilz, as "they" also say.

Have you ever noticed how on NFL Prime Time, the ex-coach commentators and coached ex-player commentators always have big, beefy hands, and they wave them at you as they talk, riveting your attention on the speaker? It's because your reptilian brain is thinking "that dude is about to hit me." Coaches know how to get your attention. They know how to teach.

So Yeev was pretty fortunate in getting a coach. It wasn't all roses, mind you. He was unfortunate in the sense that he was living in 1982, he had little to no experience with computers, and the school was so backwards that by 2008 they still wouldn't have a fugging website, apparently. And back in 1982 they could only afford budget for half the typerwriters to be electric; the rest were the old, manual, horse-drawn kind of typewriter.

It would have been better if Yeev had been learning to type today. Today they have fast keyboards, and smart programs that can show you your exact progress, and so on.

I feel almost jealous of people who need to learn to type today. Don't you?

But in 1982, little bifocaled Yeev had no software training programs, so he had to learn from a football coach.

And all things considered, this was pretty rucky.

Let me tell you how it went down...

Learning Licks

Have you ever watched a professional concert musician practicing? I'm talking about those those world-class ones, the kinds of musicians that were trained in academies in China and Russia and have all the technique of Japanese robots combined with all the musical soul of, well, Japanese robots.

In classical music, they call difficult hunks of music "passages". In electric guitar music, they call 'em "licks". But it's pretty much the same thing. You want to train your fingers to swipe through those notes like a Cheshire Cat licking its big smile. Llllllick!

Here's how you train your fingers.

You start with a passage. Anything at all. At first it'll just be a single note. Later it'll become a few notes, a phrase, a measure, a couple of measures. Anything you're having trouble with and you want to master.

First you play the lick as fast as possible. You don't care about making mistakes! The goal of this phase is to loosen your fingers up. You want them to know what raw speed feels like. The wind should be rushing through their fingery hair! Yuck!

Next you play it as slow as necessary. In this pass you should use proper technique. That basically means "as proper as you can", because state-of-the-art technique is (a) constantly evolving and (b) always somewhat personal. You pick any discipline, they've got schools of thought around technique. There's no right answer, because our bodies all work a little differently. You just have to pick the technique that you like best and try to do it right.

Eventually you can invent your own technique. Sometimes you're forced to: I'll tell you about that in a little bit. But at first you should learn someone else's tried-and-true technique, and after you've mastered it, then decide if you want to change it. Before you go charging off in your own crazy directions, you need to master your form.

Form is liberating. Believe it. It's what they say, and they say it for sound reasons.

Whatever technique you choose, in the slow pass you don't care about speed AT ALL. You care about accuracy. Perfect practice makes perfect, and all that. You want your fingers to know what it feels like to be correct. Doesn't matter if it takes you 30 seconds per note. Just get it right. If you make a mistake, start over from the beginning, slower.

Finally, you play it "at speed". If you're practicing a musical instrument, you play it at the target tempo. You want your fingers to feel musical. Musicians generally agree that you don't want to make mistakes in this phase, or you're just practicing your mistakes. But realistically, most musicians are probably willing to make a few minor sacrifices here in the third pass, as long as the music shines through beautifully.

Let's call it 5 sacrifices a minute. That's what you're targeting.

Fast, Slow, Medium. Over and over. That's what they do. And it works!

Learning to Type

Yeev's football coach was a very wise man. I don't know if he played a musical instrument, but he sure as heck used classical practice ideas.

Yeev dutifully attended class once a day. First he had to learn the basics of typing. There's not much to it, really. You hold your hands in a certain position on "home row". You keep your wrists off the keyboard. There's a diagram showing which fingers type which keys. You memorize it. You try each key a few times.

Think back to kindergarten, when they had you writing the alphabet. You'd fill a line with "A"s, and then a line with "B"s. Just like that.

Within a day or two, you have the keyboard layout memorized, and given enough time, you can type anything without looking at the keys. Just a day or two, and you're already touch-typing!

After the basics, unsurprisingly, Yeev's class played a lot of Typing Football. This was a game the coach had invented to help making learning how to type fun. It wasn't too hard, since the coach astutely realized that not everyone in the class would have the NFL rule book and playbook memorized. Typing football pretty much involved dividing the class in half and moving the ball down the field by typing better than the other half.

The drills Yeev did in 1982 could be done a lot better today using software. Heck, today they have software that lets you practice typing by shooting zombies. How cool is that?

If there's any secret to learning to type, it's persistence. Yeev's class kept at it. Every day, five days a week for 12 weeks, they typed. They didn't have homework, since it wasn't expected that they'd have typewriters. They just came in, played typing football, and did the fast/slow/medium drills.

Sure, sure, there were nuances. Sometimes they'd practice common letter groupings in their language of choice, which in Yeev's case was English. Groups like "tion", "the" and "ing" had to be practiced until they rolled out with an effortless flick. Sometimes they'd practice stuff with lots of punctuation, or numbers, or odd spacing.

That kind of detail is beyond the scope of our story. It's all handled by typing software these days. You'll see.

So how did it turn out? Well, by the end of the semester, Yeev was typing a healthy 60 words per minute. And he wasn't even the best in the class. It was approximately a 45-day investment of 50 minutes a day.

And it was fun!

Realistically, these days, with better software and better keyboards, learning to type is probably more like a 30-day investment of 30 minutes a day.

Today Yeev types about 120 wpm. He entered college still typing around 60-65 wpm, but he decided to practice up after IM'ing with a fellow student named Kelly who typed 120 wpm, using an old Unix program called "talk". Yeev could feel her impatience as they IM'ed. He mentioned it, and she said: "You should see me on a Dvorak keyboard."

Yowza. Yeev was just socially ept enough by then to bite his tongue really hard, and not type anything at all.

But enough about Yeev. The guy's made-up anyway.

Do you need to learn to type?

Well, uh... yeah. You know you do. That's the thing. Even as you make excuses, you know deep down that you need to learn. Typing is how we interact with the whole world today. It doesn't make sense to handicap yourself.

Perhaps you're one of those people who declares: "I'm not rate-limited! I spend all my time in design and almost none of it entering code!" I hear that all the time.

You're wrong, though. Programmers type all day long, even when they're designing. Especially when they're designing, in fact, because they need to have conversations with remote participants.

Here's the industry's dirty secret:

Programmers who don't touch-type fit a profile.

If you're a touch-typist, you know the profile I'm talking about. It's dirty. People don't talk about dirty secrets in polite company. Illtyperacy is the bastard incest child hiding in the industry's basement. I swear, people get really uncomfortable talking about it. We programmers act all enlightened on Reddit, but we can't face our own biggest socio-cultural dirty secret.

Well, see, here's how it is: I'm gonna air out the laundry, whether you like the smell or not.

What's the profile? The profile is this: non-touch-typists have to make sacrifices in order to sustain their productivity.

It's just simple arithmetic. If you spend more time hammering out code, then in order to keep up, you need to spend less time doing something else.

But when it comes to programming, there are only so many things you can sacrifice! You can cut down on your documentation. You can cut down on commenting your code. You can cut down on email conversations and participation in online discussions, preferring group discussions and hallway conversations.

And... well, that's about it.

So guess what non-touch-typists sacrifice? All of it, man. They sacrifice all of it.

Touch typists can spot an illtyperate programmer from a mile away. They don't even have to be in the same room.

For starters, non-typists are almost invisible. They don't leave a footprint in our online community.

When you talk to them 1-on-1, sure, they seem smart. They usually are smart. But non-typists only ever contribute a sentence or two to any online design discussion, or style-guide thread, or outright flamewar, so their online presence is limited.

Heck, it almost seems like they're standoffish, not interested in helping develop the engineering culture. Too good for everyone else!

That's the first part of the profile. They're distant. And that's where their claim that "most of their time is spent in design" completely falls apart, because design involves communicating with other people, and design involves a persistent record of the decision tree. If you're not typing as part of your design, then you're not doing design right.

Next dead-giveaway: non-typist code is... minimalist. They don't go the extra mile to comment things. If their typing skills are really bad, they may opt to comment the code in a second, optional pass. And the ones who essentially type with their elbows? They even sacrifice formatting, which is truly the most horrible sin a programmer can commit. Well, actually, no, scratch that. It's the second worst. The worst is misspelling an identifier, and then not fixing it because it's too much typing. But shotgun formatting is Right Up There.

You know. Shotgun formatting? Where you shove all your letters into a shotgun, point it at the screen, and BLAM! You've Got Code? I knew a dude who coded like that. It was horrible. It was even more horrifying to watch him, because he stared directly downward at his keyboard while he typed, and he'd type with exactly two fingers, whether he needed them both or not, and about once a minute he'd look up at the screen.

During these brief inspections of his output, one of two things would happen. The first possibility was that he'd reach for his mouse, because he had been typing into the wrong window for the past 60 seconds, often with comical results. If he didn't reach for his mouse, he'd reach for the backspace key, which he would press, on average, the same number of times he had pressed other keys.

That dude just may have been CPU bound rather than I/O-bound, though, so I guess I'll cut him some slack.

B-b-b-but REFACTORING *fap* *fap* *fap*

Yeah, yeah. Refaptoring tools make you feel studly. I hear ya. I've heard it plenty of times. The existence of refactoring tools makes typing practically obsolete! A thing of the past! You just press menu buttons all day and collect a paycheck!

I got it. Really. I hear ya.

Here's the deal: everyone is laughing at you. Or if they're your close friend, they're just pitying you. Because you suck. If you really think refactoring tools are a substitute for typing, it's like you're telling us that it's OK for you to saw your legs off because you have a car. We're not fucking buying it.

If you are a programmer, or an IT professional working with computers in any capacity, you need to learn to type! I don't know how to put it any more clearly than that. If you refuse to take the time, then you're... you're... an adjective interjection adjective noun, exclamation.

Yeah, I went ahead and redacted that last sentence a bit. It's better this way. I want us to remain friends. You just go ahead and madlib that sucker.

The Good News

Here's the good news, though. Seriously, there's good news. Like, now that you're finally gonna learn to type, I've got good news for you.

And I know you're gonna learn. You know how I know? I'll tell you: it's because you've read this far!

Seriously. The fact that you can actually read sets you apart.

You'd be absolutely astonishedly flabbergasted at how many programmers don't know how to READ. I'm dead serious. You can learn to speed read even faster than you can learn to type, and yet there are tons of programmers out there who are unable to even skim this blog. They try, but unlike speed readers, these folks don't actually pick up the content.

It's the industry's other dirty little secret.

So! Given that you've read this far, you now realize that it's high time you learned to type. You know you can do it. You even know it's not going to be that hard. You know you're just going to have to give up a couple dozen games of Wii Golf, and suddenly you'll be, like, twice as productive without having had to learn so much as a new data structure.

You know. That's why I know you're going to learn.

So I'll tell you the good news: it's frigging easy! Fast, slow, medium! Get some typing software and just learn. We're not talking about dieting here, or quitting smoking. It doesn't matter how old you are, how set in your ways you are: it's still easy. You just need to put in a few dozen hours.

Hell, if you're having trouble, just email me, and I'll give you a personalized pep talk. I can afford it. I type pretty fast. Plus your email will be really short.

In fact, here's a mini pep talk for ya: I didn't know how to touch-type numbers until I'd been out of college for 3 or 4 years. I finally got fed up with the fact that every time I had to type a number, I had to sit up, look down at the keys, and fumble through with a couple of random fingers.

So I finally spent 15 minutes a day for, like, 2 weeks. That's it. You don't have to type numbers very often, as it happens, so after a week or so, every time I needed to type a number I just slowed down and typed it right. After about 2 weeks, I was typing numbers.

That was 15 years ago! 15! 15! 15! I love being able to type that without looking! It's empowering, being able to type almost as fast as you can think. Why would you want it any other way?

C'mon. It's time to bite the bullet and learn.

Where to start?

Well, if it were me, I'd go online and look for free typing software. I'd search for, oh, an hour or two at most, spread over a week or so. I'd try everything out there. If nothing free seemed to be doing it for me, I'd get Mavis Beacon. It's, like, the brand name for typing software. I have no idea if it's good, but I imagine it's a hell of a lot better than a football coach teaching you on an electric typewriter.

I dunno, man. I just can't... I can't understand why professional programmers out there allow themselves to have a career without teaching themselves to type. It doesn't make any sense. It's like being, I dunno, an actor without knowing how to put your clothes on. It's showing up to the game unprepared. It's coming to a meeting without your slides. Going to class without your homework. Swimming in the Olympics wearing a pair of Eddie Bauer Adventurer Shorts.

Let's face it: it's lazy.

There's just no excuse for it. There are no excuses. I have a friend, John, who can only use one of his hands. He types 70 wpm. He invented his own technique for it. He's not making excuses; he's typing circles around people who are making excuses.

Shame on them!

If you have two hands, then 70 wpm, error-free, is easily within your reach. Or faster. It ain't as hard as you think. It's a LOT more useful and liberating than you think.

And since you're Rucky enough to be learning today, you might as well learn on a Dvorak layout. It's a free speed boost. Might as well give yourself a head start!

That's it. That's my article. Please — learn to type. This should be a non-issue, NOT one of the industry's dirty secrets that nobody talks about. Tell your boss you're going to take the time. Get your employer to pay for the software. Have them send you off to a course, if necessary, so you can't weasel out of it.

Do whatever it takes.

Then let me know how it goes. Believe it or not, I want to hear your success stories. Send me mail. It'll make my day!

I heartily second the suggestion that one learn on a Dvorak keyboard. I typed about 70 wpm on querty but my hands hurt, so I spent two or three weeks forcing myself to use Dvorak instead, at the end of which I was still a 70 wpm typist but my hands hurt a whole lot less.

I would definetly recommend learning Dvorak too...it took me about three hours to get to the point where it would irritate me to have to use QWERTY, about two weeks to be more comfortable with Dvorak than QWERTY, and about two months to be able to switch between them fairly seemlessly.

Also, PopCap Games' Typer Shark is a very fun, free, easy way to practice typing...

An excellent article, Yeev - uh, I mean Steev, sorry (typo). And I just want you to know that I'm typing this without looking at the keyboard. Admittedly I'm largely a two-finger typist (four maybe, if I feel like it) but I still get around 80wpm last I checked and I don't think it's slowed me down. I worry that touch-typing, actually holding your hands steady and wiggling your fingers over the keys, is a fast train through the Carpal Tunnel to Painville, whereas the two-to-six-finger method gives your hands a bit more exercise. I base this, however, entirely on the experience of a woman I know who was (a) a blindingly fast touch-typist and (b) crippled by RSI, and you know what they say about anecdotal evidence.

When I took typing in high school, the class was almost exclusively girls, which I considered a feature. It was taught by a battle-axe of a woman, who had spent most of her career teaching girls who were not college-bound how to become secretaries, so we had to learn the forms of business correspondence as well as how to type.

When I first started working as a programmer back in "the day," almost no technical people could type, and typing was often considered a menial skill, so being able to type was a big advantage. These days they call it "keyboarding" and most kids get some degree of proficiency, motivated by IM. Not too many kids really master typing, though.

I've been noticing that I'm not as fast a typist as I used to be, so maybe it's time to hammer away at some exercises again.

I've been teaching COM and .NET in a classroom setting for nearly ten years. You are absolutely right! For fear of TSA-like comparisons, by 10am Monday morning I have every student in the room profile. Their typing skills figure largely into this profile. As an almost-cast-in-stone rule, hunt-n-peckers trail the rest by a long shot.

I type at around 80-100wpm, but I don't touch-type. I do know how to touch-type but I've never been motivated to practice enough to get up to my non-touch-typing speed.

Let me be clear here - I do type by touch; I don't need to look at the keyboard to type error-free, but I mainly use only three fingers on each hand, and i don't rest in the home position.

I've just been typing so long that I instinctively know where the keys are.

Maybe I'm just unusual, but could you put a solid case to me that I should instead be touch-typing? (I've never suffered from any kind of RSI-like symptoms, despite many long periods of highly productive typing).

In college studying programming, I had a fellow CS undergrad for a roommate, and was shocked to discover that he didn't touch type. He seemed like an intelligent and social person, so I thought it was weird. I mean in high school I had my graphing calculator buttons down (laugh now, but I know you fuckers have TXT'ing keys memorized). It only got hilarious when he had to type without his contacts in, face scouring the keys for the right button to press. But he's still a brilliant guy, writing software for satellites in space.

Honestly, if you're typing a lot while programming, you've either planned your software very, very well, or you've not thought a lot about it. But then, my favorite language today is OCaml, not Java ;)

Wow, I don't think I actually know anybody who can't type. It's like you're describing some crazy Bizarro-world. Or perhaps I just find the idea so horrifying that I haven't ever noticed it.

My dirty secret is that I never learned to use the numeric keypad. I always use the top row, even when entering a bunch of numbers. I know this is probably foolish, but I've never gotten around to learning it.

Your blog would be much easier to read if you would limit the line width to 45-60 characters. I hate having to read every word all the way across the page instead drinking in paragraphs at a time. Wide lines really, really suck, and having them detracts from your credibility.

I'm not a touch typist and I never will be. I can't be since I only have use of my thumb and forefinger on my left hand (but full use of my right). They don't make typing software to accommodate for that. At best, I'm a pseudo-touch typist.

You're making really big assumptions about non-typists likely based upon a few people.Your comments about coding for non-typists don't apply to me. I try to make sure that my code is thoroughly commented and I make sure my code is nicely formatted because I'm the one who has to look at it all day. Heck, I use Python.

I may not participate in on-line chats, but I still use e-mail. I participate in on-line forums, just not programming ones. I avoid commenting on Slashdot, Digg, reddit and the like because I usually find the comments aren't worth reading. I have other ways to spend my time.

"[...] non-typist code is... minimalist. They don't go the extra mile to comment things. [...] They even sacrifice formatting [...] The worst is misspelling an identifier, and then not fixing it because it's too much typing."

I guess using oneself as an example would be bad style, but what a heck: I can't touch type, but I'm a comment and formatting freak (to the point of being what some may call "anal").

Frankly, I don't get Steve's argument. Seriously, if slow typist are bad code formatters, comment writers, and identifier spellers, is he implying that fast typists are good code formatters, comment writers, and identifier spellers? If so, let's extend this argument and claim that fast typist should also be better programmers in general (since fast typing gives them more time to work on design, etc). They must also be better managers (managers do their share of writing, too). Oh, and shouldn't fast typist be better writers? I bet you Shakespeare, Faulkner, and Steinbeck were all fast typists.

Seriously, I do not see how fast typing makes you better... well, anything, maybe except a secretary (or recorder of some sort). I do not have as much experience as Steve, but still I really doubt that programmers who do not write comments, do not use formatting, and misspell identifiers, do all this because they are slow typists; they probably do it for other reasons (otherwise, lots of code readability issues could've been solved by sending the "offenders" to a typing class).

@vladIf proper Russian classical musicians do not learn music by practicing it, then I am intrigued to hear what technique they use. Please elaborate.

I doubt many people would argue that the Los Angeles Philharmonic is a world-class symphony.

No doubt, Russia's children have contributed richly to the classical repertoire - Stravinsky, Borodin, Prokofiev - these are among my personal favorites. However, your suggestion that my country is barren in musical culture is insulting and wrong.

[Posted by a non-typist, professional programmer and once professional musician. Thanks Steve - I may just go learn.]

I was pairing with a programmer who's not a touch typist the other day and it was very hard not to zone out while the typing was happening, and I was thinking something very much like this post the whole while.

"If you have two hands, then 70 wpm, error-free, is easily within your reach. Or faster."

I worked data entry for the USPS for a year and a half. I'm not very sure, but I think that works out to something like 2500 hours of typing (irregular hours). I type maybe 40wpm. If I really try, I mean give it my all, I can maybe get 60wpm for a few minutes. I'm sorry, I'm just not capable of 70wpm.

My dirty little secret: sometimes I wish I still had numbers on the home row.

I spent the first two-thirds of the article expecting the typing thing to be a metaphor for something else. Who the hell doesn't know how to type? I never even had to learn explicitly, I just started typing my book reports on my Mac Plus in sixth grade because it beat getting marked down for horrible handwriting.

seem to put me pretty consistently at just above 60 wpm (never below it and very occasionally a fair bit over it), with maybe 1 mistake per test (whatever that is in keystrokes.)

The problem is I never learned correct form; I tried a few typing exercises as a kid but didn't stick to them. In the end I learned to touch type simply by typing a lot of school assignments and eventually emails.

I can muddle through in IM because accuracy isn't super important, and I don't know how much typing constrains me trying to express myself online.

But I certainly notice my bad form if I type for extended periods and get sore, or if I try typing on an ergonomic keyboard and find I miss keystrokes (I think I hit 'g' with the wrong hand? Or maybe 'y'?)

The problem is that I may be in an ultimately worse position that the two-finger, look-at-the-keyboard typist. They only have to learn to type correctly. To become a decent typist I'd presumably have to unlearn a lot of bad, ingrained habits and only then replace them with new ones.

Terrible handwriting was one of the things that often held me back throughout school; mediocre typing will perhaps hold me back in the computer industry I aspire to become part of?

I had to watch a non-typist programmer at the bash prompt today. it was painful. He was a 4 finger guy, hunt-peck-hunt-peck. But what was most amazing was that rather than type, he would cut and paste to the command line, which took 3 times longer than just typing. He would scroll back in the term window to find things to cut and paste to the current prompt, even if they were really short filenames or whatever. I wanted to scream 'just type it'. I never associated this with Stevie's profile, but it sure fits in this case.

p.s. using a daskeyboard with blank keys for a while will help your typing.

@cam9393, reminds me of the support monkeys at my last job. very few of them had the initiative to use bash (company was standardized on ksh, god help them), and almost none had bothered to learn ksh's obscure completion controls (esc something, and you need some options set, iirc). me, i use zsh and screen and enjoy watching newbs freak when i do keyboard-based scrollback stuff (^A[<pgup>, etc.).

equally important as being adept at typing is to master a good editor (like vim or emacs). Typing alone doesn't get you half of the way to efficient editing. But mastering an efficient editor, now that gets you orders of magnitude further.

Judging by the content and length of this post and the minutes since the last one, Yeev, er, Steve actually types a glacial .0875 words a minute, 24 hours a day, whilst muttering to himself and is lying to impress the coach. I subscribe for this? Lame-ass post but I like the completely un-PC use of 'rucky'.

I represented PHS in a typing contest years ago -- got a t-shirt that said "Super Typist" for it. I was the fastest in the class, but didn't win the typewriter. The coach (Johnson IIRC) didn't teach the class, I had an older lady who taught the business classes -- forgetting her name now.

Anyway, I ditched the senior award ceremony my junior year and hung out in the library (nerd, I know). When the ceremony was over my friends came in telling me that I'd won an award. I told them they were idiots since the awards were for seniors. Turns out that they were right -- they'd given the award for business classes to me for being the fastest typist. Oooops, guess I shouldn't have ditched!

The Dvorak keyboard layout always gets a mention in these threads, and I generally agree. I thought I'd point out my observation after using it for a few years. I don't find that I can really type faster than I could with Qwerty, but my fingers tend to move less overall, especially when IMing with minimal punctuation. I'm left-handed, and I notice that with Dvorak my left hand moves less and my right hand moves more. Perhaps this bias helps right handers, but hinders me.

I am not a very good typist, but that's really forced me to get very good with keyboard shortcuts and aliases, which really is better for my productivity, typing and RSI.Just an alternate "word-view" :)

I started computing in 1975, now I'm with a certain Washington company.

I know some who touch type and some who don't. The most brilliant programmer I know of types the same way I do, @ the same 30-40 wpm (he could have changed the world by now, at 30, but for alcoholism and general immaturity. Oh well.)

I've tried several times to learn touch typing; I never really got to the point where it was faster (I do use all 8 fingers.) I recently tried again and I'm doing well, except at work: still too slow for that.

I can't see much use for 120 wpm in my industry: what's it good for, except copying blocks of code or slamming down boilerplate. I can't even come up with worthwhile comments that fast.

So, touch typing is great, I'm happy for you, wish I was better at it so vim would really work for me. But the idea that touch typing has anything to do with real productivity (let alone talent) is silly and certainly not in accordance with my 30+ years of experience.

Wait...There are programmers/others in IT that cannot type? That cannot read? How is this even possible? While typing tutors did help some in my childhood (I was regularly around computers from birth, and was typing fairly fluently by 10--I'm a child of the 80's), but honestly, I picked up most of my 1337 typing skills through osmosis during junior high. By high school, I could type things faster than I could write them.

To think that there are still people out there who cannot type just shocks me. That said, I'm mostly a programmer of the Internet, and do most of my coding on my own (pair programming be damned).

That said, while I can type blazingly fast, I cannot code at the rate I type.

I'm a self taught touch typer and is obvious through watching the way I type (for instance using my left hand for the y key). Otherwise touch typing does aid me while coding. But to be honest, I touch type better then I code, so it's not the touch typing slowing me down, rather my coding and thinking while coding is slower than I need to type.

Additionally the game 'typing of the dead' truely inspirational software for learning to type.

I did a two week course at a secretarial school when I was about 13 or 14, the only male in the class of about 60. For the others this was part of a larger secretarial course. They even found an electric typewriter for me when they found out I just wanted to type on computers.

Very useful. No tab completion in shells in those days ... (and dial-up and no screen(1) and ...)

As an undergrad I got tired of looking at the keyboard so I forced myself to switch to dvorak. No more cheating!

Unfortunately there isn't a good time to make the switch. I started an internship at MS about 2 weeks later. Not only could I not touch type I couldn't hunt-and-peck at the start of the summer. I could see the pain on my mentor's face. Better now!

@jp: vlad's suggestion that California was barren in musical culture was certainly silly, as was the article's suggestion that Russian and Chinese academy-trained musicians are soulless.

Moratorium on trading silly insults back and forth? Ok, sounds good.

Back to topic, anyone else have a hard time switching between keyboards? I dunno why, but my muscle memory isn't very pliant; I switch between a laptop keyboard and a desktop keyboard a couple of times per day and it always puts the brakes on my typing.

I also don't know anyone my age or younger (31) who doesn't type. Some of my CS professors were hunt-and-peck typists, though. It seemed weird as hell at first, but I eventually realized that these particular dudes were theoreticians who didn't have much interest in actual computers, which made it less of a handicap.

Finally, does anyone remember a piece of Mac shareware from maybe 10-12 years ago that let you type one-handed, simulating a half-keyboard marketed to people with the use of only one hand? You held down the space bar with your thumb and the other keys would suddenly map to their mirror equivalents? Man, that thing was awesome.

I'm self taught. I can type without looking at the keyboard, or even the screen. My speed is pretty decent, can usually do a sustained 75-80 WPM. But I know my speed is handicapped by my form. I use all the fingers on my right hand to type, but on my left hand I use only the index finger (and pinky for combos).

I've been practacing making my self use proper form with my left hand but invariably I go back to my old style.

The fast, slow, medium training technique sounds interesting. I may actually set aside 15 mins a day or so just to practice.

To those who think that they'll never be able to un-learn their old bad habits: I was in your situation 10 years ago.

The solution? Dvorak. Don't change the physical layout of keys on your keyboard - just remap them in your OS. I went through the transition (surpassing my original speed) in about 2 weeks and now type at 115wpm or so. Don't unlearn your old habits, just learn new ones!

In some kind of weird reversal, my physics and AP chemistry teacher in high school was a football coach. Taught us formulas and reductions wearing sweatpants and t-shirts. Cool guy. Just felt like I needed to share that.

I'd like to offer an alternative viewpoint on the Dvorak layout. I too switched from QWERTY to Dvorak in an attempt to relieve myself of repetitive stress pain.

Dvorak does do a wonderful job of putting the most typed characters under your hand's strongest fingers, and decreases the total distance your fingers travel by a significant amount.

However, it was really the strongest hands on my fingers that were hurting. The index and middle fingers get used a lot, even on QWERTY, not to mention the mouse clicks they perform. And Dvorak puts them to even more work.

Dvorak was more efficient, but that efficiency only ended up putting more strain on my fingers. What I really needed was to diversify what my fingers were doing, reducing the repetitive tasks they perform. And QWERTY, in my experience, has been better for that.

Eventually I read Dr. Sarno and learned my RSI was largely psychosomatic, but that's another story.

OmG this was so libnerartring" I;ve alwahs secreatley looked at the keys sjuttr a littl3 buit int eht past, but now I;m defineteelyat going tto gvie that up! I'm a litle bit woprried about what's going to happen to my variabel rerereferfvernces tho, but - hey! - i just started programming in Python so i Bet that's gonna work out just fine.

1. When you are beginning it's nice to have the letters written on the right keys. Yes, you use them only briefly when learning and then you can touch type and then you are set. But it's a real obstacle the first few days.

2. How on earth do you use emacs or vi or anything with a dvorak keyboard? hjkl cursor movement in vi is logical and makes sense. My fingers are trained for it. With dvorak do you use hjkl still but in crazy random inconvenient locations all over the keyboard? Do you remap the dvorak hjkl to whatever falls under those keys on a dvorak keyboard and rewrite or constantly translate all keyboard shortcuts?

Heh; I used to type with one hand, occasionally using the left hand to hit the 'shift' key. I got up to about 50 WPM, until one day, I felt some pain in my right hand. Touch-typing was the best way to split the load.

I had to switch to dvorak in order to remove the ability for me to easily revert to my old method, as for the first week or so, touch-typing was slower, and I frustrated easily. Now, I'm up to about 80 WPM. If I'm ever forced to use a qwerty keyboard, I can always revert to my old ways. Fortunately, that hardly ever happens.

Now at work, I have a Kinesis board, the one with the two little circular depressions. This, combined with the dvorak layout, causes my workstation to be almost completely unusable for anyone but me. A nice little bonus!

I considered that, but by the time I can spare some cash, I'm doubtful I'll be able to find the old non-clicky version.

Bad enough that eBay is the only replacement option for the Logitech G15 I'm using now unless I feel like buying a replacement Linux-compatible USB-attached LCD and a 131-key USB point-of-sale keyboard... which could get expensive very quickly.

I didnt read through the comments, but boy, you are wrong. I cant touch type. But I can type at around 25-30WPM with ease. I'll rather type 5 lines of decent code, and actually think about the problem before bashing out a 1000 lines of utter rubbish. The true sign of a cowboy coder.

Heres a little secret for you: you use your brain to program not your fingers.

70 WPM would be nice. I'm a self-taught four finger typist. I tried http://www.typeonline.co.uk/typingspeed.php and in three trials got 56, 53, 54 WPM.

The thing that worries me about learning proper touch typing is that I'm 45 and have been typing this way for 27 or 28 years and don't have any problem with RSI -- but several of my current colleagues who touch type are 25 and have RSI.

I don't know whether there is any cause and effect there, but I also don't want to do the experiment and fail it. I really don't think that 60 or 70 WPM is worth the risk.

One of the most irritating things in life is to deal with government workers here in Katrineholm, Sweden who use computers daily but who will not learn to touch type. They become "information barriers" when they slow down to "hunt and peck" for keys on the computer keyboard.

Anyway, your article was dead on right. I've made mention of it via a link on the Katrineholm Uncensored blog.

Any suggestions for good, learning/measuring software? As I'm a student, preferably free or inexpensive. Being a twenty six year old geek who pretty much grew up attached to a keyboard, I touch type through simple experience. I was wondering if I would do better if I learnt a proper system.

I'm actually a bit weird, I sometimes just sit there reading or thinking to myself and I "type" using my fingers. In other words I imagine the keyboard and sort of just type it out. It helps me concentrate, or relax - or something like that.

We actually learned number keys on the numpad in high school. It's faster and easier to learn then the long stretch of numbers at the top of the keyboard. I still use it to this day when typing more than 1 or 2 numbers at a time.

My typing class in high school was very similar except that all of us had to use manual typewriters. It's almost impossible to type 60+ wpm on a manual, especially the old office ones where the key travel seems to be about a foot. Programming was done on an electo-mechanical teletype machine which required about 10 pounds of force per keystroke. On a teletype machine, I could manage about 15 wpm.

Years ago, when I had a brief slacker stint as a tape transcriptionist, I used to beat myself up over my slow typing speed of 80 WPM. The people who really made money at tape transcription could do 120+ WPM.

I just tested myself, I'm still chugging along at 80 WPM. I still got it, baby! And yes, being able to type has made a difference in my career. Just not as much as it used to.

So now I can get back to studying all that Math that Stevey goaded me into tackling.

As a musician, I can tell you I have never, ever seen anyone practice in the 'fast/slow/medium' technique you've attributed to professional musicians. No-one starts a piece with the intent of making it through to the end without caring about mistakes, just the end. What would be the point? You'd just be training yourself for gibberish.

Secondly, when you have more than one voice at a time (say, playing a piano) then the concept of 'just playing it as fast as possible' doesn't even come into a new piece. You start slow, then keep going through slow, and then get a bit faster, but still on slow. The key is no mistakes, not speed.

Thirdly, typing speed means jack when it comes to coding. I can type at 80wpm sustained with no problems (and no, it's not Dvorak; it's a natural Qwerty keyboard) and yet I don't hit anywhere near 80wpm on a coding session. Why? Because the brain is involved in thinking, not in typing. Unless you're just sitting down and typing out a listing from a computer magazine (and we stopped doing that in the 1980s), you're thinking and flowing your code. Not to mention 'words' don't really have a concept in coding most of the time, unless you're just treating word=5chars (4+sp)

What really speeds up a programmer is not using the mouse; if you know the keystrokes to open up the refactoring window and type in the name and hit enter, you can refactor sub-second. Anyone who uses a mouse has a second just taking their hands off the keyboard to reach the mouse.

But seconds really, really don't matter. Most of the speed of coding doesn't come from typing speed; it comes from designing it (mentally, not necessarily UML) and being able to translate that design to the computer. Given testing, you're really looking at an iterative development of code, understanding failures, re-trying etc. All of that is way more overhead than who can type a line of code the quickest.

I agree with the point that programmers should learn to touch-type, not just two-fingered pecking. Dvorak is cool if you're into that sort of thing, but I can out-type my Dvorak-hitting buddies and I don't suffer from RSI either - it's not bad, but it's not good either. It's just different.

But the rest of the article is unsubstantiated waffle with no background justification, either musically or professionally.

Nice article, Steve. You brought up some sordid memories from my high school days.

What I remember from typing class in high school (circa '82) is we were graded on speed as well as our ability to properly format a business letter, a document with footnotes, and other things a secretary might be called upon to type up for her boss.

I just wanted to improve my typing skills because I was a computer guy.

So I got a C because I couldn't sustain professional typists rates, and the next semester they started offering a Keyboarding class, which was like typing but without all the business correspondence creation, since by that time, my HS had a PC lab, with word processing software that handled that pesky formatting.

That may have been my first "off-by-one" error. The year after I graduated, they began offering AP Computer Science.Life mocks us, from afar, and up close.

I'm a touch-typist (real touch-typists type on a Das Keyboard), but I think these types of debates miss the point that programming and even normal typing is full of punctuation characters and control keys that break up the flow. These keys are often in different places from keyboard to keyboard (don't get me started on laptops) and force you to move your hands from the home position. Even if you can successfully avoid using the mouse, when every tenth key is a '\' or a HOME it really busts up your pace.

This is why I laugh when people boast about boosts from using those wacky Dvorak keyboards -- if you're going to spend half your time dashing to hit the arrow keys and punctuation anyway, what difference does it make how the alphabet is laid out.

Question -- how many of you TTs actually hit the BACKSPACE key with your pinky?

Good article, I like your writing style (you can really tell you 'type nearly as fast as you think', because your article sounds like what you're thinking). Next time I see someone struggling to type I might bring up some of the points you've made.

Once I took 3 programming intensive courses (compilers, game design and robotics) in grad school. It was like playing Doom with the monitor switched off. I was looking up and down for every character I typed (two fingers of course). So I set everything else aside and did nothing but type for a week. I'm glad I did that.

>I'm talking about those those world-class ones, the kinds of musicians that were trained in academies in China and Russia and have all the technique of Japanese robots combined with all the musical soul of, well, Japanese robots.

That is kind of silly remark. It suggest that musicians form China and Russia are soulless. I strongly disagree with that.

Would you say that a street performer who works with trash cans and makes good rhythms on the fly performs better then someone who delivers the show according to the notes in the book because "he has more soul in it"?

To perform well you need to make sure you know the base technique. Before you start drawing "abstract" portraits the way you want you need to be able to draw simple ones and prove that you have the skills.

It's all good (ok, the thing about fast/slow/at-speed was a little weak).

I just wanted to point out that applying a minimalist approach to programming isn't always a side-effect of not being able to type. Once you realize how slow you actually code, even at 120 wpm, life is often too short to spend it duplicating variables, creating excess methods or making redundant comments. A minimalist approach, with just enough stuff, is the most optimized version of coding. Why maintain stuff if you don't have too, just get rid of it. The delete key should be the one you use the most often.

I learned to type in junior high, taking a typing class using purely mechanical typewriters with blank keys. Back then, I think I was going at 60wpm.

Fast forward to today, I now use a Kinesis Advantage contoured ergonomic keyboard. That switch, alone, probably added 20wpm to my typing speed and also reduced stress while on extended typing binges. (Back in college, I managed to give myself bilateral tendinitis. Picking up a toothbrush was too painful. Now I'm better, but it was a long, slow slog back to health.)

Today, I tried one of those typing speed links, and I cranked at 97wpm -- not bad. I'll modestly agree with Steve that being able to type at speed is a feature. It means that you can get thoughts written down as fast as you can think of them. The only thing I can't quite do is transcript spoken English in real-time. That seems to require higher speed. Luckily, I don't have to do that too often.

I'm about a 60 WPM typist. Never took any classes, and I'm not exactly a touch-typist, I've got my own style, but I never felt like taking the time to learn. Still don't. And I disagree about how much time I'd save by getting up to 120 WPM. I can type text at 60 WPM, but there's simply no way I could type code at that rate. I don't think it's that I'm not smart enough. It's probably that I'm just more deliberate about how I write my code. And that slows me down, but I'd argue that I produce better code as a result. I almost never settle on the first thing my brain comes up with as a solution.

So I'm one of the non-typers, full disclosure I've got a nasty form of dyslexia that interferes with writing. However self-justification aside I'd say typists give off a much worse odor then non-typists. You've just gotten used to the stink because everywhere you go there it is. Your earlier complaints about code size being the worst thing ever makes having facility in banging out code not such a good thing. Being pretty much incabable of thinking and writing simultaneously forces my to come up with desgns that fit entirly into my head. In my current project I've reduced code size 90% and we are hitting deliverables at roughly twice the rate management can hand them out. Typists are handy for rough drafts though.

Colemak is strictly superior to Dvorak for the alternate keylayout inclined—especially if you've already learned QWERTY. I never learned to type that properly and was always frustrated by the fact, but three years ago I finally sat down and learned Colemak in less than a week. I was typing 30 to 40 wpm then and now I'm 60 to 80 easily. I haven't tested myself lately, but Colemak is just so much more elegant and less wasteful of your finger movements. Colemak is an intelligently designed keylayout.

I hit backspace with my ring finger. It surprised me to find out, but I have a pretty big hand, so it's more or less exactly where my ring finger ends up if I outstretch my hand from home-row position, not moving the position of my wrist at all.

@alblue I am a musician also and have not heard of this particular practicing technique, but some similar.

Regardless, Steve is right on about typing speed affecting your productivity. I have been teaching a few programming classes recently and the kids that can type reasonably well (say at least 30wpm) can finish typing some code and still remember the point of what they typed. The people who can't type (and their hunt and peck skillz are near zero too) can't even remember what word they just pecked out, let alone why they did it. It's like being thrown in the deep end without knowing how to float. You don't have to be a particularly fast typist. Technically you don't have to even have good form, from a productivity standpoint (although good form is your best defense against RSI, in spite of the fascinating rationalizations we read in the comments here). You just need to be able to type fast enough so that the typing isn't a barrier or distraction. 30-40 wpm is probably good enough (I type 65 on average, so I probably wouldn't know an exact number).

If your editor doesn't feel like an extension of your brain, then you either are typing too slow, using the wrong editor, or both. Period.

I don't touch type not because I don't know how, but because of a hand injury which prevents me from touch typing at any great speed. I two finger type faster than I used to touch type because of more years of practice, however I do have to look at the keybd when I type which does cause some problems on occassion.

My dirty little secret is that I hit the B key with my right hand. (Probably a holdover from NetHack.) Unfortunately, that makes most of the split keyboards almost impossible to use. Then again, I also have trouble with keyboards that don't have the backslash/pipe key between Enter and Backspace, computers that don't yet have Caps Lock remapped to a third Control, vi/vim installations that don't yet have jk remapped to Escape, and other disruptions of my routines...

There are really programmers out there who can't touch type?? My 10 year old sister has been able to touch type since she was 5.

My high school did us all a big favor in the early 90s. They removed the labels from the keyboards in the library. So if you couldn't touch type, you could use the keyboard. Some got by just using a mouse, but nearly all of us just learned to type.

Dammit spelling errors. I guess I'm the one who can't type. Because the keyboards had no markings on the buttons, if you couldn't touch type, you could NOT use the keyboard. Which back then basically meant you couldn't use the computer.

As a conservatory grad, I will agree with AlBlue that serious musicians start slow and gradually work up to speed, but this was a minor detail.

Steve's "slurs" against people and things from Russia, China and Japan were clearly jokes (or at least clear if you are familiar with the customary tenor of his posts) and would only raise the ire of those seeking excuses to have their ire raised, unless their meaning was misconstrued. I too will try GNU Typist.

Dvorak is only nice if you don't go anywhere. I would say don't bother if you're going to find yourself on random people's machines at various times. If all you do is program on a workstation that you always have full control over at all times - go right ahead, Dvorak up. But expect to run into terrible keyboard remapping problems when you play games that assume a QWERTY layout.

Fun little post. I especially like the lower bit about not being able to read. I've encountered unknown thousands of people, coder or no, that are militant non-readers. They're PROUD of it.

But the upper part ignores people like me. I can't touch type. I don't have to look at the keyboard. I can type 80wpm. But I don't do the home row, and don't know how. I learned naturally from raw experience and just evolved my own typing style. On Reddit I leave comments that make grown men weep they are so very long. I am constantly involved in multiple online conversations, it is one of my favorite past times to have discussions with people online. And I produce tons of code as well.

So, no, you don't have to learn to touch type. But, if you don't, then instead of the 30 minutes a day for 30 days that it takes to learn (at least in pubescence when the brain is at its optimum for learning) it will take you, I would approximately guess, at least 10 years. 12 hours a day.

Go play a MUD. They're fun and you get to type a lot. Hang out in chat rooms and online discussion forums too. You'll evolve a pretty efficient typing style after awhile.

I do type numbers quite slowly though. I don't have enough experience with the number pad to enter numbers very quickly. My usage of the numeric pad was mostly for directional movement in roguelike games.

well, I am not a programmer, but I work in IT, and do web design on the side, and I can not type to save my life, I can hunt and peck, using 5-6 fingers at over 85 words a min, and my hands do not hurt afterwords like many people I know who can type...

I've been curious to learn Dvorak for years now, but have been perhaps resistant or just plain lazy.

I guess my biggest question regarding Dvorak is that while it improves speed/accuracy for typing words, how well does it play with the Ctrl/Alt/Cmd keys? Do combinations like Ctrl-S now become more difficult?

Dr. Nichols: what did you have in mind? Leonard McCoy: Perhaps the professor can use your computer? Montgomery Scott: Computer. Computer. Ah. [McCoy hands him a mouse and he speaks over it] Hello, computer. Dr. Nichols: Just use the keyboard. Montgomery Scott: The keyboard. How quaint.

This post is what I believe is called "jumping the shark". Especially the bit about soulless Russian musicians. And the idea that you need typing skills to format your code properly -- it's hilarious. Your editor should handle the code formatting.

I believe a lot of us readers have to step back and (as per the site's title) should assume that mr. Staigey here is in ranting mode, which should kinda indicate some of the content either be misleading or inproperly articulated -- whether intentional or not.Anyways, I think the musician-metaphor doesn't go very far in this case, for reasons other than being pointed out already by other commenters (AlBlue being the one I agree the best): the main problem seems to be that "generating musical notes" is the only _defined_ operation in the domain of playing an instrument. The usage of the input devices of your computer doesn't stop at writing. I don't really want to see people farting out code two tokens a second (unless they're the type who like to keep the undo buffer hot), but I really want to seem them able _edit_ code at like a 1000 keystrokes per second _on average_. Learn the default shortcuts of all your damn applications, never use your damn pointing device again, never stop the flow. Of course being able to write natural English text at a very fast rate is a solid foundation for all this stuff, but high wpm alone won't give you the competitive advantage imho. See those youtube shredders having no mojo whatsoever won't really become Steve Vai just because they can play like straight sixteenths at 300 bpm and eat and masturbate all at the same time.

Nice post (as usual). I second your opinion: honing your skill with the very basic tools a programmer uses in her/his work can help a great deal.I always thougt that the keyboard is very important, and that a cheap one could greatly hinder productivity. Of course a good keyboard can't work miracles if the typist is slow.I measured my typing rate and found it quite disappointing (55wpm), so I decided to train and improve.

I'd like to add a couple of elements to the discussion, though. First of all: typing what you are reading, what is dictated to you and what you are thinking (e.g. the reply in a chat, or a bunch of lines of code you have in your brain) are three different things.

And typing in different languages (human and computer languages very much alike) can be quite different.

My father was an executive assistant who knew both typing and shorthand, and made me learn them both as fun things to do in summer. So I learnt typing on those clunky old mechanical typewriters, and arguably have a longer-enough transition to keyboards. So I have to say this:

1. Knowing to type helps. You dont have to hunt-n-peck. Means you can do documentation and blog posts better'n most non-typists.2. But it does not define you as a programmer cos of the reasons given by some others in the thread - typing code is not the same as normal typing, and most typing courses are geared towards typing prose. The "word followed by space terminated by period" is the rhythm of typing, not "word followed by myriad special characters, punctuated by tab or newline".Especially when the words are usually small, and the only time you get to type long words are when you use Spring classes, and even then its wordsStuckTogetherInCamelCase which is not the normal typing rhythm.

So i wouldnt call it jumping the shark, but steve, you're pushing it, man. the brilliance from your other posts is diminished by statements like "if you dont type, you're not a good programmer"

In the past, I tried to learn touch typing, but I found it impossible for two reasons:

1) My conscious self, and my fingers would disagree on the position of the keys. My fingers were more likely correct, but my brain would not release control. Even now, should I start thinking about it, I will loose the flow.2) I find standard keyboards position the keys so they are impossible to strike properly; each row is skewed a little different, so I had no hope of hitting only one key at a time without looking.

Since then I got a special keyboard, the Kinesis, which put all the keys in reach (due to it’s concave shape) and have all the keys in straight columns. Finally, I could hit the a key without striking it’s neighbour. Due to the convext shape, seeing the keys was extra labourious, so I forced myself to learn touch-typing.

It took me *over a year* to learn touch typing, and I still suck at it. You musicians are lucky to have the innate somatic skill that allow you to pick up typing fast. There is a small portion of us that do not have that skill, and learning strokes are very hard and time consuming.

Hear, hear, Yeev! I'm a partner at a software company in Alabama, and we've run into this multiple times. We've actually hired developers with good resumes and good references from technically astute former-bosses that couldn't touch type if I threatened castration. And you're absolutely right, it showed in other ways.

There was a guy who didn't test his code very well because testing is typing is hard! There was a girl who just took too. long. to. get. anything. done. We're a small (growing) software house, we don't really do things slowly. Can't afford to.

If nothing else, if you can't touch type you sure as hell can't use vim effectively.

Ha! Learning to touch-type was mandatory at my school in the 90's, but they only bothered with letters. I had to learn my numbers by trying to program Perl in the dark. When you can't hit $ @ % with accuracy, your variables become your speed bumps.

I've also been using Dvorak for ~5.7 years now and can type about 95 wpm if I know what I want to say. I think the last measurement of qwerty speed I ever made was in the 60-70 wpm range, but I can't remember when it was.

I find that I type fast enough most of the time, but occasionally I can't type fast enough to keep up with my thinking. The problem is that if I have to slow my thinking down, that throws me out of the zone and I end up losing much more than just the time it takes me to type.

I desperately want a keyboard with a split space key. I used one for a few hours in a computer lab in '98 (Compaqs I think). The left half was backspace and the right was space. A week later I was still hitting space when I wanted to delete. I found such a keyboard for my pre-USB mac at the time, but I have never found a USB version. Today I use my right thumb for space and left thumb (Control-space + keybindings) for backspace. And yes, I am totally useless at someone else's keyboard.

Why the heck do we need two keys for space anyway!? Actually I think that the space key could easily be made into 4-5 keys. Maybe I should spring for a Kinesis or Ergodex.

Yeah...I can see how the generalizations could make sense up to a point. But I think there's probably a fairly low cutoff speed after which faster typing speed gets diminishing returns when you're programming...just because there are enough natural breaks when you're typing in code that you're likely to be pausing anyways (to think about what you're doing, compile something, run something, whatever). It DOES seem like it would lead to heavier participation in discussion forums though.

Sounds like my high school experience was similar to yours though...but mine was about 1978. The class was a full year class and the teacher said that her goal was to have everyone typing at 50 wpm (or something like that) by the end of the year. I had that down without a problem by the end of the semester and dropped the class to go be a TA elsewhere :). I remember learning to touch type on the keypunch machines over at the university and got pretty good at that (but it's a real pain when you drop your card deck :)).

Anyways...my daughters are 14 & 17 now -- they started teaching them keyboarding skills in about 3rd grade in our school here. I don't know that they both hit the 60-100wpm range, but they're both comfortable with touch typing and spend a lot of time with it.

It'll teach you to type japanese faster, which won't really help with common English letter patterns.

http://somoe.org/typing/

For what it's worth, I'm in the I don't touch type camp. I tried and it made my wrists hurt.I am a fan of picking up a martial art to prevent wrist pain before it becomes critical. I've found that it's not the action that hurts, it's the lack of other actions.

Also, DVORAK is superior but it moves my vim keys and my programming ()[];'" letters to less desirable locations.

For me, being able to type without the need to look at the keyboard has been a real pleasure for years.

I'm truly sad for the huge amount of people who spend most of their time looking at their alphabet while they could instead enjoy countless hours of mail spam, adware, porn popups and so on... ;)

Now that being said, as a programmer, being able to touch-type liberates your train of thoughts. Moreover, combined with good 'shortcut skills', it gets you a huge productivity boost (even though I then end up waiting for the computer to wake up, thanks to my IT department not sensitive enough to my computer's lack of RAM, but that's another story :p).

There's so much you can do while another developer would spend two more minutes fighting with his keyboard to get the curly braces on screen.

You've put the last straw on the back of my laziness! For long I've been watching my touch-typing younger colleagues with envy, so today I'm determined to start learning.

You're correct that two-finger typists are less efficient and have to sacrifice something. In my case it is usually not something related to my work (like comments in code) but rather time otherwise spent for myself and my family.

I think you're absolutely right about the speed you have when you actually know how to type. I've been typing since high school, and I can't imagine how much time it would have taken me to do much of the programming I do without knowing how to type.

One other thing that has crossed my mind is the use of programmer's text editors like Vim or Emacs. I use Vim and GNU Screen because they exponentially increase my speed and productivity; but I can imagine that such tools would severely hamper non-typists, so they could never experience the advantages that the use of such tools provide.

I type reasonably fast but with a high error-rate (and therefore a high backspace, ctrl+backspace, ctrl+arrow key, ovr/ins toggle, etc rate) I glance down at the keyboard every now and then, especially when I begin or after I am forced to mouse something and so on.

I suppose I *could* go back and learn a more formal style of typing but I think I'd rather spend that type replaying the StarCraft single-player campaign ^^

The real issue is when programmers, some of whom are brilliant, avoid the "online development community" because they don't like the computer, and can barely use it.

They're doggie-paddling through keyboard interaction and don't spend enough time out in the deep end to communicate effectively with other developers online.

They're a dying breed as far as I can tell. I'm also 25 and am shocked that ANYONE ANYWHERE in IT can't at least psuedo touch-type. Everyone I know can type by accident, despite learning in school at some point. I don't know a single home-row person, and actually know a few who wish they could thumb-type on their computers because they've gotten so much faster with their (QWERTY) phone.

When I went to bootcamp for the Navy many years ago I was assigned the position of "Yoeman", or secretary, for my company because I could type. Instead of running around and doing jumping jacks and spinning rifles around all the time I got to sit in some strange little "office" room under the stairs of the barracks and pick through the contraband in peoples care packages with a certifiable lunatic hillbilly from Kentucky who never should have been allowed into the military, but somehow he had learned to type too. Probably on account of he was smart as a whip, despite is insanity and back woods sensibilities.

Now-a-days I wouldn't have been in the minority; just about every young person can type well enough to claim it. I'm not sure what sort of experiences you have had with one-finger-typists, but I haven't met a programmer that couldn't type that would benefit much from your post. A programmer who can't type is in the wrong field in the first place if you ask me - asking people like that to learn to type now is like telling someone who is immature to "grow up" - good advice, probably, but you might as well yell it at the cat because you can't guilt someone out of their "profile" of lazy disinterest in the fundamental forms of their profession.As always a thoroughly enjoyable read though. You should write a book for O'Reilly in your blogging voice, it would be such a refreshing way to learn something new.

Steve, definitely you are the Paul Graham of our time, the Paul Graham 2.0. Maybe some million dollars apart, but you still can do it. Plz retire from Google, start a startup (maybe a online store!) and sell it to Yahoo! ... and stop typing and start painting, stop ranting and start writing essays and finally become a VC and ... fade. :D

A full article, over 150 comments, and the only link I could find on the page to a typing software was a single link from the article to a wikipedia page on one, and a game-based one at that (which may not suit all people)?

Give me a break, if you're going to rant and preach, at least give some links to relevant software, especially one that you personally recommend. I can already see a comment a few days from now: "I spent hours trying to learn touch-typing from {this software} I found using google but I still can't type and my hands hurt!", followed by "Oh that one no no you shouldn't use it, it is awful!"

Actually, I don't agree. Touch typing is not that important for programming.

I'll admit it... I can't touch type all that well. I'm only telling you to be honest. But I'll also tell you this:

Typing code is faster with "non-standard" hand positioning and key presses. Code is not English.

I'm one of the few IDE users surrounded by VIM people. I hate VIM. VIM people hate IDEs. When it's time to code, I blow the freaking pants off of them in productivity and speed.

The thing is, touch typing is the side effect of a tool that was created for input. I hate it when people view it as anything more. They thing that other forms of tools created for input are somehow less "credible". An IDE is an evolution in the tool that we use to input code. And when something better comes along, I try that. One day we won't have to type at all... we'll thing the words and they will appear. Will you still use a keyboard then?

Another thing. I noticed that touch typists make a TON of mistakes. They hit that backspace key more times in one paragraph than I do in an entire document. Sure, I hit delete... when I want to delete something. They use the thing like the space bar is going out of style.

In any case, I can also type fairly quickly... no, not the quickest, but good enough not to be "embarrassed" in front of a touch typist.

I'll have you know, woodshop was rad. Didn't like the table saw (while using it I would have visions of disaster); but the lathe, drill press, planer, sander and bandsaw are something you never regret knowing how to use.

They tried to teach us how to type in middle school, but all I ended up doing was fiddling with the computers settings. And by messing with the settings I mean taking a screenshot of the desktop, making it the wallpaper, and hiding all the icons I could.

Oddly enough, wyvern taught me how to type as fast as I do. Nothing is as motivating as knowing that a few comments could throw off your oh-so-very-clever pun, so it must be typed now!

When I had a class on touch-typing in high school (taught by the same woman who taught home economics), I didn't really learn much more than which row my fingers should be set at and that I shouldn't look at the keyboard if I could help it.

I didn't really end up being able to type very fast at all in class; it was mostly a mindless grind.

What got me to the 80wpm I type at today was AOL back in 1995; my first ISP and the first time I ever could communicate with other people that wasn't verbal or hand-written. A couple weeks trying to keep up in chatrooms, and then another couple weeks juggling 5 to 8 instant message windows at once taught me really quickly; and all I consciously did to practice was remember to keep my fingers on the home row. I know I don't type the right keys with the right fingers; for example, the q key gets hit with my ring finger, not my pinky; but the fact remains that I consider the best practice to be not typing software where you type a paragraph over and over, but rather, trying to sound like an intelligent and well-spoken human being to the impatient gits on the other end of the screen who are waiting for your answer.

I am not a coder; well, not in programming languages anyway, the code I do is all XHTML. Though I am looking into getting employment as a typist, and was flabbergasted to find out that the wpm requirement of most typist/clerk jobs I looked into were only 40-60 wpm! I can't even imagine typing that slow anymore.

I agree with you wholeheartedly that if you're going to use a keyboard for anything other than a conversation peice, LEARN. TO. TYPE. After reading this blog, I'm now looking into practicing Dvorak, for gits and shiggles, but more than likely I'll end up sticking with it.

I type 90+ wpm *without* touch typing and I only use 5 fingers (index fingers, thumbs, middle finger on the right hand). This article is seriously flawed in that it basically assigns anyone who doesn't touch type into the category of slow typist or hunt-and-pecker, which is kind of an odd assertion to make since I've worked with a fair share of good to great programmers who were like me in that they typed fast without typing properly.

Even if I could only type 20 wpm, though, I just don't see how typing would be the bottleneck in crafting code, so I feel your article also fails the premature optimization test. Given the choice between learning to touch type and learning to actually create better code by reading up on other topics, every programmer's time would be better spent learning other things because typing speed is never going to be any serious programmer's actual bottleneck/hotspot. Typing 100+ wpm is spectacular for taking dictation, but completely extraneous for programming.

> But it seems to me that every thing you don't> have to think about frees up cognitive> resources you can better spend on other> things... like good code"

Absolutely!

But I'd put all the following ahead of an incremental increase in typing speed:

- automatic memory management- powerful signal/restart/exception system for robust error handling out of the main line of the code- minimizing the use of assignment- closures- function combination- type inference- transparent migration (no syntax difference) between direct field access and setters/getters- generic functions, not member functions

Come to think of it, most of those result in having less code to type, less code to read and understand later, less code to maintain...

SteveY...have you ever thought about staring at the little black hole in the sun from about 21 degress north of the equator floating in a canoe on Lake Arenal, Costa Rica, adrift?NASA asked me to mention it. Chase me down...it's on the house.

@alex, I just touch-typed your code in the dark in 220 seconds. (That's about 28 WPM at 507 non-whitespace characters and taking English to be 5 letters per word on average.)

I think touch typing is of great benefit. I can look at the screen the entire time. I catch errors as I make them. (I also have a tighter feedback loop in learning not to make errors.) Or, I can look at something to transcribe it. The process of coding unfolds visually at a higher framerate than when looking alternately down and up -- I see structure the entire time and flesh it out without taking my eyes off and then having to remap my mental and editor models. I never have to hunt for funny characters: they're all in my muscle memory.

I recommend every knowledge worker learn touch typing. (I recommend anyone using a keyboard learn touch typing and bring yourself closer to knowledge work.) And I recommend if you're going to learn touch typing you had might as well learn Dvorak while you're at it.

This article sounds too opinionated for no good reason. I am was using computers for about 10 years now and in the industry for about 5;

(a) never learned to touch type... I can type 60wpm with two fingers plus others instinctively for some keys (correcting typos included; just tested on some online test), the only drawback is that people comment that it sounds as if the keyboard is about to break. I have actually bet to beat touch typers and won in the past, althoug of course I won't do 120wpm(b) From my experience, I spend much more time thinking, drawing on a scratch pad or reading code than merely typing; when I make design docs or send emails to discussion I spend much more time refining them, making sure everything is correct and removing unnecessary text than typing.

the asian commentary is always one of great scrutiny...just got to get one of those typewriters if i want to keep up with the chinese jones's...i especially enjoyed his take on the asian mind's preoccupancy with sex...costa rica sounds better every day...Lake Arenal...sweet getaway...as usual,sangye.

Any loser who claims they are touch typing when they can't use all the digits of both hands on the keyboard are fooling themselves.

It is almost universally true that people who cannot touch type properly make awful programmers. But this is not for the reasons you may suspect. By mere virtue of the fact that they are unable or unwilling to train their brain to accomplish this simple task precludes them from ever being anything more than a 'code monkey'.

When someone willfully does not develop a skill that is both useful and easy to master, that is a person you don't want anywhere near code.

So to all you 2-4 fingered 'touch typists', please go find another profession. Please.

Likewise, you could argue that people who make comments like that don't make good programmers either because they don't work well with others and haven't made the transition from "code monkey" to "professional".

rudolph: no, it doesn't mean anything of that sort. Perhaps they are correlated (because they may have a common cause) to a small degree, but the conclusion drawing in the comment makes about as much sense as "almost every developer who is using non-command-line (Quicksilver, slickrun, whatever) program execution utility is awful - if you can't teach your brain elementary skill and instead waste milliseconds clicking, you will be nothing more than code monkey."

Interesting that, to the contrary to your comment, if you are a hypothetical "code monkey" (whatever exactly that means) all you do is write small chunks of code to more-or-less precise specs or pile together hacks in yet-another-CRUD-PHP-app (depends on what you mean by code monkey, but it holds for both case). When you rise a bit above that level, you start to think more and type less, in relative terms. The further you go either as senior dev, architect who barely writes any code or dev lead/manager, the less code you actually type relative to other activities like design, thinking, communication or whatnot.

If typing is nearly irrelevant on the first stage, on the latter it just entirely makes no difference whatsoever above a certain speed. Out of my backlog of someday projects, I'd rather learn Latin or write something in Brainfuck, sorry - that would be more useful.

I learned to type in Spanish on a manual typewriter from a course which consisted of passages from Don Quixote.

And surprisingly enough, it is doubtful if modern software would have made things much quicker. It's about muscle memory and there's a limited amount per day you can practise. Typing on a computer keyboard is more comfortable than on a manual one, and you can reach higher speeds, but the initial process still takes pretty much as long; maybe you'll do it in 20% less time.

Incidentally Mavis Beacon is way ahead of anything else on the market.

I have to take back part of what I said about complete uselessness - Ifound that touch typing can be useful because when you touch type it's much easier to seat straight, so I presume your spine will not suffer as much in future :)

I have worked with several folks who pound away on the keyboard using only their index fingers. One guy pounded so hard on an old IBM clacky keyboard for a 3270 terminal that we snuck a rubber mat under his keyboard to reduce the vibrations transmitted from his desk through the walls. Non-touch typists also tend to treat mousing as a fearsome ritual, often placing the mouse a full arm's length away. When they need the mouse, they stop, look around for the mouse, grab it, then wiggle it around to find the cursor, then sloooowly move it in a serpentine route to a spot near (not necessarily on) their click target and then click while shoving the mouse forward, sending the cursor to the far corner of the screen.

Wow...beautiful man! Programmers that can't touch type fit a profile...very profound...and true. Miss Brown taught me (I thought I was taking Personal Typing, turns out I was in with the hard core folks who actually wanted to type for a living!).

Hunters and peckers are still out there believe it or not and it is absolutely painful to watch their pathetic search for the freakin' T when they've hit a friggin' hundred t-t-t-times!

Touch typing is #5 on my list of ESSENTIAL skills of the professional programmer!

I'm not sure how useful being able to touch type is going to be for me, as I type pretty quickly even though I don't make use of the form dictated by many typing purists. I'm going to give it a go anyway though.