I <3 Steve McConnell*
Coding Horror
programming and human factors
by Jeff Atwood

November 17, 2008

We Are Typists First, Programmers Second

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. I know, 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!

[advertisement] Lighthouse — taking the suck out of issue tracking. Developer API. Email integration. Github integration. Used by thousands of developers and open source projects including Rails, MooTools, RSpec, and Sproutcore. Free for Open Source projects.

Posted by Jeff Atwood    View blog reactions

 

« Your Favorite NP-Complete Cheat That's Not a Bug, It's a Feature Request »

 

Comments

Your speed was: 75wpm.

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

Booeeeh!!

Jef Claes on November 18, 2008 04:58 AM

echo co co co

Dan on November 18, 2008 04:58 AM

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

bush on November 18, 2008 04:58 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 05:01 AM

Is 60WPM bad?
* cries *

Allan on November 18, 2008 05: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 05: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 05: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 05:08 AM

It has always amazed me that there are some professional software developers that cannot type. Especially so when those software developers have several years of experience under their belt. I cannot imagine what type of indifference it must have taken to have spent years "typing" without actually learning how to type. I, like you, am a modest typist, only coming in at 65 wpm... but I know where my home keys are, and know what those little dots on J and F are for :-)

Jason Whitehorn on November 18, 2008 05:09 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 05:14 AM

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

Ivan on November 18, 2008 05: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 05:14 AM

Broken clocks are right twice a day..

(sorry for the pedantry) ;o)

ANdrew on November 18, 2008 05: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 05: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 05: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 05:16 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 05: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 05: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 05:19 AM

Your speed was: 102wpm.
You made 3 mistakes:

broter
pies (missing comma after)
sergvice


Can I have a cookie now?

Orange on November 18, 2008 05:21 AM

Your speed was: 4538wpm.

use programmer's favorite: copy-paste

Usman Shaheen on November 18, 2008 05:31 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 05:32 AM

Grr, 75.

Timothy Andrew on November 18, 2008 05: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 05: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 05: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 05: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 05: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 05: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 05: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 05:42 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 05: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 05: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 05:47 AM

ITT: List of everyone's typing speed.

Chris Jones on November 18, 2008 05:47 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 05: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 05:49 AM

<pedanticComment relevant="false">Actually, *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 05: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 05: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 05: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 05: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 05: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 06: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 06:03 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 06:06 AM

@Graham Stewart

> 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

Just for sake of discussion, what about:

- Transcribing some information from a piece of paper onto your PC?

- Taking a note on your PC on something another person is talking to you about, while still maintaining eye contact with that person?

- Catching typing mistakes by seeing them on-screen (for those mistakes that you don't catch "by feel")?

All of these scenarios require your eyes to be somewhere other than on your keyboard.

Jon Schneider on November 18, 2008 06:07 AM

Screw yer WPM - I can use VI

Michael C. Neel on November 18, 2008 06: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 06: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 06:16 AM

That's a pretty gay keyboard XD

KJW on November 18, 2008 06: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 06:21 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 06: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 06:26 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 06: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 06: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 06: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 06: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 06: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 06: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 06: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 06: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 06: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 06: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 06: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 06: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 06: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 06: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 06: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 06:50 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 06: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 06:56 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 06: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 06: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 07:00 AM

"Don't just type random gibberish as fast as you can on the screen, unless you're a Perl programmer."

Every time you post one of your Perl digs my desire to sit down and show you the thrilling beauty of Perl grows. So, I conclude that being a smart sort of guy you really want to learn Perl and you're just hoping to goad someone into teaching you :)

Andy Armstrong on November 18, 2008 07:01 AM

We are programmers first and typists second. To crib from Dijkstra: "Computer science is no more about computers than astronomy is about telescopes".

You can learn to type and you can learn to program. Knowing one does not make the other automatic. I personally feel that there is a bare minimum that all programmers should be able to type comfortably at, but I would take an excellent programmer who hunts and pecks over a 120wpm wtf any day.

Teaching someone to type is a lot easier than teaching someone to program effectively. What you are trying to do is to equate the entire profession to the easiest part of it. It degrades and lessens the profession to say that we are "just" typists.

I've been a long time reader of Coding Horror and I've often felt that you've missed on some things, but I've always seen where you were coming from and saw your point of view. However, there is no defense of this post and I honestly cannot believe that you actually posted it. If you don't have the dignity to be ashamed, don't worry, I am ashamed for you.

BA on November 18, 2008 07:03 AM

Great post and absolutely valid. As a programmer, you should be able, to use a keyboard without thinking about it.

I have tried to learn dvorak (hoping to become a bit more effective and to scare people, who take my keyboard). And while on dvorak, I still have to think about what my fingers do. And my brain lacks the power to think about typing and coding at the same time... I either make stupid mistakes, that I would not do normaly or I am incredibly slow.

(nonetheless I would still recommend learning dvorak as it is a very interesting experience, to relearn all your fingers to something different).

By the way. There is a very interesting keyboardlayout, called mirrorboard. Maybe not the most effective way to type, but hey - it enables you to type while eating or holding a cup of coffee ;-)

http://blag.xkcd.com/2007/08/14/mirrorboard-a-one-handed-keyboard-layout-for-the-lazy/

Mo on November 18, 2008 07:09 AM

63 wpm, 1 mistake.

I think being able to type is fundamental to programming however most of the programming work I've done rarely relies on being a very quick typer. I spend a lot more of my time thinking. I'm still very new at this though!

@Graeme - Imagine that he could type at 80wpm though. He could write 2-3 times as much great code as now!

