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.

Despite this potential pitfall, Typing definitely sounded more appealing than Tourniquet Shop.

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.

Well, they practice like this: Fast, Slow, Medium. Fast, Slow, Medium. Over and over.

That's how they practice.

It's kinda like Goldilocks. You remember her, don't you? That little girl in the fairy tale that got eaten by bears? Too hot, too cold, just right. That's how musicians practice.

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!

204 Comments:

Anonymous Anonymous said...

Wow, no comments? They must all be stuck on that bit about the "home row." Oh well... here's hoping some of those non-typists make it all the way through this piece.

6:16 PM, September 10, 2008  
Blogger Rizal said...

The quick brown fox jumps over the lazy dog.

6:24 PM, September 10, 2008  
Blogger Unknown said...

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.

Note that I'm not really smart enough to type code at 70 wpm.

6:25 PM, September 10, 2008  
Blogger Alexandre said...

First you play the lick as fast as possible. [...] Next you play it as slow as necessary.

This sounds like good typing exercises for improving speed and accuracy: certainly worth a try.

Today Yeev types about 120 wpm.

But for how long? I can sustain 100 wpm, but for only 20-30 minutes. Past that, my arms are in pain. I usually cruise at 60-70 wpm, when working longer hours, for that reason.

And, you are right that there are no good reasons to not know how to touch type. Me, it took me not even a week to learn. I pity the poor programmers, I see once in a while, who still finger type.

Oh one more thing, will you ever post your Emacs typing speedometer you once praised in one of old drunken blog post? I am sure I am not the only one who would enjoy tinkering with it.

6:27 PM, September 10, 2008  
Blogger James said...

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...

Oh, and I second the request for your Emacs typing-timing dealie!

6:40 PM, September 10, 2008  
Blogger Eric TF Bat said...

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.

6:44 PM, September 10, 2008  
Blogger Peter said...

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.

6:45 PM, September 10, 2008  
Blogger clumsy ox said...

OK, you convinced me, I'm going to learn to type.

6:49 PM, September 10, 2008  
Blogger Roger Pence said...

Steve--

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.

rp

6:49 PM, September 10, 2008  
Blogger Unknown said...

1+ typing.el

Some questions unanswered:
1) What about RSI? Touch-typing could be harmful?
2) You did not explained about "ion" :)

6:51 PM, September 10, 2008  
Blogger noah said...

Not trying to offend anyone here, but I've never encountered a person (programmer or otherwise) under 30 that can't touch type. Could this be an age thing?

6:56 PM, September 10, 2008  
Blogger Sean said...

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).

6:59 PM, September 10, 2008  
Blogger jldugger said...

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 ;)

7:01 PM, September 10, 2008  
Blogger Unknown said...

it's easy to choose between "hunt-and-peck forever" and "type fast for a few years and loose you profession"..

my hands hurt.. i'm actually using viper, but it's hard to escape from C-g and C-x b

7:01 PM, September 10, 2008  
Blogger jwz said...

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.

7:02 PM, September 10, 2008  
Blogger SDC said...

I skimmed this article and now understand the verbosity.

I <3 twitter for forcing people to keep things short, as in brief.

7:02 PM, September 10, 2008  
Blogger die schnalle said...

i always liked http://typera.tk/ a lot. it's free too!

7:04 PM, September 10, 2008  
Blogger Vlad Patryshev said...

This comment has been removed by the author.

7:14 PM, September 10, 2008  
Blogger Unknown said...

apt-get install typespeed

http://play.typeracer.com/

--Robert

7:19 PM, September 10, 2008  
Blogger Dave Doolin said...

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.

7:19 PM, September 10, 2008  
Blogger Tim said...

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.

7:35 PM, September 10, 2008  
Blogger Alek Davis said...

"[...] 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).

7:41 PM, September 10, 2008  
Blogger Ryan T said...

I am a young programmer (25) and I do not think I have worked with anyone technical person who cannot type. This includes college courses and my current job.

7:54 PM, September 10, 2008  
Blogger JP said...

@vlad
If 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.]

8:06 PM, September 10, 2008  
Blogger Geoffrey Wiseman said...

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.

8:31 PM, September 10, 2008  
Blogger Brennan Falkner said...

