We Are Typists First, Programmers Second

November 17, 2008

Remember last week when I said coding was just writing?

I was wrong. As one commenter noted, it's even simpler than that.

[This] reminds me of a true "Dilbert moment" a few years ago, when my (obviously non-technical) boss commented that he never understood why it took months to develop software. "After all", he said, "it's just typing."

Like broken clocks, even pointy-haired managers are right once a day. Coding is just typing.

keyright keyboard

So if you want to become a great programmer, start by becoming a great typist. Just ask Steve Yegge.

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.

I had a brief email exchange with Steve back in March 2007, after I wrote Put Down The Mouse, where he laid that very same Reservoir Dogs quote on me. Steve's followup blog post was a very long time in coming. I hope Steve doesn't mind, but I'd like to pull two choice quotes directly from his email responses:

I was trying to figure out which is the most important computer science course a CS student could ever take, and eventually realized it's Typing 101.

The really great engineers I know, the ones who build great things, they can type.

Strong statements indeed. I concur. We are typists first, and programmers second. It's very difficult for me to take another programmer seriously when I see them using the hunt and peck typing techniques. Like Steve, I've seen this far too often.

First, a bit of honesty is in order. Unlike Steve, I am a completely self-taught typist. I didn't take any typing classes in high school. Before I wrote this blog post, I realized I should check to make sure I'm not a total hypocrite. So I went to the first search result for typing test and gave it a shot.

typing test speed (WPM) results

I am by no means the world's fastest typist, though I do play a mean game of Typing of the Dead. Let me emphasize that this isn't a typing contest. I just wanted to make sure I wasn't full of crap before I posted this. Yes, there's a first time for everything. Maybe this'll be the start of a trend. Doubtful, but you never know.

Steve and I believe there is nothing more fundamental in programming than the ability to efficiently express yourself through typing. Note that I said "efficiently" not "perfectly". This is about reasonable competency at a core programming discipline.

Maybe you're not convinced that typing is a core programming discipline. I don't blame you, although I do reserve the right to wonder how you manage to program without using your keyboard.

Instead of answering directly, let me share one of my (many) personal foibles with you. At least four times a day, I walk into a room having no idea why I entered that room. I mean no idea whatsoever. It's as if I have somehow been teleported into that room by an alien civilization. Sadly, the truth is much less thrilling. Here's what happened: in the brief time it took for me to get up and move from point A to point B, I have totally forgetten whatever it was that motivated me to get up at all. Oh sure, I'll rack my brain for a bit, trying to remember what I needed to do in that room. Sometimes I remember, sometimes I don't. In the end, I usually end up making multiple trips back and forth, remembering something else I should have done while I was in that room after I've already left it.

It's all quite sad. Hopefully your brain has a more efficient task stack than mine. But I don't fault my brain – I fault my body. It can't keep up. If I had arrived faster, I wouldn't have had time to forget.

What I'm trying to say is this: speed matters. When you're a fast, efficient typist, you spend less time between thinking that thought and expressing it in code. Which means, if you're me at least, that you might actually get some of your ideas committed to screen before you completely lose your train of thought. Again.

Yes, you should think about what you're doing, obviously. Don't just type random gibberish as fast as you can on the screen, unless you're a Perl programmer. But all other things being equal – and they never are – the touch typist will have an advantage. The best way to become a touch typist is through typing, and lots of it. A little research and structured practice couldn't hurt either. Here are some links that might be of interest to the aspiring touch typist:

(But this is a meager and incomplete list. What tools do you recommend for becoming a better typist?)

There's precious little a programmer can do without touching the keyboard; it is the primary tool of our trade. I believe in practicing the fundamentals, and typing skills are as fundamental as it gets for programmers.

Hail to the typists!

Posted by Jeff Atwood
351 Comments

For the curious, I searched around trying to find that rainbow keyboard. The closest I could find was the Luxeed keyboard (available on Thinkgeek: http://www.thinkgeek.com/computing/input/a85c/)

I don't know where Jeff found this one with the black bezel and colored keys. Even though the image filename suggests it is a Keyright keyboard, a Google image search for that does not yield one with a black bezel.

Jake Cohen on November 18, 2008 1:01 AM

It's hard to take anyone seriously when they suggest that typing is the most important development skill. But, I'm glad, Jeff, that you have a skill to fall back on in case the programming thing doesn't work out. By the way, how are you at making coffee...?

Gunther on November 18, 2008 1:32 AM

I agree with Chris; typing speed is only relevant if it obstructs your flow of thinking. What bothers me as a recent tendency though is to put a whole lot of oughts and shoulds that are pretty arbitrary and do not relate to the issue of composing good quality, well-documented, extensible code that satisfies a need. In my mind, we should focus on taking the needless steps away from that process, not adding steps to the shortest path between idea and implementation.

Louis-Eric on November 18, 2008 1:33 AM

With modern IDE typing code is more like playing game, than like typing full words. You are constantly using shortcuts, choosing things from menus, and copying stuff. Also tabulation is completely different (and more important) in code, than in English (or any other language).

BTW - i've found that I'm more productive, when I type slower, and stops often to think about what I want to type next :)

So I don't think fast typing is required for programmer. It's rather the other way around - when somebody can't write fast he is less probably a good programmer, becouse that means he probably hasn't been programming a lot.

But I know man, that started programming 50 years ago, can program circles around me :) (thanks for this idiom, BTW), and he types a few times slower than I do.