`Josh on November 18, 2008 07:12 AM

Instead of just remembering what I need to do when I go to the "other" room, I should just run really fast. haha, I should try doing this at work.

Co-worker: (slightly yelling) Where are you running to ?

Me: Can't talk, must not get distraccctteedd... (zooms by)

--

This makes me think of the tortoise and the hare. If I remember right the turtle wins ... but obviously not because of his speed. I don't think I completely agree with what your saying. Not that learning to type faster is a bad thing, but many "rookie" programmers like myself have bigger issues to tackle.

Nick on November 18, 2008 07:12 AM

And writers should know how to type too! :)

Practicality on November 18, 2008 07:17 AM

68 wpm, no mistakes, on second try and some tiring (missed to start the clock on the first try...). I currently won't be able to hold that speed for longer passages of text. BTW, I learned typing at school on mechanical, electric and finally electronic typewriters, in that order, followed by a C64...
Device: Cherry G80-3000 with click characteristics. Not as expensive as Das Keyboard. I simply like it; reminds me of some of the massive keyboards I've used with PCs and XTs but is much easier to type on :-)
And I agree with Steve and you (already read his article when it was published); time you don't need to spend thinking about operating your tools is time you can spend thinking about your program, avoiding micro-context switches.

Murphy on November 18, 2008 07:18 AM

> although I do reserve the right to wonder how you manage to program without using your keyboard

http://uk.youtube.com/watch?v=KyLqUf4cdwc

Aaron Bassett on November 18, 2008 07:26 AM

Jeff really the title of this post should be reversed. It should be "We Are Programmers First,Typists Second". I've seen plenty of devs who could type fast but could there code compile or be maintained by anyone but them? The most important thing really is concentrating on correctness, maintainability, security, and lastly performance.
Typing is important too but it is last on the list of the attribute checklist of a successful programmer.

o.s. on November 18, 2008 07:32 AM

"At least four times a day, I walk into a room having no idea why I entered that room."

My cat does that too. Usually, he's in big hurry. I figure he must be very, very late.

twmcneil on November 18, 2008 07:34 AM

Sometimes I think developers should type less and think more.

Like the jazz veteran said to the rookie, "Don't just play something! Stand there!"

asdf on November 18, 2008 07:35 AM

I'm not convinced that typing is a core programming discipline.

It takes so much more time to figure out what code to type than it takes to actully key it in that the typing time itself is insignificant.

Perhpas I over-edit, but even when authoring email and documentation, I spend far more time considering my words than I do typing.

Also, as Usman Shaheen first posted earlier. Work smarter, not harder.

37wpm, by the way.

Zack on November 18, 2008 07:41 AM

First off, lousy typing test. It gave me two mistakes for typing the second-to-last sentence correctly. Apparently "would rouse" != "would rouse".
But I call shenanigans on this entire hypothesis anyway. I've known lots of developers who could type code blazingly fast, and they tend to write unelegant and unmaintainable solutions because they're racing to express the first and most obvious solution that pops into their heads. I've known (far fewer) developers who type painfully slowly, but who *think* a lot first. Guess which one I'd rather work with.
If you're one of those developers who *thinks* through a problem by writing down your thoughts in code, then yes, typing well will get you there faster (though paragraph typing tests that don't even use curly braces have jack to do with code typing skills). If you're not that type of coder, spend your time practicing with a whiteboard and your brain, not seeing how fast you can type a three-page unmaintainable nested for-loop.

E.Z. on November 18, 2008 07:42 AM

I type at 158wpm (according to Guiness World Record measurements) and I have the opposite problem - sometimes my brain can't keep up with my hands!

My tips for typing faster would be:
1) Try to type a word at a time, not a character at a time. Most people use a small collection of words over and over again, and your hands can be taught to remember how to type words in their entirety without thinking about them.
2) Keep your fingers very close to the keyboard. Less distance to travel.
3) Never, ever, look at the keyboard. Not even even if you have a blank one.

Andrew M on November 18, 2008 07:44 AM

Having a decent typing speed is probably quite useful as a coder. Thing is, typing tutors teach us how to type /words and paragraphs/, not snippets of code.

Our code is full of brackets, dots, semi-colons and other unusual characters. So being able to wittle out prose at 95WPM might make you look good, but can you find the $ key with your eyes shut, or hit the sequence

Plus-equals-tab-enter-enter

without looking at your keyboard?

So we're not typists; providing you can type at a consistent speed and use more than two fingers, it probably doesn't matter what that speed is. Forgetting what I'm typing isn't because my fingers move too slowly, it's because I don't understand what to do so I actually need to stop typing and have a think about it.

It's more important to know how to use your editor correctly, than to bash text in as fast as possible. I wonder how many of us use Visual Studio and haven't used the refactoring tools, or ignore intellisense - or use a bog standard text editor when there are much better alternatives out there.

james on November 18, 2008 07:44 AM

It's not WPM that matter, it's LPM (lines per minute).

I would put a lot more value on knowing how to work your IDE and 3rd Party tools to make you a faster programmer than WPM.

Take for instance this CodeRush command:

pl.s

That's ONE word that generates this:

private List<string> _list;
public List<string> List
{
get { return _list; }
set { _list = value; }
}

1 < 14 words :D

I would take the time to learn CodeRush than become a better typist any day. After you got that down, THEN become a better typist to send emails and type up requirements faster.

Scott Belchak on November 18, 2008 07:46 AM

Found this post so interesting I blogged about it myself (http://halfbadboy.blogspot.com/2008/11/programmers-are-typists-and-more.html). Even more interesting has been to read through the comments and see that frequently, the people who think typing speed doesn't matter tend to have a low typing speed, and those who think it does matter tend to have a high typing speed.

In my experience as a software engineer, typing is a big part of what I do for my job, which is not always writing code. Writing design documents, API documentation, test cases, and SDK documents are other aspects of my profession where I also benefit from strong typing skills. And I can't use code completion or other typing shortcuts in an IDE to help me out there.

Matt Ryan on November 18, 2008 07:49 AM

Jeff, you can link directly to a quote in IMDB. Just see the page source and find the closest to the wanted quote. I did it today.

André on November 18, 2008 07:50 AM

I think a 40-60 is a good "standard" - it's fast enough that you can type about as fast as you compose. Faster is always nicer, of course. And in today's world it's scary how many people can't type more than 20 period. (I'm probably about 45 words these days - haven't had time to check recently - but I'm still tagged to do dictation around the office.)

I will agree that "standard" typing doesn't translate very well to some programming languages (Perl, I'm lookin' at you, my friend). But the mechanics are the same - you should be able to type without looking at the keyboard.

A Gould on November 18, 2008 07:50 AM

I can see your comment system still sucks. Anyway, find the "a name=" closest to the wanted quote.

André on November 18, 2008 07:50 AM

Your speed was: 79wpm.

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

dkd on November 18, 2008 07:52 AM

Andrs Heljlsberg is one of the greatest breathing programmers, right?
For me, uh.. i don't know, but he looks lik a 35-40 WPM typist to me. http://channel9.msdn.com/pdc2008/TL16/

Ahmed Halwagy on November 18, 2008 07:56 AM

Typing isn't that important, if it were, everyone would use Dvorak:

http://en.wikipedia.org/wiki/Dvorak_Simplified_Keyboard

Breck on November 18, 2008 08:10 AM

@kusmi

> An artist, how can't paint a wall very fast, will never produce nice paintings.

I think you're missing the point. Slow typists and fast typists can both produce great code, but which would you rather have on your team?

If you have two developers of the same caliber and one types twice as fast as the other it stands to reason that you would get more work out of the faster typist.

Todd on November 18, 2008 08:11 AM

I went to school with someone who has a nerve disorder where they can only move their head and left pinky (which they used to control their wheelchair). He was a CS student and he would program by using a typing rod attached to his head.

What is amazing is that he would finish his assignments before any of the other students.

You can type as fast as you want, but if you can't think, you are useless as a programmer. We are thinkers first.

mempko on November 18, 2008 08:21 AM

There are actually programmers who hunt and peck?
I don't even see how that's possible... By the very nature of typing all the time, you should just naturally learn how to type!

I could never do the whole home-row thing. I'm a self-taught typer as well (I wonder how many programmers are self-taught?)

As,pr on November 18, 2008 08:28 AM

98 wpm without errors (2-3 backspaces though). English isn't my native language, but I did have typing classes in school.

toupeira on November 18, 2008 08:30 AM

75 WPM, one mistake... which wasn't really a mistake, but me spelling stuff the proper, Canadian (or English) way.

Gray --> Grey.

:p

Daemonic on November 18, 2008 08:37 AM

I hate QWERTY. It was made to be inconvinient, and it really is. I'm Russian and spend much time at forums, where I use common Russian layout &#1049;&#1062;&#1059;&#1050;&#1045;&#1053;. It is arranged in such a way that most of the frequent letters are typed with the forefingers.

When I use QWERTY, howerver, I have to use my ring and pinky fingers a lot, which is not really comfortable. And even worse, I have to use my left hand more than the right hand. It's not problem that it is left, I play guitar besides programming, so fingers on both of my hands are quite agile. The problem is that it is slower than typing with two hands at a time. That's why I try some weird positions of my hands to type quick and use CTRL + Space in NetBeans a lot.

Why can't the keyboard manufacturers make keyboards with a better layout, I wonder? I don't believe that it would be so difficult to switch to another layout if it's really comfortable. By the way, I don't find Dvorak much better as it still suffers form the same problem: frequent letters like "A", "O", "E" vowels on the "outskirts" of keyboard.

Malcolm on November 18, 2008 08:40 AM

44wpm.

I have never been able to handwrite clearly either, unless I write v-e-r-y s-l-o-w-ly. As a result, I've become exceptionally good at making my point in as few words as possible. In the long run, saying something accurately and concisely has been a far more useful skill than saying it quickly.

It is the same with my programming. I may not be the fastest, but in spite... no, partly *because* of that, my code is often tighter, more elegant and more maintainable than that of my fellows. It has to be, otherwise I'd be out of a job.

And the mistakes? In all 5 cases, I couldn't see the problem until I ran the spell checker.

And I agree with everything james has said. Of course, with a typing speed like mine, you need every excuse...

Kramii on November 18, 2008 08:41 AM

I agree that touch typing is a very nice skill to master because it allows you to concentrate much more on the task at hand instead of wondering "where's the damn semi-colon?", but I also think that avoiding the mouse whenever its possible is very important. Not only you will put the keyboard on fire but you'll also double the amount of code you can put on screen.

As someone else noted, mastering the tools available for your favorite language can have a huge impact on your productivity.

If you're using a decent IDE, changes are that many keyboard shortcuts are available to generate code or to define your own code templates (actually this is one of my favourite features in Eclipse)

So to sum up, if you're willing to rock your keyboard you should:
1) Play combat video games such as Tekken, Soul calibur ... for countless hours (these are great to hone your "key combination skills")
2) Learn to touch type (easy for younger devs, just avoid sms language! ;))
3) Master your tools and their shortcuts (just forcing yourself to use them for some time will do the trick, after a while it becomes a reflex)
4) (optional) Have fun impressing your colleagues with your "speedy gonzales like" coding style :)

Sébastien on November 18, 2008 08:44 AM

And now it's time for Great Actors....

http://www.intriguing.com/mp/_scripts/actors.php

"Sir Edwin: Ah, well, I don't want you to get the impression it's just a question of the number of words... um... I mean, getting them in the right order is just as important. Old Peter Hall used to say to me, "They're all there already-- now we've got to get them in the right order." And, er, for example, you can also say one word louder than another--er, "To *be* or not to be," or "To be *or* not to be," or "To be or not to *be*"--you see? And so on."

-- http://www.intriguing.com/mp/_scripts/actors.php


(Is it true that they're talking about a port from Monty Python to Monty Ruby?)

Maggie Leber on November 18, 2008 08:44 AM

Blah... I only scored 68 WPM.

Jeff, do you use the QWERTY layout or the Dvorak layout for your keyboard?

Justin Bennett on November 18, 2008 08:48 AM

I hunt-and-peck at 72 WPM. After a couple of decades of hunt-and-pecking, my muscle memory for key locations is pretty much locked in. I don't think it's important if you touch type or hunt-and-peck. What's important is if you have to look at the keyboard and/or think about the physical act of typing. Either of those would break your chain of thought. However hunt-and-pecking without looking or thinking (should it just be called pecking?), which is possible after enough "practice," doesn't break your chain of thought and can be pretty fast. As such I can't imagine that it will make someone a lesser programmer as you suggest.

Steve on November 18, 2008 08:50 AM

On "At least four times a day, I walk into a room having no idea why I entered that room. I mean no idea whatsoever."

Bill Cosby had a great album (or maybe a video) about turning 40 some years back. Its ok Jeff, you're just getting old.

Now, someone help me remember why I opened my browser in the first place...

Jeff Schwandt on November 18, 2008 08:51 AM

Programmers should also take advantage of text expansions programs such as Instant Text. <disclaimer>I did some programming on Instant Text.</disclaimer> I've used Instant Text as a part of my programming toolkit for years, and it has increased my productivity immensely.

Steve

Steve Carter on November 18, 2008 08:52 AM

8 WPM - Beat that fools

HB on November 18, 2008 08:54 AM

it may not make you a better programmer but it will make you a more efficient one - of course, we are now equivocating on better and efficient - the conundrum continues.

(I didn't look while typing this and hit backspace many times.)

john on November 18, 2008 08:55 AM

87 wpm and my one mistake was putting a period at the end of that paragraph (apparently that typing test doesn't value proper grammar).

I've been typing pretty much since instant messengers came out, which was primarily how I learned to type quickly. I definitely do not program as fast as I can type. What is the need? Programming takes thought and often pseudo-coding in my head before I can even begin to put code down in an editor. If you're going to lose a thought, write the main points down (pencil and paper is still effective!), or type the solution in plain English as a comment. Whoa, comments...who comments anymore right? ;)

I used to judge a programmer's skills by the way he/she typed, but our trade isn't to type fast. Perhaps if you were a secretary (which I've been one) or a note-taker, it would be more valuable, but good programming goes far beyond keystrokes.

Syp Vandy on November 18, 2008 08:59 AM

I have a friend who is a wizard SQL programmer, he has been typing for 20 some odd years, uses two index fingers and his right thumb tongue clenched between his teeth and with a profoundly painful expression on his face and still manages to pound out around 35 WPM. If you watch a professional anything you notice the skill with which they use their tools. Any good electrician worth his fee should be able to reach into his tool pouch hanging from his belt and with no fumbling, wasted movement or looking be able bring out the correct tool every time. When done properly it is a joy to behold. Should be the same with a programmer and his most used tool, his keyboard. Yes auto complete is a wonderful tool, and so is cut and paste. But that still leaves you wheezing in the dust behind the touch typist, which I am assuredly not. If you have the skill to think it, and you can stroke the keys like a concert pianist, then you have a better chance, in my very humble opinion, of getting it on the screen and into your code. Plus when you are being interviewed and they sit you in front of a machine and tell you to code fizz buzz in 5 minutes or less do you really want to sit there poking away at the keyboard? If you have spent the time to learn the structure, and have taught your mind to embrace that shouldn't your fingers be taught to embrace the keyboard with the same level of competency? And be honest, while the pointy haired non technical interviewer who is going to possibly give you a job may not be able to recognise good code from a busted arriea, they will certainly notice if it takes you 15 minutes of fumbling to complete a small module. While if you can smilingly look them in the face and knock out a 10 line module you just look more professional. And has been said many times more than I wish to remember, communication and selling your skills and ideas count for more than your technical skill. If you look professional, act professional, back it up with instantly demonstratable anaccilary skills, like touch typing, then in most folks eyes you are demi god like.

Craig on November 18, 2008 08:59 AM

"You made no mistakes, practice does make perfect."

I've seen a couple good programmers who couldn't type very well. I've seen zero good programmers who couldn't assemble a valid English sentence. If typing is important to a programmer, then basic syntax is *extremely* important to a programmer.

My compiler wouldn't be very pleasant if you gave it 2 complete statements with improper punctuation between them. Why isn't that an outrage to you in English?

Tim on November 18, 2008 09:02 AM

okay.
i TOTALLY want to buy a keyboard like that!!
TOTALLY!!!!!
i even went searching once for a keyboard colored like that. Most of the salesmen just looked at me in disbelief.
and problem is, that i cant seem to get any shipped in India!
:'(

-Suyi

Lackey on November 18, 2008 09:03 AM

Your speed was: 108wpm.

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

I guess deconditioning myself from QWERTY into Dvorak was worth all the tears. :)

Camille on November 18, 2008 09:05 AM

> unless you're a Perl programmer

If you planned to be here all week, don't bother.

Aristotle Pagaltzis on November 18, 2008 09:09 AM

When writing VB.NET code, 1 WPM is sufficient to keep up with the IDE. :-(

Chris on November 18, 2008 09:15 AM

I type 70 wpm on my desktop, and 90 wpm on my EeePC 701. Yes, that's weird, but somehow the smaller and closer keys are better suited for me.

Ricardo on November 18, 2008 09:16 AM

This keyboard isn't ideal, but I came in at 89 wpm.

I took typing in high school on an IBM Selectric in the early 1980s. Probably the most worthwhile class I ever took.

Steve on November 18, 2008 09:17 AM

Your speed was: 4646wpm.

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

hehehe :D

someone on November 18, 2008 09:17 AM

Gilbert was right - it's not that typing well will make you a better programmer. My gramma can type a bazillion words per minute and can't write code at all. It's about how much of your brain is being devoted to finding the right letters on the keyboard. If that part is minimal, you'll be able to concentrate on programming. Remember when you first started driving a car? You probably couldn't drive and talk at the same time - I couldn't anyway - but over time I got so driving the car was an instinct and I could pay more attention to other things, like situational awareness, planning my route, watching for shoe sales, etc...

When I'm typing code I don't have to think about the typing part, and that lets me get the coding done more easily. Works for comment writing too. BTW, I also find that people who type well also seem to write better in general - they make fewer spelling errors.

On the typing test - I think the "words and numbers" test is more like coding. Got 30wpm on that one with 1 mistake. 50wpm on the text with no mistakes.

Jasmine on November 18, 2008 09:22 AM

Believe it or not, a Microsoft Natural Keyboard was instrumental (pun not intended) in helping me achieve touch typing nirvana; Although I'm definitely curious to find out what my score will be on those lovely typing tutors you've posted.

Kulin on November 18, 2008 09:22 AM

Ugh. Anyone that holds their role as a typist higher on their list than as a programmer has to be a pretty shitty programmer. I hate to have to put it so bluntly, but there it is.

Yes, typing speed is of value, but I spend more time "programming" than "typing" and am damn proud of it. Typing is just one of those sordid things I have to do between bouts of "programming". Shortening that time is valuable but never more important than the "programming" itself.

Jeremy Gray on November 18, 2008 09:35 AM

Typing alone will not make you a programmer!!! You must actually write the program code, not just type..

Jules on November 18, 2008 09:45 AM

Typing is not the most important tool for an excellent programmer - your brain is.

Spend more time thinking, designing, drawing diagrams, explaining you design to others BEFORE you start coding. Apply Occam's razor and make you design simpler and simpler. Spend even more time when designing APIs. Even better, get the people who are going to use the API design the API to make it easy for them to code to. Use a pencil and paper, and whiteboards. Avoid going straight to the keyboard.

If you program this way, you'll have less code to write (less typing), it will have less bugs(less typing to fix and much less time spent debugging), and will be easier to maintain (again less typing for the next guy).

This discussion is a lot like the who's the faster guitar player discussions out there. Who cares? The real question is "is it musical or not?"


Jon on November 18, 2008 09:50 AM

IM was the key to my success. Carrying on 3-4 conversations in college, watching tv, and working on my programming homework forced my WPM to increase.

And yes, you can think more to type less, but if you forget that thought halfway through typing it, what did it save you?

Typing fast let me translate my thoughts once I figure out the solution faster and let me try it out faster. It pains me to see co-workers staring down at their keyboard wandering helplessly.

Matt Ridley on November 18, 2008 09:52 AM

Typing, how quaint.

I'm sorry but I CAN'T type my programs, they must be drawn.

http://www.ni.com/labview

Phil Brooks on November 18, 2008 09:58 AM

The speed you type isn't all that important, it's more important that you can (AND ALWAYS DO) look at something besides the keyboard. If you're looking elsewhere, you can think while typing, if you are staring at the keyboard, your mind is full of little breaks where nothing gets done.

I took typing in High School because I knew computers would be a daily thing for me for the rest of my life. I got the finger positioning down, but didn't get a good grade because I couldn't stop looking at my hands.

What ended up fixing me was simply throwing a towel over my hands and practicing for a few hours. My speed went down for those few hours, but by the end of the day it was higher than ever before and I was thinking in parallel with my typing instead of thinking OF my typing.

I also used to be a pretty speedy 2-4 finger typist, but that doesn't scale... It's too hard to keep your hands in the right positions when you're not looking.

Bill K on November 18, 2008 09:58 AM

I don't think it's very accurate. It says I typed "1wpm" and made one mistake. (A period!?) I'm pretty sure it didn't take me an hour to type that passage.

If typing is a core competency, I submit that spelling is another one. It's hard to find every place in code that manages delimiters or separators when people spell them as "delimeter" and "seperator."

There's also a big difference between typing code and typing in your native tongue. I don't know of any human language on this planet that uses braces, parentheses, and semicolons to the degree that C++ does.

Stefan on November 18, 2008 10:02 AM

Well, I typed at a solid 109 wpm without having actually read the text beforehand (read it a word ahead of what i was typing, not sure)..

Actually typing text isn't the problem really, but swedish keyboards have the symbol buttons used in programming on really akward keys, and I can't be assed to switch back and forth between a us layout for that.. my pinkies suffer from my laziness.

J.D. Pihl on November 18, 2008 10:04 AM

Oh, this is just ridiculous. If you think "coding is just typing," since emphasized that point, then you don't code. Steve Yeggae just rants pretentious drivel.

The idea that the biggest dirty secret in the industry is that some programmers type 40-70 WPM is just stupid. The biggest dirty secret is that there are people who call themselves software engineers who don't even know C. The biggest dirty secret is that there are people who call themselves software engineers who think that Computer Science is just theoretical jibber jabber.

The notion that "programmers who don't touch-type fit a profile" is more prentious self-agrandizement. Clearly, it is possible to be a very good programmer and not type with the speed of a transcriptionist. You're just perpetuating the ego-centric rantings of a man who fancies himself the Faulkner, nay the Hemingway, nay the Einstein of the software industry.

So you really believe that the programmers who don't post very often on company message boards are doing that because they don't type 90 WPM? You really believe that programmers blather on about "refactoring" because of their skill at typing? You think *this* is the dirty secret of the industry? That's just inane.

Charles on November 18, 2008 10:05 AM

Most useful class I took in my first two years of high school was a vocational thing. 6 weeks each of Drafting, Auto Mechanics, Carpentry, and Typing.

A. L. Flanagan on November 18, 2008 10:18 AM

I agree. I would summarise it like this: You should be able to type fast enough that the typing (mechanical) part of programming doesn't get in the way.

Wayne Koorts on November 18, 2008 10:21 AM

Here's a guess - everyone who can type fast says it's useful - everyone who can't says it isn't.

My own speed of 40 words per minute is perfectly acceptable if you consider how long I spend typing versus thinking, planning or just watching my code compile each day. I generally think about what I want my function to do, then type the whole thing at once, so there's no danger of "forgetting" how to finish a line. My guess is that in your favourite IDE, everyone's speeds would be much closer anyway.

Iain on November 18, 2008 10:25 AM

Ok, how is that god-forsaken test determine typing skills?? Determining your skills as a data entry operator? Maybe. Typing as a programmer? Hell no. It's just not related. Typing as a programmer is not looking at some text and then copying it? It's about coming up with the idea of solving a problem and then typing it up. Maybe I'm wrong, but I refuse to believe that this typing test is in any way related to my or anyone else's programming skills. It's just not related.

Gaurav Dadhania on November 18, 2008 10:41 AM

This article is absurd.
Possible Developer Roles:
Design
Unit Tests
Core Code
Testing
Bug Fixing.

- Design - is all Use Cases, UML, Whiteboards - no typing.

- Unit Testing - time spent typing is minimal, mostly code-gen, and fill in the blank ( min=x, max=y).

- New Code - they only spot with any typing, and if your doing it right, interfaces and extending base classes, you never gonna be writing a 100 line paragraph, should be little 5 line functions where typing speed is way less important than your ability to use resharper/intellisense.

- Testing, no coding here, just using the app.

- Bug Fixing, this is 45 minutes of scenario setup, and usually a 1 or 2 character change.

Run TimeSnapper and record how much of your day you actually spend in Visual Studio, or Eclipse.

Audit your Repository and see how many characters of text you submitted in the past week ( and try not to include code-gen or intellisense because this article is measuring your typing speed. )

I do agree that being able to type is important, as developers one of our primary tools is a computer, and a keyboard is the interface for that tool, and you should be skilled with the tools of the trade.

But to call me 'first a typist' is completely absurd.
My roles are more like (in no particular order): problem solver (debugging/testing), business analyst, object designer, database designer, google search expert ( honestly, we as computer people, being able to find that single sliver of information deep in some forum appears as magic to non-technical people).

THOSE are my roles, a keyboard is just a tool. You remove the keyboard and what I AM doesn't change. so no, I AM .. NOT .. First a Typist, Second a Programmer. I AM a Developer.

Kyle on November 18, 2008 10:44 AM

@Iain said:
"Here's a guess - everyone who can type fast says it's useful - everyone who can't says it isn't."

That's just nonsense. It is entirely reasonable that there are people who are not slow typists yet think pretentious strawmen are ridiculous.

Charles on November 18, 2008 10:46 AM

> Don't just type random gibberish as fast as you can on the screen, unless you're a Perl programmer.


HAHAHAHAHA arrogant ignorance is hilarious.

No, really!

Grow up.

Chris D on November 18, 2008 10:52 AM

I'm curious to know what sort of typing speeds Jeff's readers have: http://www.micropoll.com/akira/mpview/482380-119985

Guy Ellis on November 18, 2008 10:58 AM

thanks for this article.. me and another coworker mock other devs who can't type all the time.. its just stupid, or as you put it - LAZY. learn how to type people, it's not rocket science.. if you can't efficiently use the #1 tool you have to interact with a computer, then you cannot interact with the computer efficiently - which should be a primary goal of a developer.

smartyp on November 18, 2008 11:00 AM

I agree. Typing is a necessity for programmers. What's the point if you have to focus more on what keys you are pressing rather than what you are entering?

Timothy on November 18, 2008 11:14 AM

a good keyboard helps too. not like that aluminum Mac keyboard. i replaced that to get a better wpm actually.

Pixel on November 18, 2008 11:26 AM

If you're using an epoch timestamp and it's right twice a day, you're in a lot of trouble.

Dylan Brams on November 18, 2008 11:30 AM

How about Max/MSP? It's a visual programming language..

Mattijs

Mattijs on November 18, 2008 11:31 AM

> We Are Typists First, Programmers Second

Fast typing won't hurt if you intend to write a program, but it's not _that_ important, I think. I spent most time with _thinking_, not typing. Typing is just needed at the final step of writing software. I do ok with four fingers and not looking at the keyboard all the time.

Typing faster would be much more usefull with all the other stuff programmers have to type. Documentatio, Specification, Guidelines, ...

derhans on November 18, 2008 11:36 AM

I cant belive why qwerty still is de facto standard keyboard layout, it was designed to be as slow [sic] as possible to prevent typewriters from jamming up,
I've been using dvorak it for about a month now and i have to say it is much more comfortable for your hands, all common letters are placed on the homerow so no more twisting and turning all the time.
I type about as fast as i do with qwerty(which i've been using for 10years+) but your fingers dont even travel half the distance so i guess with some more training you can get real speed-improvments.
Only bad thing is that when you are to use a computer at a friend or school you can't type qwerty fast anymore :(

Oh, btw. The world record for typing fast was made with dvorak. 212wpm! :D
http://en.wikipedia.org/wiki/Typewriter#Typing_speed_records_and_speed_contests

Erik on November 18, 2008 11:38 AM

More than just typing I think programmers should be good computer users in general. Like knowing how to use keyboard shortcuts instead of the mouse is probably a great tool, better than typing really fast (thanks to Sara Ford and her VS Tips!). I'm amazed to see how many programmers are really lousy computer users...and use the mouse to do really basic stuff like copy/paste...sad.

Ricardo Villamil on November 18, 2008 11:42 AM

74 wpm. Although I think I could have done better on a test structured differently -- I naturally hit the spacebar twice after each period as I learned to do back in high school, and then had to go and correct myself, which slowed me down and also screwed up my flow with each sentence.

I know a couple of people who type over 120 (maybe not this paragraph with its awkward wording and structure, but I've seen them do it in other cases). Neither is a developer. It always fascinates me to see them type. Sentences seem to spring fully-formed onto the computer screen accompanies by a dolphin-like clicking.

Every developer I've ever watched type can do ~50 wpm at a bare minimum, and I've certainly never seen a developer hunt-and-peck unless it was for a special key on a non-standard keyboard like a laptop or on one of those ergonomic keyboards. I can't use them -- I learned to type by a combination of playing the piano and video games, which means my hands like to naturally cross-over into the others' territory if the other is busy with a corner key. My mental map can't easily handle a sharp division of tasks between my hands. I don't slow down all that much when I'm typing one-handed, either (because my other hand is on the mouse or holding a drink). I don't type like they teach you to and I may be at a local maximum for my style, but that's fine by me.

Oh, and I don't think the walk-into-the-room-and-forget thing is age. I've been doing it at least since a teenager. One that I picked up when I was 20 was where I walk into the kitchen and am no longer hungry until I leave. That one is fantastic.

Okay, so I've deviated sharply from context in lots of ways. That's awesome.

Ens on November 18, 2008 11:46 AM

Q: How did the Project Manager obtain 700 words per minute?
A: By assigning the task to 10 Developers.

erik9000 on November 18, 2008 11:46 AM

I'm so happy that I program using Perl. I can just mash the keyboard with my forehead to get my random gibberish scripts.

sutch on November 18, 2008 11:49 AM

Faster typing makes for faster communication. If you think your job is just writing code, and only writing code, I have an entry level position for you with no risk advancement. You want to get past that, you'll need to write design documents, specs, e-mails, help documents, change logs and work with other people. In short, if you can't communicate you're not going to go very far.

Tyler on November 18, 2008 11:53 AM

I'm a dvorak typist. I just use stickers on a regular keyboard and switch the OS to use dvorak. I'd like to pass dvorak on to my son, but the only way for that to happen at his school is to get an actual dvorak keyboard for him to bring in (they're not going to be switching the OS setting back and forth for him, but they may let him use his own keyboard).
I've searched. Such a beast doesn't seem exist unless I want to buy one of those keyboards with individual displays on each key which are more than just a bit of overkill.
Has anyone come across a dvorak keyboard?

Brad on November 18, 2008 11:53 AM

<quote>I don't find Dvorak much better as it still suffers form the same problem: frequent letters like "A", "O", "E" vowels on the "outskirts" of keyboard.</quote>

The reason for the layout of the common vowels is so that most of the time your fingers will roll from the outside in which is more natural than the reverse.

Brad on November 18, 2008 11:58 AM

I've never seen anyone coding that was so bad that it hurt their work. Most of the time, you end up thinking about problems or debugging code before actually writing anything. The bigger time saver lies in learning some keyboard shortcuts to reduce all the clicking that you'd otherwise have to do.

Kris on November 18, 2008 11:58 AM

125 =) No mistakes.

Eric on November 18, 2008 11:59 AM

This is my result:

Your speed was: 52wpm.

You made 8 mistakes.....

divison on November 18, 2008 12:21 PM

I got 109 with a few mistakes... BUT I didn't even try to correct them (I knew I mistyped a few words) AND I wasn't warmed up.

I did dictation 10 years back during a summer temp job. One thing about touch typing is sometimes you don't need the accuracy, so you can suffer mistakes to get through more work in a shorter period of time.

Another thing about touch typing is that you need to warm up. Seriously, just like athletes need to warm before a game, so do touch typists. I used to go in the office, and the first half hour or so I would type noticeably slower than I knew I was capable of. About half an hour in, my fingers would suddenly loosen up and I would get an impressive and noticeable boost in speed.

Also, forget programming. Programming doesn't teach you to touch type. It does make your fingers faster, but you plateau. If you want to touch type like a pro, you need to practice typing text in your native language (i.e. English). The two best ways I've found to learn to touch type: dictation (type what you are listening to, especially if you get paid for it) or copying (type up your buddy who cant type's homework, especially if you can charge him a couple bucks for it, just don't let him drop his papers off at 3am the night before an 8am class).

Yet another thing, let your fingers do the work. Don't even look at what your typing (unless you absolutely have to), look at what you're copying. Your fingers will tell you when you made a mistake. You'd be surprised, you can fix 90% of the mistakes without ever even looking at the screen. You'll just know you messed it up, and you'll know how many times you'll have to hit backspace to fix it. You'll need to practice a bit before you can master this, but it's amazing when you finally do.

Finally, learn to spell correctly. If you can't spell, it doesn't matter how fast you type.

Bryan on November 18, 2008 12:23 PM

right, and swimming is just moving your arms;
move your arms faster and you're a better swimmer :-)

Dirk on November 18, 2008 12:25 PM

Think more, type less,
generate the rest.

Silvercode on November 18, 2008 12:31 PM

I was amazed when learing dvorak - I took the plunge at work in a slower period, and got to 40wpm in 1 week - in 2 weeks I was up to qwerty speed. That's unlearning all the muscle memory.

Some tips/comments
* Don't try to do both (at least while learning).
* My speed in the test was around 70wpm (but I've been using qwerty for a bit recently)
* I still switch to qwerty for lots of copy paste coding (kidding :)) - copy paste documentation
* Dvorak is extremely close to a genetically determined keyboard layout http://keithdevens.com/weblog/archive/2002/Jul/06/EfficientKeyboardLayoutByGeneticAlgorithm (not best link...)
* Keyboard layout/language switching in Windows (left alt+shift etc) works in pretty much everything except in command windows. You need to go to the language bar and select dvorak - not once, but twice - and then it will be in the different language.
* It's way more comfortable and can prevent/help OOS
* Learning to type (with programs) starts with words instead of fksl, lask etc
* It acts as another layer of computer security - you could tell people your password :p
* Conversely, you need to set up keyboard shortcuts, so your trusted colleagues can do something with your computer.

Stephen on November 18, 2008 12:34 PM

While I largely agree with Kyle, I think there is one area where typing skills really help. That area is exploratory programming. If what you have is an idea, and you want to test it out, the faster you can turn a thought into a testable bit of code, the faster you can iterate on that idea. I suspect (almost completely without evidence) that Steve Yegge spends less time in production code than he does in research, which would lead to him valuing typing speed more.

Exploratory programming is crucial to becoming a better programmer. There's an idea in technical writing that everyone has one million words of crap that they have to get out of the way before they can write well. With programming, it's probably more like one hundred lines of crap. Type faster, and you get them out of the way faster :)

Clark on November 18, 2008 12:34 PM

*one million lines of crap. So much for my typing cred :)

Clark on November 18, 2008 12:34 PM

20 WPM and 2 mistakes.

That was with one hand,right, on my laptop resting on my chest; while I sit in my recliner.

will dieterich on November 18, 2008 12:36 PM

I used to work with Dave Cutler (architect and "chief programmer" for both Digital's VAX/VMS and for Microsoft NT).

Dave was a two finger hunt-and-peck typist - he used only his index fingers.

We always used to joke that a criteria for promotion to Consulting Engineer should be the ability to type 90WPM.

Alan Lehotsky on November 18, 2008 12:38 PM

Does +70 wpm produce less "buggy" code than someone who types less than 30 wpm?

The wpm test are great for the feeling of achievement but code writing is a slightly different discipline which has different constrains. ( "Boards don't hit back" et al Mr Lee ).

WPM tests:
From screen ( paper / book )
to mind ( duplicate )
to hands ( type )
to screen ( confirmation )


Coding:
from mind ( computation )
to hands ( type )
to screen ( confirmation )

The BIG difference in coding is thinking. It's harder than copying.

My experience is that WPM is not as relevant as simple planning. Planning is the BIGGEST factor when it comes to speed of coding.

Most programmers tend to code in "sections". After which they pause ( to amongst other things inspect the code they've just hacked ).

The size of the sections and the time spent "pausing" is proportional to the time spent planning before hand. The longer the planning the bigger the sections the quicker the code is written(1).

Take writing a letter to <place someone you want to swear at here>. You really want to say "<BEEP> OFF!", but it takes you a further 5 minutes to compose that nice letter saying eloquently the same thing.

All that said.. 67 wpm... arrrghhh ... I was..erm distracted... <reload>

(1) Naturally this is not always true but ( "print 'hello world'" ) but it's a good guide line.

imoan on November 18, 2008 12:51 PM

> Your speed was: 4538wpm.

> use programmer's favorite: copy-paste

LOL!

Patrick on November 18, 2008 12:52 PM

I currently type somewhere around 120wpm, depending on what I'm typing and what keyboard I'm on. I used to do about 90wpm, from talking a lot to people online. I got the extra 30wpm when I started to play MUDs, which I don't really recommend (because it's a ginormous time sink), but all the fastest typists I know are either professional stenographers or MUD players.

-Max

Max Kanat-Alexander on November 18, 2008 12:53 PM

Qwerty wasn't designed to slow typists down per se, it was designed so that common words in English would alternate between the left and right sides of the set of hammers. Jams would happen when you typed two nearby hammers in quick succession.

The Das Keyboard is a pretty good idea, but you can achieve the same result for a lot less money with a bunch of blank square stickers. Or, in a pinch, with a permanent marker (though this is almost infinitely more difficult to undo - if you have a cheap keyboard you might not care)

Jake Cohen on November 18, 2008 12:54 PM

I disagree pretty much entirely with this post. Yes, a coder needs to be able to type accurately. But quickly? Not really - while coding, I rarely type at anything near what I'm actually capable of. Because my job is to think, not to type - with the right tools to minimise the amount that *must* be typed, I actually spend relatively little time doing so.

Simon on November 18, 2008 01:00 PM

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 01:01 PM

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 01:32 PM

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 01:33 PM

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 01:35 PM

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 01:47 PM

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 01:53 PM

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 01:56 PM

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 02:04 PM

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 02:22 PM

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

jimmy on November 18, 2008 02:38 PM

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 02:51 PM

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 nam