"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.

8:32 PM, September 10, 2008  
Blogger Unknown said...

You, sir, are my hero.

8:37 PM, September 10, 2008  
Blogger Unknown said...

You, sir, are my hero.

8:38 PM, September 10, 2008  
Blogger Aaron Davies said...

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.

8:38 PM, September 10, 2008  
Blogger With Respect to X said...

My typing is adequate, but not good.

The tests at:
www.typeonline.co.uk/typingspeed.php?

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?

A worrying thought.

8:41 PM, September 10, 2008  
Blogger cam9393 said...

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.

8:44 PM, September 10, 2008  
Blogger Aaron Davies said...

@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.).

8:51 PM, September 10, 2008  
Blogger Florian said...

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.

8:57 PM, September 10, 2008  
Blogger Philohobo said...

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'.

9:01 PM, September 10, 2008  
Blogger TwoWheels said...

Paradise? As in PHS in northern CA?

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!

9:04 PM, September 10, 2008  
Blogger foldersize said...

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.

9:09 PM, September 10, 2008  
Blogger Sameer Gauria said...

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" :)

9:16 PM, September 10, 2008  
Blogger Unknown said...

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.

9:17 PM, September 10, 2008  
Blogger Warren said...

This is the most fun I've ever had learning to type faster: http://www.typeracer.com

9:18 PM, September 10, 2008  
Blogger Unknown said...

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.

9:23 PM, September 10, 2008  
Blogger Unknown said...

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.

9:31 PM, September 10, 2008  
Blogger Unknown said...

Do programmers really not know how to touch type? I've never encountered one!

9:32 PM, September 10, 2008  
Blogger janm said...

Yes.

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 ...)

9:33 PM, September 10, 2008  
Blogger Marcus said...

You've piqued my curiosity w/ the Fast/Slow/Medium. Do you know if there's a name for that technique?

9:37 PM, September 10, 2008  
Blogger Tom said...

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!

9:49 PM, September 10, 2008  
Blogger Unknown said...

@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.

9:52 PM, September 10, 2008  
Blogger Unknown said...

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.

9:59 PM, September 10, 2008  
Blogger steppres said...

TL;DR

10:03 PM, September 10, 2008  
Blogger Unknown said...

I've been using another (lesser known) alternative keyboard layout for a few years now called Colemak. Checkout the Colemak FAQ page for a list of how it compares to Qwerty and Dvorak.

http://colemak.com/FAQ

10:06 PM, September 10, 2008  
Blogger Unknown said...

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!

This was my training ground: http://www.gigliwood.com/abcd/abcd.html

10:08 PM, September 10, 2008  
Blogger Justin said...

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.

10:23 PM, September 10, 2008  
Blogger Lonely_Android said...

Steve,

You need to practice the use of your backspace and delete keys. This article could be half as long or less and communicate the same message.

10:27 PM, September 10, 2008  
Blogger Eric Williams said...

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.

11:04 PM, September 10, 2008  
Blogger Ged said...

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.


THANL YPU!

11:11 PM, September 10, 2008  
Blogger Tracy Reed said...

I have always wanted to learn dvorak. Two problems:

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?

I just don't get it.

11:18 PM, September 10, 2008  
Blogger Joe Ardent said...

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!

11:26 PM, September 10, 2008  
Blogger Unknown said...

@joe

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.

11:54 PM, September 10, 2008  
Blogger Unknown said...

Oops. I guess a fair bit of commenting went on while I was away. I was referring to the Das Keyboard suggestion.

11:55 PM, September 10, 2008  
Blogger leppie said...

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.

12:05 AM, September 11, 2008  
Blogger Bruce Hoult said...

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.

12:05 AM, September 11, 2008  
Blogger Daniel said...

Wow.. eye opener..

Installed GNU Typist on my linux computer at work and started doing som excercises, knowing that I'm not that fast nor a touch typist.. didn't know it was this bad though..

Hope to be a success story down the line..

12:38 AM, September 11, 2008  
Blogger beppu said...

"...have all the technique of Japanese robots combined with all the musical soul of, well, Japanese robots."

But japanese robots have come a long way! :P