odrzut on November 18, 2008 1:35 AM

A good programmer won't need to type fast since their code will be succinct and compact. it doesn't matter if you type half as fast if your program is 4 times smaller than the fast typist's...

pete on November 18, 2008 1:47 AM

I hunt and peck and my spelling sucks (English is not my first language) but there is a big difference between a coder and a programmer. A coder types whats a programmer tells him to do. A programmer designs software. Remember Programming 101? No code only flowcharts!

Cornie on November 18, 2008 1:53 AM

pete: and when you want to chnge something in your program you'll have to find and change things in 7 different places, while in better code it will be oneliner change.

odrzut on November 18, 2008 1:56 AM

In a reaction to this I wrote this. Why English is really important to us non-English speakers.
http://blogs.lessthandot.com/index.php/Architect/DesigningSoftware/why-english-is-really-important-to-us-no

Typing is the second step for the other people in the world ;-).

chrissie1 on November 18, 2008 2:04 AM

Does anyone here have experience with Kinesis, Maltron, or even any other more extravagant input device? I'd really like to hear about it.

searcher on November 18, 2008 2:22 AM

I don't type too slow or too fast, just kind of half-fast...

jimmy on November 18, 2008 2:38 AM

In College, a professor said don't learn to type. His reasoning was that you need you hands for your whole career and typing fast will bring on rsi, secondly by typing fast you will avoid coming up short cuts for doing repetitive tasks and being more creative. I don't totally agree but there is something in both points.

donal on November 18, 2008 2:51 AM

There's one touch-typist guy here at work. It's indeed incredible to see him type. The bad news is that when it comes to programming, I usually have the same feature implemented in half the LOC (while using more verbose naming schemes...) - and usually with way less bugs. So if you think in terms of producing working, quality code, I'm not sure WPM is such a sound metric.

albert on November 18, 2008 3:02 AM

I had a manager ask me once to type as he dictated. From that moment on, I learned, don't admit you know how to type ;-)

It seems like a lot of programmers also like to play musical instruments, so finger moment isn't a problem.

If it's that important though, then vendors much stop mucking with the keyboard layout. Real programmers don't need special keys ;-) Same with the mouse. I just bought a 5 pack of the Microsoft optical mouse, PS/2 USB interface, because it is difficult to find locally. It has a nice shape to maneuver and lift, and it works on new and old hardware. I'm going to do the same with my keyboard. NMB RT8255, beige color which makes it easy to see in dim light, nice positive feedback on the keys, sturdy, and the lettering doesn't wear off with use.

dj on November 18, 2008 3:10 AM

Mo tipng if sine frankuuo

PixelGnome on November 18, 2008 3:14 AM

We could make a game out of the copy/paste technique:
- Copy
- Paste into text editor
- Replace , with
- Start the clock, Ctrl+V, Stop the clock

Your speed was: 11650wpm.

Congratulations! You made no mistakes, practice does make perfect.

But in my honest opinion, you should work on speeding up whatever aspect of your programming causes you the most delay.

- if it's your typing speed, then work on that
- if it's problem solving, work on that
- if it's syntax... (well, you get the idea)

I personally see many students who can transcribe code at great speed, but are at a loss when it comes to making their own solutions.

Typing speed is a very small part of the overall equation.

Even better is an elegant solution that minimizes the amount of code you need to write in the first place.

gtnconcept on November 18, 2008 3:36 AM

IRC and first person shooters are by far the best ways to learn touch typing. I regularly break 120 WPM with few, if any errors. Plus, I always capitalize and use proper punctuation - no matter how small the message.

Michael Wales on November 18, 2008 4:01 AM

I spent most time with _thinking_, not typing.

I alternate between the two, rapidly. Maybe it's just me, but I can't think very far ahead without trying my ideas out in code.

Typing is just needed at the final step of writing software.

Sure, but this is a burst bandwidth issue -- at the time when you're really in the zone, you don't want lack of typing skills to become the bottleneck.

Typing speed is a very small part of the overall equation.

Sure, but that's how our industry works. Code is made up of a zillion tiny things that can have large consequences. Like, say, a single misplaced semicolon.

Jeff Atwood on November 18, 2008 4:03 AM

74 wpm, no mistakes (well, hit a couple wrong keys along the way and backspaced.) About as fast as I thought I was.

I definitely agree that IRC and similar things are the way to make yourself touch-type -- this is how I stopped looking at the keys about a year into college.

Mike on November 18, 2008 4:42 AM

I get in a groove and start speeding up and all of a sudden I'm playing music making rythyms and I look down and I'm typing lsdkjf ;sodkfj ;asodifj ;sdfj ;sdfjds fadfj gjfgnflgnldfig gobbley gook.

John A. Davis on November 18, 2008 4:51 AM

Your speed was: 75wpm.

You made 2 mistakes, your mistakes are shown in bold text:

Booeeeh!!

Jef Claes on November 18, 2008 4:58 AM

echo co co co

Dan on November 18, 2008 4:58 AM

81 here. And i thought, that i'm godlike. So you're more godlike, than i am :)

bush on November 18, 2008 4:58 AM

I wonder how many people who argue here that the ability to type quickly is not an important requirement have also argued that Ruby's ability to type less characters characters IS important.

My guess is actually quite a few, but none that would admit it.

Bill K on November 18, 2008 5:00 AM

Typing well may be damn important but coding is by no means just typing

I'm a firm believer that actually writing your code is the least time portion of the software development process.

Calvin Spealman on November 18, 2008 5:01 AM

Is 60WPM bad?
* cries *

Allan on November 18, 2008 5:05 AM

Range from 75-88 with 1 mistake (poor spelling).

I'm not really sure your analogy holds up. Getting up and moving to a room takes longer and changes the context more. A delay of a few seconds does little.

I'm dubious as to whether better typing makes you a better coder, or that there is merely a correlation between the two. After all, it isn't surprising that someone who is a good coder has spent a lot of time typing and thus developed good typing skills. It doesn't necessarily follow that going out and learning to type properly will make you much of a better coder.

[ICR] on November 18, 2008 5:08 AM

I'm by no means a touch-typist. But I get along. And I only scored 45 WPM..

That said, typing speed is of course a factor.

But don't type the same over and over. Use an editor with snippet and template-support. Use code-completion.

Personally that means TextMate for me when doing markup and VS2008 w/Resharper for those .Net moments.

erlando on November 18, 2008 5:08 AM

I agree that typing is extremely important for a programmer, and a skill worthy of practice.

But are we programmers secondarily to typists? I don't think you made a good case for that, and to be honest, I don't think one is possible. I'm open minded though. =)

Sammy Larbi on November 18, 2008 5:08 AM

I'm a self-taught two-finger typist... been doing it that way for 30 years so it's pretty ingrained.
I got only 31 wpm, with 0 errors.
I admit I have never felt hampered by typing speed while coding. Where it hurts is in email and documentation, and programmers type a lot more emails than code.

Steve W on November 18, 2008 5:14 AM

75 wpm, which is good enough considering English isn't my native language.

Ivan on November 18, 2008 5:14 AM

If you think more, you type less. Just in case you think this is an excuse, I just got 95wpm.

Kent Boogaart on November 18, 2008 5:14 AM

Broken clocks are right twice a day..

(sorry for the pedantry) ;o)

ANdrew on November 18, 2008 5:15 AM

A few years ago I started out in the IT industry where most people do: tech support. It was for a small ISP and before the new phone system came in we would have to come into the office, listen to a voicemail and type in a support ticket from it. There is no better way to learn than to try to type with someone as they speak and you'll get quite fast in a short amount of time.

Scott Salyer on November 18, 2008 5:16 AM

I love my Das Keyboard!

People are always stunned to see it, and fearful too. I encourage them to give it a try and tell them they'll surprise themselves and sure enough most people do pleasantly discover they know the keyboard better than they thought.

It really surprises me when I find IT types who can't type. I never had any lessons or went to any real effort but just became a very fast typist through simply doing it every day for 24 years now!

David M Williams on November 18, 2008 5:16 AM

I've been doing software for over 10 years and still cannot touch-type. The most used key is the backspace.

If dyslexia exists then so does the dis-ability for typing?

Speed matters. Yes, too slow and your buggered, too fast and your buggered. What about velocity? Momentum?

Can you just stop pontificating and just say that typing faster with more accuracy is preferable than not and leave it at that.

But you're right, there are no excuses; there are explanations and reasons.

Sam on November 18, 2008 5:16 AM

That's why vi was the editor of the gods. (Emacs also, as much as it pains me to say that, but still better than the current IDE crap.) You didn't have to break your thought to find the mouse, highlight something, and then go back to the keyboard. You just thought I need to delete these three lines and *poof* they were gone.

Hold down CTRL + SHIFT press down 3 times press delete or backspace, use home if necessary.

30 wpm several reason for that, but who cares anyway. If you need to type anything your not using your IDE code completion, code completion. Ppl bashing the keyboard are not using a IDE or are polluting the codebase with boilerplate code. ...and insulting your own intelligence. (excluding Perl programmers I suppose)

Regardless of getting 30wpm in a IDE I can make code appear as fast as my eyes can track it.

Michael on November 18, 2008 5:18 AM

I think you are wrong. What you are basically saying is: An artist, how can't paint a wall very fast, will never produce nice paintings. How can this be right? Of course if the artist is exceptionally slow, he will never finish his painting - but ultimately mechanical speed is of less matter...

kusmi on November 18, 2008 5:18 AM

Actually, a broken clock is right twice a day !

Once from 0 to 12am
Once from 12 to 0pm

Jerome on November 18, 2008 5:18 AM

Anyone out there who can not type over 80wpm that is trying to justify that you don't need to type fast would have a completely different opinion if they could type up to speed. My suggestion, just learn to type, it is not that difficult, and then you will learn to value it.

this is the program I use: http://klavaro.sourceforge.net/en/

roberto on November 18, 2008 5:19 AM

Why, why can't we finally get rid of that stupid useless obstructive shift between the key rows? It was introduced to allow levers to fit one next to another beneath the keyboard. We don't have those levers for half a century already! It absolutely doesn't help for fast typing. Let's get rid of it and make keyboards straight and square. It'll be much easier for typing. It can even be done very smoothly, w/o forcing everybody to switch to a new standard in one night: let's make keyboards with the rows shifting towards the right locating one millimeter per three or five years. In just two decades we'll have an ideal keyboard. (I mean physically, of course the QWERTY layout is one of the stupidiest things we use.)

Let's Make The World Better on November 18, 2008 5:28 AM

Your speed was: 4538wpm.

use programmer's favorite: copy-paste

Usman Shaheen on November 18, 2008 5:31 AM