12:41 AM, September 11, 2008  
Blogger Ryan said...

I touch type ~ 50-60 wpm, have been since I was 15 or so. BBSing really helped practice it.

I don't have RSI, I will use almost any keyboard, and I am 100% sure I'll never develop RSI.

Basically, I think RSI is a genetically predisposed thing. If you didn't get RSI from typing, you'd get it from operating industrial equipment.

12:46 AM, September 11, 2008  
Anonymous Anonymous said...

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.

12:47 AM, September 11, 2008  
Blogger Dan Villiom Podlaski Christiansen said...

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.

Oh, and on that Emacs thingy: Gimme!

1:10 AM, September 11, 2008  
Blogger Si said...

This comment has been removed by the author.

2:04 AM, September 11, 2008  
Blogger ababushkin said...

Ahh its so true.

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.

2:22 AM, September 11, 2008  
Blogger Tomas said...

Dvorak is a great layout. However, if you don't like the Ctrl-ZXCV shortcuts moving, try Colemak which IMO is at least as comfy as Dvorak but retains those shortcuts in their old place.

I personally use Colemak + vim and am very happy with that choice.

3:19 AM, September 11, 2008  
Blogger Ashutosh said...

For emacs, The Typing Of Emacs (inspired by Typing of the Dead) looks like a good start.

3:36 AM, September 11, 2008  
Blogger jcr said...

I've been writing code and working around other programmers since 1982, and I can't recall any colleagues who couldn't type. Have I just been exceptionally lucky?

-jcr

3:46 AM, September 11, 2008  
Blogger Sean Forbes said...

Were I work, the father of the previous (C++) version of our product is a legend. He wrote all of the low-level, high reuse code, and all of the difficult math code.

Everybody loved him. He'd get to work early to get some programming in before everyone lined up at this door to ask him questions.

He hunt-and-pecked the keyboard keys with his index fingers.

I think that this "disadvantage" made him focus on what was really important.

4:31 AM, September 11, 2008  
Blogger Unknown said...

Hmm, just because you can type so quickly and easily, I'm not sure you need to take **3680 words** just to say "if you work with text on computers it helps if you can type".

4:45 AM, September 11, 2008  
Blogger Aaron Davies said...

@soul, u must b new here. Welcome to the yegge-verse

5:02 AM, September 11, 2008  
Blogger Unknown said...

Nice! I love dirty little secrets dont you!

Jiff
www.privacy.mx.tc

5:08 AM, September 11, 2008  
Blogger Dan Bernier said...

I have a similar suspicion about customizing your computer...setting up your favorite accelerators, utilities, whatever. If you don't bother to do any of it, it's a bad sign.

Typing Dvorak makes me not so much faster than QWERTY, but smoother. It FEELS nicer.

5:29 AM, September 11, 2008  
Blogger ayd said...

Re: Number keys

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.

This post was typed error-free!--I think!

5:45 AM, September 11, 2008  
Blogger gonzobent said...

I would like to post a 3rd vote for the Colemak keyboard layout. I have been using it for about a year and I love it. Colemak + vim = happiness.

5:49 AM, September 11, 2008  
Blogger David Guy said...

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.

5:58 AM, September 11, 2008  
Blogger billo said...

I can't really think of any non-touch typing programmer I've ever worked with.

Maybe I'm lucky, or clueless, probably both. But 22 years and 7 jobs is a pretty big sample. Huh.

A great, amusing rant though.

6:19 AM, September 11, 2008  
Blogger rtperson said...

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.

6:23 AM, September 11, 2008  
Blogger AlBlue said...

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.

6:47 AM, September 11, 2008  
Blogger Len said...

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.

6:59 AM, September 11, 2008  
Blogger Unknown said...

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?

7:18 AM, September 11, 2008  
Blogger Jalada said...

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.

7:36 AM, September 11, 2008  
Blogger Dibs on Muad said...

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.

8:07 AM, September 11, 2008  
Blogger Ivan said...

>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.

IMHO

8:10 AM, September 11, 2008  
Blogger Paul W. Homer said...

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.

Paul.

8:17 AM, September 11, 2008  
Blogger altxwally said...

Steve, thank you for advice. I will learn to touch type starting now.