Thanks for the article. You convinced me to look a second time how to change to Normal Style on Word, which didn't use to have a keyboard shortcut (or I didn't find it).

I found lots of good ones:

Ctrl-[] - Font size up/down
Shift-Ctrl-N - Normal Style
Ctrl-1,2,5 - Single, Double or 1.5 spacing
Shift-F3 - Change case between CAPS, lower and Sentence

Thanks for pushing me to learn them, I can now do most of the stuff I used to do with the mouse with the keyboard.

PRMan on November 18, 2008 5:32 AM

I have two majour problems with touch-typing in english:

1) I am russian, and I learned touch-typing in russian long time ago. But when I try to learn touch-typing in english (I did try) - I get screwed, just because russian and english have several symbols that sound the same, but lay under different keys. Amd I make mistakes all the time when trying to type in english without looking at the keyboard.
2) And even if I was touch-typeing in english, my eyes would hate that. Switching from the screen to the keyboard and back is sort of training for my eyes' muscles. I used to type in russian long texts. It was a disaster every evening...

atomset on November 18, 2008 5:32 AM

Grr, 75.

Timothy Andrew on November 18, 2008 5:34 AM

flame Wtf, I got 97 wpm, English is not my natural language and I am not even a developer.. You guys need some training :-P

Ced on November 18, 2008 5:34 AM

Your points about typing are entirely valid, but one point I think you missed is that typing out code is not the same as typing out paragraphs of text. Code contains relatively large numbers of non-alphabet characters, which are not as easy to type. Additionally no-one types out code in one long block, you constantly jump around adding, tweaking, reading.

Beyond a basic ability to touch type, I do not believe there is a necessity to have a high wpm.

Richard on November 18, 2008 5:36 AM

To be honest typing speed is a factor but is it really that a big issue. I guess it is hard to type fast and think fast. Something's going to break. I am working on my typing but there is an unique problem here in Europe. WE have like 10 possible layouts of the keys here. And me going around from country to country and US keyboard is not always an option.

So keep on hitting those 80+wpm marks but I wonder if a application typed sp quick would actually compile.

Dejan Fajfar on November 18, 2008 5:37 AM

I found a way in which programmers differ from typists:

click the Start the clock button, copy the sample text below

So I clicked, selected, Ctrl-C, Ctrl-V, stop. 4157 wpm and 103 mistakes :).

(102 wpm without errors on the first serious attempt though)

(also, seems I wasn't the first one to use copy/paste :))

mark on November 18, 2008 5:37 AM

Personally, I don’t know any programmers who *CAN* type. I’ve always really liked your blog Jeff, but this is a BS post. Programming is not about typing. How fast do you need to type to write 15 lines of code/day!?

Booji Boy on November 18, 2008 5:37 AM

When I was in high school (late 60s, early 70s), typing class was recommended for all college prep students, and that's where I learned -- on massive mechanical typewriters that strengthened the fingers as well.

Years later -- in the early 80s when PCs were being introduced into the insurance company where I worked -- I discovered an interesting phenomenon: The intelligent women of my generation often had not learned how to type for fear of being shunted into secretarial jobs. They were suddenly at a disadvantage with the new technologies.

Charles Petzold on November 18, 2008 5:42 AM

Broken clocks are right twice a day..

Not if they display AM/PM, they aren't. It's my imaginary clock, damn it, and I get to make the rules here!

Jeff Atwood on November 18, 2008 5:42 AM

A carpenter's job is more than cutting wood, but would you hire one who only used hand saws because he didn't bother to learn how to use power tools?

Non-typists won't get this: typists write, while non-typists type and write. Typists don't know they're typing.

Would you ride with a driver who had to look at his hands every few seconds to find the wheel?

Roger on November 18, 2008 5:44 AM

Let's not forget how fast copy and paste is... I can type at 5432 wpm:

http://employees.claritycon.com/pwalke/blogs/typingtest.JPG

Pwalke on November 18, 2008 5:44 AM

Just 42 wpm here. I did take a touch-typing course once, but I didn't find it very useful.
It seemed to me that that the emphasis on placing your fingers on the home keys was more suited to English than code (e.g. curly braces end up on your right pinky, control and tab on your left pinky and the cursor keys are unreachable).

Are there any programmer's touch typing courses that use different techniques?

At the moment I generally use two fingers and a thumb on each hand to type while while staring at the keyboard. This actually works okay but probably isn't helping my posture!

Graham Stewart on November 18, 2008 5:44 AM

Come on...cut him some slack..will you..
he meant broken digital blocks in 24Hr format...
:)

Nice post BTW.

Samrat Patil on November 18, 2008 5:47 AM

ITT: List of everyone's typing speed.

Chris Jones on November 18, 2008 5:47 AM

Jeff,

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.

Esteban on November 18, 2008 5:48 AM

Mm, I do not know how accurate the measurement is for me: 68wpm, 4 errors. Well, I do not mean technically accurate. Yes, I typed 68 words per minute and made 4 errors, but I am not sure how significant this is.
I was mostly hampered by reading the text. The text was more or less random rambling for me - random rambling with weird grammar and strange words I never heard of before, resulting in a quick huh? what is that?-pause, resulting in a pause while typing.

If I have to hack down a thought in python, this is different. I just know where I want to go, I know the structure and thus, I don't have such Huh?-moments. Thus, I type faster when I type code and not random weird texts. I even measured this once using a traybar wpm-counter. When I was hacking a thought I just wanted to get hacked down, my wpm sped up to around 90 - 110 wpm, when I was just fixing things while thinking about it, it was at 20 and when I was thinking, it was 0 :-)

Thus, I think you are right to a certain degree. You need to be able to hack down a certain thought you have right now in your current language at high speed, so you can go to the next thought, yes; however, this does not imply that anyone who consciously types 30 wpm must be removed from the programmers pool.
It would be much more interesting to have a good tool that tracks your wpm during the day at work and throws some datamining at it in order to state right, you appear to have 3 modes of typing: one with 90 wpm, one with 20 and one with 0.

Greetings

Tetha on November 18, 2008 5:48 AM

DAMN!!..i get your point now...

i gotta be a good typist now that my joke is slaughtered...between thinking up the joke and posting it...
:)

Samrat Patil on November 18, 2008 5:49 AM

pedanticComment relevant=falseActually, *analog* clocks are right twice/day. Digital clocks *may* be right either once or twice per day, depending on the time shown and the convention followed (e.g. if time was being displayed in 24-hour format and the clock stopped at 08:44 the value is ambiguous and could be viewed as both 8:44 AM and 8:44 PM, whereas 20:44 is unambiguous)/pedanticComment

While I agree with your post Jeff, a few of the comments have me puzzled. Folks, it's not how fast you type, but how much of your thoughts are devoted to typing versus problem solving. Blinding speed that produces unusable and unmaintainable code is still spewing...

Typing is a skill. For *most* of us it's not our primary skill, but we should be reasonably competent at it in order to perform at a high level at our primary skills. Decathletes may not set records pole vaulting, but they have to clear the bar.

Gilbert on November 18, 2008 5:50 AM

60 WPM Qwerty
47 WPM Dvorak.

I program at work in Dvorak, at home Qwerty (wife). I find programming much easier with dvorak, while typing text such as that test is easier with qwerty. I think it is mostly because of muscle memory. When learning Dvorak, I found that the hard part was relearning how to type words. With Qwerty I wouldn't type f-r-o-m. I knew the muscle movements for from. As I use Dvorak more and more, I am getting better at typing with it. This test was a bunch of words I don't need to use much at work (blood-red shimmering glory of the sun), so I can see why that score is a bit behind.

Phillip on November 18, 2008 5:53 AM

I think this is a great point, and definitely valid.

The root of it is that typing is an abstraction layer for what we're really doing. The less barrier we have between our real task, and our conscious mind, the better. It's the exact same phenomenon that prevents people with poor vocabulary from being excellent speakers and writers. They have to put more conscious effort into communicating their ideas, rather than having them flow out.

Let's say you are raking leaves to clean up your yard. Now imagine if instead of raking up a pile of leaves (or using a leaf blower) you had to pick up 3-5 leaves individually and take them to the pile. This is what hunt-and-peck typists are doing. Good typists have a rake. Excellent typists have a leaf blower.

Alex on November 18, 2008 5:53 AM

I have the same problem with entering a room and forgetting why I entered it. I even forget that I came in there for a reason--I just see something else in the room to do and I do that instead. I've tried to learn touch-typing, too, but mid-keystroke I forget I'm learning to type and change the channel. Let's go ride bikes!

Mark Cidade on November 18, 2008 5:58 AM

Ah, but there ARE analog 24 hour clocks, these are right only once a day if broken. You see these sometimes in hospitals.
My typing? average, but autocomplete and Intellisense compensate for that. I don't just type code into notepad (well, actually for HTML, I do, because I'm obstinate)
Jeff, surprized nobody commented on your Perl slam there.

Is there a typing trainer for APL???

Nchantim on November 18, 2008 5:58 AM

Your speed was: 53wpm. Four errors.

ins't instead of isn't
fact instead of fat
life, instead of life.
glintong instead of glinting

I guess I'll be fine because I mostly program in Perl with use strict.

And, when I do get paid for programming, it is to make the seemingly impossible, possible. Typing speed is a lot less important in those circumstances. Especially since what you type when you program is drastically different than random blocks of text.

When you key in a program, you use similar constructs over and over and develop a better muscle memory for those types of text. When compilation and testing are quick, you catch errors early and often.

This post seems like an attempt to generate a lot of comments on an essentially pointless topic. You seem to have succeeded.

-- Sinan

Sinan on November 18, 2008 6:02 AM

Your speed was: 28wpm.

Congratulations! You made no mistakes, practice does make perfect.

I cannot touch type. I type with my left hand, using my right for just the Shift key and Enter etc.

To perform this test I am hampered by looking at the screen. For most of the typing that I do, input comes from my head and so I am faster. This test of limited use I believe.

Steve on November 18, 2008 6:03 AM

I certainly agree and here's why: I recently had a job where I was forced to learn and use only vim. (I am now a convert and looking to implement eclim wherever I can). however, In an environment controlled by a senior aka senile developer I was at the mercy of not understanding my editor as well as a fairly new language and template style. As a result, while I grasped the structure without immediate code completion and an easy copy and paste, some of my most time consuming bugs where simply typos.

Grant Callaghan on November 18, 2008 6:05 AM

This post is so wrong IMHO. Typing speed is unrelated to programmer productivity, unless of course you are typing in listings from an old magazine :-) As long as you can type to a reasonable standard it will not hamper the quality of your code. I can't believe you wrote this article seriously ?

Steve Cholerton on November 18, 2008 6:06 AM

Screw yer WPM - I can use VI