8:18 AM, September 11, 2008  
Blogger M@ said...

AS A LIFELONG PRGMR I JUST WANTD TO SAY THT I TYPE 4 A LIVING & I RSNT THE IMPLICTN THAT EVERYONE WHO PROGMS 4 A LIVING IS A NON-TYPING MORON!!!!

8:21 AM, September 11, 2008  
Blogger DWallach said...

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.

8:22 AM, September 11, 2008  
Blogger Unknown said...

Too funny. In high school I elected to take typing because the electronics class was full. Looking back 30 years, that was one of the luckiest decisions I ever made.

9:15 AM, September 11, 2008  
Blogger Bob Aman said...

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.

9:17 AM, September 11, 2008  
Blogger Nicky Haflinger said...

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.

9:33 AM, September 11, 2008  
Blogger kennyfromtoronto said...

>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.

What?!? You don't consider Guitar Hero players to be musicians?

9:36 AM, September 11, 2008  
Blogger Abram Nichols said...

did you actually go to PHS? Class of '95 here!

9:48 AM, September 11, 2008  
Blogger edgaralgernon said...

and here I thought I was the only one who took typing in high school. Though in stead of a coach we had a nun.

9:53 AM, September 11, 2008  
Blogger Steven said...

I learnt Dvorak 7 year over a labor day holiday. I found simple typing exercises and did what Steve says about the fast, medium, slow technique.

I was a bad, but passable 25 wpm on Tuesday when I went back to work.

Re-learning emacs key bindings was a bit weird ( but not too bad, and I've moved on to Textmate/Vim anyway... )

I kept a hand-drawn key map to my side and when i got stumped i took a look at it ( the letters on the keys being no help as it was still QWERTY mapped ).

Granted, I had the advantage of coming from touch-type QWERTY to Dvorak–but still, nothing major.

I have Dvorak resources at my site.

10:11 AM, September 11, 2008  
Blogger Florian said...

Refutal of Typist code bloat stink argument.

Logical flaw in argument: The relationship between input interface bandwith and codesize is not as simple as linearly proportional.

However: input interface bandwith is linearly proportional to the amount of insert/move/replace/delete operations you can perform on content.

Therefore: input interface bandwith is proportional to your productivity as measured by the amount of interactions you can execute on content.

Example: if you interact at 20 Baud you are 6x less productive then if you interact at 120 Baud.

Caveat: You rarely interact at full 120 Baud on average.

Final: It still lowers your productivity because in the periods of peak intercation 20 Baud is still way slower then 120 Baud.

10:12 AM, September 11, 2008  
Blogger robfelty said...

You mention that not learning to touch type is lazy, but it is not lazy in the Larry Wall sense of it. Learning how to touch type is lazy in that sense, because it saves you time.

Nice article, though a bit verbose. Maybe your excellent typing skills increase your verbosity a bit too much. :)

10:41 AM, September 11, 2008  
Blogger Wes S said...

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.

11:02 AM, September 11, 2008  
Blogger John said...

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.

11:28 AM, September 11, 2008  
Blogger elg said...

@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.

12:36 PM, September 11, 2008  
Blogger Unknown said...

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.

12:44 PM, September 11, 2008  
Blogger malkia said...

8th grade I used to play football... ahem soccer (that's what we call football anyway).

I was a goalie, the ball came straight to my right hand, broke it for a month.

Well I was right-hand-only typist back then (and beginner programmer).

I had to type for a month, so I've started using the left one, since then I'm typing quite fast (haven't measured really the WPM, but it's quite fast).

12:56 PM, September 11, 2008  
Blogger Power Baker said...

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...

1:13 PM, September 11, 2008  
Blogger jambarama said...

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.

1:43 PM, September 11, 2008  
Blogger jambarama said...

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.

1:45 PM, September 11, 2008  
Blogger Unknown said...

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.

2:05 PM, September 11, 2008  
Blogger Brady said...

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.

2:23 PM, September 11, 2008  
Blogger Unknown said...

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.

3:24 PM, September 11, 2008  
Blogger Unknown said...

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...

so often I see it as an advantage to not know how to type...

5:12 PM, September 11, 2008  
Blogger Michael Letterle said...

fjdksla;

fjdksla;

"eff jay dee kay ess el ah sem"

Taking keyboarding in high school was the best career choice I ever made. And as a bonus I was the only guy in the class ;)