Michael C. Neel on November 18, 2008 6:09 AM

Typing fast is important for programming effectively. I have often ended up in the same situation you describe, where you walk into a room and not remember why you are there, but with typing. I'm working on a program, and I run into a difficult problem to solve. I sit back for a while to come up with a solution, and when I have it I try to type it in fast enough so I don't forget it. If I go too slow, the idea is lost.

I type on a Dvorak keyboard, and I have for a few years now. For me Dvorak feels a lot more comfortable. I am not tempted to look down on the keys, because the keys do not match what I type. This means I can type without hunting for the keys, and I can rely solely on muscle-memory. I'm sure you can learn this with qwerty as well, but it is easier with Dvorak. I don't type very fast though, I only got 64wpm on that test. But typing on Dvorak feels more comfortable.

Marius Gundersen on November 18, 2008 6:11 AM

50 WPM.

Not the best compared to the ninjas here, but I do believe that I type fast enough to

1)not look ridiculous and
2)not be slowed down by it

I'd rather have a colleague that types at 30WPM but knows what the hell he is doing, than someone that types at 80WPM and never heard of unit testing or IoC..just sayin'! And believe me, we find much more of the latter than the former.

Lerxst on November 18, 2008 6:16 AM

That's a pretty gay keyboard XD

KJW on November 18, 2008 6:19 AM

Hm, 64 with three mistakes.

But to be honest, I was at the same time listening (and actually paying attention to) the stackoverflow podcast :-)

Jan on November 18, 2008 6:21 AM

The best way to become a touch typist is through typing, and lots of it.

It also helps to have a nice keyboard, as discussed below.

Hail to the typists!

Indeed: and real typists use badass keyboards, like the Customizer I describe here:
http://jseliger.wordpress.com/2008/05/07/product-review-unicomp-customizer-keyboard


Jake on November 18, 2008 6:23 AM

I never learned to properly touch-type - I can type fast enough to get by though, and I find the type of things I type regularly I can do very fast.

I only scored 71wpm on that test, but English prose like that isn't my usual thing. I can bang out C/C++ and random gibberish like Perl code much, much faster :)

Andy on November 18, 2008 6:25 AM

Hogwash. Software development is a lot more than just typing and faster typing doesn't make for better code. I understand Jeff's analogy of forgetting why you walked into a room (which happens to me as well), but if you're forgetting stuff because you aren't typing fast enough, then perhaps typing speed isn't your biggest problem.

I'm a decent typist (78 wpm), but I work with someone who types everything with the index finger on each hand. He's not fast, but he's been doing it for 25+ years and is one of the best developers in my group, by which I mean he writes *good code*. The ability to write *good code*, which at the end of the day is all we're trying to do, is unrelated to the ability to type quickly. I agree that being a good typist is an advantage, but typists first, programmers second implies that being a good typist is a more important skill for a programmer than actually being a good programmer.

Extra-pedantic clock analogy comment: A broken analog clock is right twice a day because when it stops, it's still showing *some* time. When a digital clock is broken, it generally doesn't show anything on the display, so it's never right.

Graeme on November 18, 2008 6:26 AM

60 wpm no mistakes.

Sometimes Jeff I really think you're on to something. Other times(this post and last post), I think you're just finding something you do well and then proclaiming its essential for a programmer.

Typing is important -- it's how we get the code into the machine. But there are so many other things to worry about and perfect that are FAR more important. I think being a bad typist isn't that big of a deal. Our administrative assistant is a really fast typer. Maybe she should be the coder and I'll take her job.

Brian on November 18, 2008 6:31 AM

Listen to music and type the lyrics as you're listening. Start with something slow like Tea for Two, and gradually move up to REM's It's the End of the World as We Know It. Good luck with that one.

stevex on November 18, 2008 6:31 AM

Oh, man, that paragraph about forgetting what you walked into a room for is me to a T. This happens to me so often that I wonder how my brain isn't swiss cheese at this point.

Also, I know quite a few fellow Computer Science students who can't touch type. It's weird when you ask them to type a simple string into Google, and it takes 30 seconds for them to complete it.

Benjamin M. Strozykowski on November 18, 2008 6:34 AM

Why do you need to write code fast? Sounds like you need to think of a program to write that code for you. Less is better.

I guarantee ctrl-space auto complete is faster. hehehe

Joe Beam on November 18, 2008 6:36 AM

I think the issue isn't typing speed, it's that you can type as fast as you can verbalize internally. You don't have any conscious thought of what you're doing, it just 'happens'. Typing 40 wpm isn't important if that's as fast as you can think. ;-) Hunt-and-pecking is fatal, though, since it means that you don't have a good 'flow'.

That's why vi was the editor of the gods. (Emacs also, as much as it pains me to say that, but still better than the current IDE crap.) You didn't have to break your thought to find the mouse, highlight something, and then go back to the keyboard. You just thought I need to delete these three lines and *poof* they were gone.

As for typing speed, I remember typing a block of code once as a receptionist/admin walked by. She stopped, spun around, and demanded to know how I could type so fast (typically 65-70 wpm). And how I could do it when I was doing it WRONG. Like many people I'm self taught and my hand position is wrong, I hit about 2/3 of the keys with my right hand (rotating it at my wrist), etc. But when you think about it, it makes sense since I'm a large guy and keyboard sizes were probably standardized for the far smaller women of the early 20th century. She honestly seemed to be offended that a mere engineer could type faster than a professional like herself. Uh, yeah.

Chris on November 18, 2008 6:36 AM

I concur with Theta, I got 58wpm with no errors, french is my natural language. But, I do touch-type no looking at the keyboard, just the screen.

And I can honestly say that I type much much more quicker when I am writing my own stuff. In that text there, I had to pause for certain words and names, make sure to get them out properly. Also, in programming the subset of words is much more limited and we have all those strange characters/operators to add and of course the numbers.

In my work I have remarked that my muscles learn to type the words out as a whole, not the individual letters and the letters come out much faster.

Finally, just a funny thing I am often experiencing. When I am really deep in thoughts and my hands are flying over the keyboard, if someone steps up by my office, I can look at him and start a discussion with him while my hands finish the sentence/paragraph that has been queued in my brain. It is always disconcerting for the visitor and they hesitate to pursue the discussion while I am still typing away.

My thought is that if I were typing faster (I think I am running more or less around 90 wpms in those moments) my brain wouldn't have to keep this pipeline of data. Or my brain would just work even faster and faster, I don't know. Ultimately, I wonder what would be the speed limit that the brain can think ahead in WPMs?

philibert on November 18, 2008 6:36 AM

@Jon Schneider:

Yep, you're right of course: touch typing would help in all those situations and my current stare at the keyboard technique is less than useful.

But the first two don't really relate to any actual programming tasks that I regularly perform and the last one, typing mistakes, is relevant as I never make any misstakes. ;)

The question stands though: are there any specific touch-typing techniques for programmers that take into account frequent use of non-alphanumeric characters, keyboard shortcuts and cursor control?

Typing a simple bit of code like: if x[12] = '' { print($msg); }
using touch-typing from the home keys seems to involves all kinds of contortions to me.

Graham Stewart on November 18, 2008 6:39 AM

Why should I become a faster typist when Visual Studio can't even keep up with my two fingered typing? Every time I type a period it takes Visual Studio a good 10 seconds to figure out everything that could come after that dot notation.

Robert S. Robbins on November 18, 2008 6:41 AM