6:19 PM, September 11, 2008  
Blogger Jacob said...

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?

6:38 PM, September 11, 2008  
Blogger Composing said...

What about this stupid touchpad mouse thing on my laptop keyboard? If I put my hands where they should probably go to do proper touch typing the mouse will be all over the place!

11:19 PM, September 11, 2008  
Blogger Jennifer said...

Despite taking a touch-typing class in high school, I typed with five fingers, looking at the keyboard, from age 6 to about 24. At that point I finally decided to not allow myself to look at the keys.

Nowadays (age 28) I touch-type on QWERTY but am relatively slow (46 wpm), with sub-par technique, and can hardly do numbers or punctuation. You've inspired me to work on this. Thanks.

11:20 PM, September 11, 2008  
Blogger VRBones said...

Personally I'm holding out for computers to understand natural language, or better, thought processing.

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.

11:21 PM, September 11, 2008  
Blogger Roman Werpachowski said...

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.

12:13 AM, September 12, 2008  
Blogger Bob Foltrigg said...

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.

12:25 AM, September 12, 2008  
Blogger Manrico Corazzi said...

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.

2:00 AM, September 12, 2008  
Blogger Unknown said...

You english speaking people are lucky. The Turkish Q keyboard layout most Turkish people use has ; mapped to Shift+\, [ to Alt+8 and { to Alt+7. Think of coding in Java with that.

2:36 AM, September 12, 2008  
Blogger vinod said...

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"

5:28 AM, September 12, 2008  
Blogger Kyle Lahnakoski said...

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.


BTW: Your proficiency in typing explains your extremely long blog posts.

8:41 AM, September 12, 2008  
Anonymous Anonymous said...

This comment has been removed by the author.

10:10 AM, September 12, 2008  
Blogger Unknown said...

I highly recommend Mavis Beacon 5, the last version which included Dvorak support.

11:22 AM, September 12, 2008  
Blogger Unknown said...

+1 for Dvorak. I'm coming up on the one-year anniversary of the occasion. I've done some speed tests along the way, which you can follow here: http://www.prestonlee.com/?s=dvorak

11:34 AM, September 12, 2008  
Blogger knewter said...

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.

1:19 PM, September 12, 2008  
Blogger Unknown said...

I can only touch type when I don't realise I'm doing it. Is that unusual? :)

3:27 PM, September 12, 2008  
Blogger Daniel F. Hanson said...

I know other people have already said this here, but when I got to the meat of the article, I just couldn't help but think one thing:

There are programmers who can't touch-type?

5:13 PM, September 12, 2008  
Blogger sapphirepaw said...

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.

6:48 PM, September 12, 2008  
Blogger Barry Brown said...

G hslqk vls, ,jak kjd ngu hdap g; ansfk H.soave Gq.d nddl ktrglu ,gkj H.soav yso s.do 10 tdao; alh gk ja;lqk hsld a kjglu yso mt roshfikg.gkt so iaoddoe Ls sld ial odah mt ishdw dgkjdoe Rdojar; G ;jsfph ;ksr nsoos,glu skjdo rdsrpdq; vdtnsaoh;e

7:46 PM, September 12, 2008  
Blogger Barry Brown said...

Seriously, though. I don't think Dvorak has made me a faster typist. But my wrists hurt less and my co-workers think I'm crazy.

7:48 PM, September 12, 2008  
Blogger ms.pebble said...

as always, love your slightly expanded versions.timeless piece d'art.

you must be quite a humanitarian to be concerned that people learn and get better.impressive!

Send me mail. It'll make my day!
: done :-)

5:00 AM, September 13, 2008  
Blogger Ivan Andrus said...

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.

11:00 AM, September 13, 2008  
Blogger Marcin said...

This is complete nonsense. I know almost no programmer who has proper touch typing technique, and I've known some very fine programmers.

Simply put, you'd have to be a very, very slow hunt-and-peck typist for it to impact on the process of programming.

As to communication - same thing applies, except that you can use diagrams to help with lots of issues, and you can even use a telephone!