I learned to type using a really old version of Accutype (http://www.barrybennett.co.uk/software/typingtutors/accutype4.php, although I'm not sure the program in the link is the same I used) in my dear 086.

In my career I've worked with several good programmers that couldn't type, but let's face: typing using two fingers looks pretty unprofessional.

gux on November 18, 2008 6:41 AM

Once you have a decent typing speed (it doesn't need to be lightning fast) the next thing you simply have to do is find a good IDE with code completion and refactoring support and master it. Learn every keyboard shortcut you can. Using these tools will mean you need to type less, a lot less in most cases e.g. you can refactor code to a method with one shortcut and typing the name for. It also lowers the barrier to changing the code, which is extremely important. This is because you will not make small refactoring and imrovements to code when the cost of that relative cost of that change in terms of effort is high. Both reasonable typing speed and mastering of tools will bring that cost down enough to prevent any barriers. This can have a profound difference on your coding over time in my experience.

The best thing I ever did for my Java coding was mastering Eclipse refactorings and keyboard shortcuts.

alb on November 18, 2008 6:42 AM

It's true, faster typing doesn't make better code. And with tools like codesense / intellisense it became even less important. Half of the time I don't even write complete words anymore.

Holli on November 18, 2008 6:44 AM


3234wpm, with 78 mistakes. So copy and paste isn't perfect, but at that speed, who cares about a few typos? And you can do it without a keyboard :-)

The point that no good programmers are poor typists is a dodgy one. Like Jeff, I've never learned to type properly, but I can get by. Mostly because I've done a lot of it over many years.

And I think that's what it really comes down to - putting in the time. You have to put in the time learning, rather than just doing, though. Some people have 20 years of experience, and some have 1 year of experience 20 times.

No-one I know of was a good programmer from day one - it's a skill that takes time to develop, like any other. So I think Jeff's looking at it the wrong way around.

Typing ability is not a prerequisite of being a good programmer; it's a consequence.

Jim Cooper on November 18, 2008 6:45 AM

Okay, someone who hunts and pecks at 10wpm may be hurting their ability to code. But, what about a person who can type 40 to 60wpm? Are they typing too slow?

Back even before my days when businesses had secretarial pools, a secretary who couldn't type at least 75wpm was useless. But, they were merely copying what someone had already written. They didn't have to compose while they typed. To them, speedy transcription is everything.

We as developers compose while we write. Concentrating on being able to type without looking at the keyboard is important. Being able to touch type is also important. But typing at 85wpm? Is that really a job requirement?

There's an old joke about a man who came to this country from Europe, and tried to get a job as a custodian at a small synagogue. When the synagogue found out he couldn't read, he couldn't get the job.

Instead, the man found some rags and sold them. He took the money he made, and bought some nicer rags. Soon he had two rag carts. Later, he sold second hand clothes, then factory seconds. After that, he opened a small store, and then another. He started to sell more expensive clothes, and soon opened a store on 5th Avenue.

As his business grew, and more and more stores opened up, he realized he needed a loan. He went to the banker who drew up the papers which the banker asked him to read.

I can't read, replied the man. I never learned to read English.

That's amazing, said the banker. You are one of the biggest and best known retailers in the Northeast. Imagine where you'd be if you could read!.

I'd be a custodian at a synagogue, replied the man.

I can type around 45 to 60wpm, and I get paid a nice six figure salary. If I could type 85wpm, I would be a secretary earning maybe $35K.

David W. on November 18, 2008 6:47 AM

Srsly!? come on people you work with a keyboard all day...there is no valid excuse to not know how to use it. Learn the tools of your trade.

Dan on November 18, 2008 6:48 AM

faster typing doesn't make better code that could be argued upon. But what couldn't be argue is that faster typing DO make better comments. And better comments DO make better code.

philibert on November 18, 2008 6:49 AM

79 with no mistakes for me. Of course, if I were programming, all of the proper nouns would be auto-completed. I'd rather not have to remember how to spell 'Serengetti' (nonstandard spelling in the original text).

As important as fast typing is, isn't fast reading just as important? If you can read twice as much code or twice as many books/blogs/etc. in a given amount of time as the next programmer, you're probably going to develop faster. (disclaimer: my reading speed is consistently over 1500 wpm; probably why I think reading is so important...)

Krenn on November 18, 2008 6:49 AM

I really was enjoying Typing of the Dead until I realized that it doesn't count spaces. I was then stuck with the dilemma of either being correct and typing the spaces, or not typing the spaces to be faster. I stopped playing it after that, but am always on the lookout for good typing games (haven't found any yet).

If you do touch type, note that what kind of keyboard you are using makes a slight difference. I used one of those split ergonomic keyboards for a year (Microsoft brand) but then realized I was much faster on a regular keyboard. Unicomp's buckling spring keyboards are great and what I use now.

Also, don't worry about carpel tunnel or RSI. Read this: http://www.rsi.deas.harvard.edu/handout.doc

N on November 18, 2008 6:50 AM

It's interesting to hear the stories of smart women who hadn't learned to type for fear they'd be shunted into secretarial jobs, and of secretaries who were surprised to find that programmers could type faster than they could. I learned to type because I assumed I'd end up as a secretary, and it served me well when I became a developer I found I could almost keep up with the sysadmins (who, in my experience, are often faster typists than traditional programmers/software developers). I can type around 80-85 wpm; the sysadmins I've worked with were in the 90-120 wpm range. Must be all those Unix commands. :-)

Lori on November 18, 2008 6:52 AM

Agree and disagree.

Fast typing skills can make a bad programmer crank out a lot of code, but smart mousing and programming shortcuts, you can be a bad typer but still a good programmer.

I type around 80-90 wpm, but when you take into account copying, pasting, hotkeys for selecting text, and selecting large blocks of code with your mouse to copy, paste, drag, etc. then the wpm isn't such a big thing.

A friend of mine is a really good programmer, but probably can only crank out about 30 wpm.

I'm a speed freak though, I will go so far as to customize my start menu and favorites so they are keyboard driven. i.e. I have my start menu customized so all I have to do is [start]pmoe to launch MS Excel. (Start \ Programs \ Microsoft \ Office \ Excel)

I LOVE code snippets in Visual Studio.

Dave on November 18, 2008 6:55 AM

Thanks you so much for this analogy :

Instead of answering directly, let me share one of my (many) personal foibles with you. At least four times a day, I walk into a room having no idea why I entered that room. I mean no idea whatsoever. It's as if I have somehow been teleported into that room by an alien civilization. Sadly, the truth is much less thrilling. Here's what happened: in the brief time it took for me to get up and move from point A to point B, I have totally forgetten whatever it was that motivated me to get up at all. Oh sure, I'll rack my brain for a bit, trying to remember what I needed to do in that room. Sometimes I remember, sometimes I don't. In the end, I usually end up making multiple trips back and forth, remembering something else I should have done while I was in that room after I've already left it.

Now I can explain in understandable words to my boss why I need a good computer.

Ohman on November 18, 2008 6:56 AM

At my job, sometimes during lunch or a few minutes before the closing bell, a bunch of us devs from across the company will all jump into the same game on typeracer and go at it. Tons of fun =) Now I know I can do it during actual work time and if management says anything, I'll point them in your direction and say its a core competency. =)

iamcodemonkey on November 18, 2008 6:57 AM

I think the most important part is in the end, and those who disagree are missing the point: good typing skills allow you to type *without thinking*. It allows you to concentrate fully on *what* your writing, wether that is a poem, blog, code, pr0n, pullitzer-price material - whatever.
Look at math: strictly speaking one doesn't have to be good even at simple calculus (the 12+7=19 type) to understand, say, geometry. But not needing a calculator for basic stuff will definetely give you an advantage.
Does being a good typist make you a good coder? No. But not being a good typist will hinder you in being a good coder.

Bart on November 18, 2008 6:57 AM

Today's youth learn to type concurrently with learning to talk. I think slow typists is simply a symptom of a generation that didn't grow up with computers in-hand.

Within 10-20 years, I predict that just about everyone will type above 60wpm.

The effect I think you're seeing Jeff, is that good programmers had computers at a young age and so they are simply ahead of the intuitively-learned typing curve. Everyone else will catch up in a few years, as digital immigrants age and retire.

A good example of correlation, not causation.

Vance on November 18, 2008 6:58 AM

Another post of a sketchy hypothesis, perhaps designed to draw in comments to your blog. Typing is used to produce programs, to express, to experiment. It is a tool of production.

Some of the best programmers I've met couldn't type worth a damn. But they could use a whiteboard REALLY well. They knew how to foment ideas.

I think the keyboard has actually harmed the process -- some people should think before they type, but they type first.

Steve on November 18, 2008 7:00 AM

More comments»

The comments to this entry are closed.