3:59 PM, September 13, 2008  
Blogger Unknown said...

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.

4:56 PM, September 13, 2008  
Blogger Unknown said...

I learned to type playing on-line games in the 90's, back when you had to *type* all your character's actions and *read* all the game's events. (Any other Federation players here?)

So thank you for making everyone aware of this dirty little secret.

The best programmers I know are also the fastest typists I know.

Thanks!

6:06 PM, September 13, 2008  
Blogger Adam said...

ever stumbled over typingmania? A ddr like game for typing practice.

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.

11:44 AM, September 14, 2008  
Blogger tojonas said...

Steve,

OK I have to give it a try.... I'm sill picking away but I'm "anal" when it comes to code formatting ;)


<serious>
In the next post I would love to hear your thoughts about alcohol and the "programming trade"... </serious>

/J

7:00 PM, September 14, 2008  
Blogger BlueRaja said...

I never knew programmers not knowing how to type was a big problem..

10:44 AM, September 15, 2008  
Blogger Sébastien said...

I enjoyed this post (and the comments too)!

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.

Hail to the typists!

2:38 PM, September 15, 2008  
Blogger ilevi said...

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.

BTW, let me use this occasion to thank you so much for your blog.

10:45 PM, September 16, 2008  
Blogger PCC 502 said...

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.

10:49 PM, September 17, 2008  
Blogger Private Huff said...

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.

1:46 PM, September 18, 2008  
Blogger Sébastien said...

The sad thing is that (at least for most developers I know), programming is just a job. Of course, this is no excuse, but many only use a computer at work and not quite as much once they get home.

So don't even think about them participating in any kind of "developer community". Which means:
- they won't read this post
- they certainly won't care so much about touch-typing

Of course you can't avoid this since the profession is pretty (too?) easily accessible, but it's sad.

8:33 PM, September 18, 2008  
Blogger Nathan said...

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.

1:39 PM, September 19, 2008  
Blogger hmart said...

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

7:04 AM, September 20, 2008  
Blogger erdraug said...

I'm greek. The greek keyboard layout is not 100% identical to the english one. Furthermore, i live and study in France since october 2001. I'm only at home for the holydays.

All this essentially means i have to balance 3 different keyboard layouts. I can touchtype, just slowly. The typeonline.co.uk test says i'm clocking at 40 wpm.

...would this explain why i've only been able to pick up mirc scripting and not a "real" programming language? :P

4:18 PM, September 21, 2008  
Blogger Keithius said...

Ahhh, brings back memories of:

asdf jkl;

About 50 million times.

Memories...

10:49 AM, September 22, 2008  
Blogger Unknown said...

You are an awesome writer.

12:47 PM, September 22, 2008  
Blogger SolidState said...

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!"

1:04 AM, September 23, 2008  
Blogger Unknown said...

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.

4:03 PM, September 23, 2008  
Blogger dfghdfhdsgtsdgsddghjg said...

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!

7:54 PM, September 24, 2008  
Blogger David House said...

Show me one programming project which wasn't 95% thinking and 5% typing.

8:19 AM, September 26, 2008  
Blogger Rob Miles said...

I spent four weeks one summer in the seventies teaching myself to type properly. I got a book out of the libaray and a cheap portable and went for it. One of the best things I ever did. Hear hear.

May I also commend the Microsoft Bendy keyboards. They can save you a lot of pain and they kind of force you to type properly.

9:27 AM, September 26, 2008  
Blogger Tori Crossman said...

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.

11:54 AM, September 26, 2008  
Blogger Adeel Shahid said...

Nice one, but I have also learned to type for the same reason but what I would want to ask is what typing speed do you recommend.

Like I have something about 50-60 wpm when programming or typing.

9:30 AM, September 27, 2008  
Blogger Rick said...

asdfg ;lkjh asdfg ;lkjh
qwert poiuy qwert poiuy
zxcvb ... well you know the deal.

Start typing that on NOTEPAD and you'll learn to touch-type. This is how I learned when I was in high school.

11:56 AM, September 29, 2008  
Blogger George McBay said...

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.

1:50 AM, October 03, 2008  
Blogger Unknown said...

Perhaps if you didn't type so fast, your blog entries would be shorter, and better organized.

I could go on with a long, involved analysis of your verbiage, and the relatively low signal to noise ratio, but I have neither the time nor the patience for such things.

11:17 AM, October 05, 2008  
Blogger Adeel Shahid said...

good one

11:44 AM, October 05, 2008  
Blogger Jim Robert said...

I don't know... A lot of people here are talking about how it's not as big a deal as you say...

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 :)

ps- my most common typo:
:_ instead of :)

I'm still workin on it:)_ ;)

7:46 PM, October 12, 2008  
Blogger Bruce Hoult said...

> 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...

8:29 PM, October 12, 2008  
Blogger Dorje Sangye said...

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.

8:22 AM, October 20, 2008  
Blogger xxx said...

WOW, Stevey, you mean you can type

string type = (tabs == 1) ? "Preluat" : ((tabs == 2) ? "Aprobat" : "Respins");
string date = Utils.getTime().Replace("/", "-").Replace(":", "-");
string directoryName = Server.MapPath(Request.ApplicationPath) + @"\exports\";
string outputFileName = "Cereri " + type + "e (" + date + ")" + (rblFormat.SelectedIndex == 0 ? ".xlsx" : ".xls");
string templateName = "Template_" + type + "e_" + (rblDetails.SelectedIndex == 0 ? "Complet" : "Tabel") + ".xlsx";


and

sql = "INSERT INTO Events ( UserID, Time, IP, Type ) VALUES ( " + userID +
", '" + Utils.getTime() + "', '" + lbIP.Text + "', '" + Utils.evLogin + "');";


without looking at the keyboard? ;) - please ignore the words in Romanian

I'd bow in front of anyone who'd do that..

5:49 PM, October 23, 2008  
Blogger Christian Campbell said...

@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.

8:01 PM, October 23, 2008  
Blogger Dorje Sangye said...

This comment has been removed by the author.

9:55 AM, October 24, 2008  
Blogger Dorje Sangye said...

SteveY, I removed the post above not having yet read Christian...Bring Alex and Christian both when you break to Costa Rica. Canoe or Kayak?

10:12 AM, October 24, 2008  
Blogger Eric Belair said...

Check out this bad boy:

http://www.matias.ca/halfkeyboard/index.php?refID=7

7:54 AM, November 18, 2008  
Blogger Geekiac said...

I feel a ashamed. I have been a developer for 15 plus years, I just had a go at a typing test and only managed 42 words per minute and had errors in the text as well.

To be honest I have always been a little jealous of my colleagues who seem to have smoke coming from their keyboards!

I am gonna dust off my typing tutor software tonight and I am gonna make sure I get my speed up to at least seventy words per minute with perfect accuracy.

Thanks for the pep talk!

9:55 AM, November 18, 2008  
Blogger Christian Campbell said...

This comment has been removed by the author.

10:25 AM, November 18, 2008  
Blogger Christian Campbell said...

While perfect accuracy is an awesome goal, a 1% error rate is much more realistic.

Barbara Blackburn reportedly had a 0.2% error rate

10:30 AM, November 18, 2008  
Blogger Unknown said...

Steve,

So I'm no one, and you're big time, but I think there's ONE thing that's more important than touch typing.

I just blogged about it here:
http://adotnetdude.blogspot.com/2008/11/how-to-be-better-programmer.html

Let me know what you think.

5:46 PM, November 18, 2008  
Blogger rrraven said...

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.

From my experience, typing is widely overrated.

2:27 AM, November 22, 2008  
Blogger AB said...

http://stackoverflow.com/questions/300331/inspirational-writings

2:35 PM, November 24, 2008  
Blogger Master_Bratac said...

I never really "learned" to touch-type. I just typed, and a couple years ago I realized that I had stopped looking at the keyboard. Now that I think about it, it seems kind of weird.

12:01 PM, November 25, 2008  
Blogger Unknown said...

Very nice article..much better than the one jeff wrote @ coding horror..
Yeev is really great..very nice pep talk...
i have to get a typing tutor now..
excuse me!!

1:27 AM, November 26, 2008  
Blogger Nick Seeber said...

thanks Stevey! I read your post a couple of weeks ago, promptly went cold turkey and in the last few days achieved parity with my speed before -- it's all gravy from here...

2:00 PM, December 01, 2008  
Blogger Dorje Sangye said...

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.

10:12 AM, December 31, 2008  
Blogger Unknown said...

see my success story here: http://www.pardisnoorzad.com/?p=131

Thanks Steve!

12:45 PM, January 02, 2009  
Blogger Unknown said...

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.

4:47 PM, January 03, 2009  
Blogger Unknown said...

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".

4:56 PM, January 03, 2009  
Blogger rrraven said...

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.

3:50 AM, January 12, 2009  
Blogger rrraven said...

*precise specs made by someone else

3:53 AM, January 12, 2009  
Blogger Paul said...

I have problems though with programmer dvorak, where the numpad still works as a qwerty one.

9:52 AM, January 18, 2009  
Blogger Unknown said...

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.

10:36 AM, January 23, 2009  
Blogger Unknown said...

We also secured our code from hacking and installed a web application firewall called dotdefender. This combination actually reduce the amount of attacks we had.

Hope it helps.
Tom

2:39 AM, February 23, 2009  
Blogger rrraven said...

I have to take back part of what I said about complete uselessness - I
found 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 :)

10:04 PM, March 24, 2009  
Blogger Dorje Sangye said...

Try a Chiropractor if your back hurts...

11:47 AM, April 13, 2009  
Blogger Unknown said...

Tried Mavis Beakon, but it sucks big time. It weighs 300 Mb. Install and startup are painfully slow. Try www.rapidtyping.com

10:51 PM, June 28, 2009  
Blogger Chris Jones said...

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.

7:40 AM, July 21, 2009  
Blogger bigfoot said...

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!

Nice essay.

6:05 PM, November 10, 2009  
Blogger Dmytry said...

And touchtypists, on other hand, often write extremely verbose pieces like this blog post. It is a tradeoff.
(I can touchtype btw)

6:50 AM, January 02, 2010  
Blogger Unknown said...

I heartily second the suggestion that one learn on a Dvorak keyboard. I typed about 70 wpm on querty but my hands hurt, Tn Requin

7:36 PM, March 10, 2010  
Blogger Suvir Jain said...

You have opened my eyes..I currently pseudo-touch type on qwerty and was just getting started with dvorak...guess I will start the right way with dvorak...

6:11 PM, March 11, 2010  
Blogger The Bear said...

Interesting post!

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.

The Bear.

6:03 AM, May 02, 2010  
Blogger HonestKyle said...

I definitely one of those programmers that got most of his experience with typing from AIM and other instant message applications.

This feels weird just typing this comment because I'm trying very intently not to look at my fingers. haha

But, I've also had the help of fun games too! Anyone ever heard of Slam Dunk typing?! Totally boss!

Great post Steve!

12:05 PM, May 07, 2010  
Blogger Tim said...

My company had lay-offs a couple years back. We slashed the development team by 80%. It was the best thing we could have done, there were simply too many terrible programmers. Our remaining 20% were actually able to maintain the same productivity level, that should tell you how bad some of them were (they weren't all terrible).

Now that I read your article it occurs to me that we had several programmers that couldn't type. They were all in the group we laid off. Every programmer that kept their job knows how to type.

I'm going to push for typing to be a job requirement...

3:36 PM, May 22, 2010  
Blogger Anon said...

asdf jkl; asdf jkl; asdf jkl;

7:32 PM, June 26, 2010  
Blogger kilo39 said...

This post still "working" - thanks a lot...

5:06 PM, July 01, 2010  
Blogger Unknown said...

Guys, learn the tools of your trade, and learn them well.

A touch-typing programmer who uses a superior editor, keyboard shortcuts and refactoring tools is way more productive than a hunt-and-pecker who uses the same editor, shortcuts and tools.

If you believe that you are being productive solely by using copy-and-paste techniques, then you're wrong. Doing that would be writing tons of hard-to-maintain code. Why not refactor your code? Aside from being easier to maintain, you'll have lesser amount of code to type.

A programmer who types fast, accurate and less is a very, very productive programmer.

5:31 AM, September 12, 2010  

Post a Comment

<< Home