How important is it to be able to type quickly? Jeff Atwood has said numerous times that programmer must be a good typist. For example, a few weeks ago he said
I can’t take slow typists seriously as programmers. When was the last time you saw a hunt-and-peck pianist?
But programming is not like playing piano. Programming is more like composing music than performing music. Most composers can play piano well, but some cannot.
What if you write prose rather than programs? In his book On Writing, Stephen King recommends writing 1000 words per day. If writing were only a matter of typing, how long would that take? Half an hour at a modest rate of 30 words per minute. Say you have to type 2000 words to keep 1000 due to corrections. Now we’re up to an hour. People who write for a living do not literally spend most of their time writing. They spend most of their time thinking.
Clearly it’s good to be able to type quickly. As I’ve argued here, the primary benefit of quick data entry is not the time saved in data entry per se, it’s the increased chance that your hands can keep up with your brain.
However, a slow typist can still be productive. Consider physicist Stephen Hawking. He is only able to communicate to the world via a computer, ALS having destroyed nearly all of his motor control. For years he controlled his computer via a switch he could toggle with his hand; he now uses a camera that detects blinks. He says he can type 15 words per minute. Still, he has managed to write a few things, 194 publications from 1965 to 2008. You may have seen some of his books.
Learning to type well is a good investment for those who are physically able to do so, but it’s not that important. Once you reach moderate proficiency, improving your speed will not improve your productivity much. If a novelist writing 1000 words per day were able to type infinitely fast, he or she could save maybe an hour per day.
You many not be able to increase your typing speed too much no matter how hard you try. According to Guinness Book of World Records, Barbara Blackburn was the world’s fastest English language typist. She could sustain 150 words per minute. That means she was only 10x faster than Stephen Hawking. Most of us are somewhere between Stephen Hawking and Barbara Blackburn. In other words, nearly everyone types at the same speed, within an order of magnitude.
Related posts:
Experienced programmers and lines of code
Dumb and gets things done


{ 6 trackbacks }
{ 105 comments… read them below or add one }
John 12.09.10 at 08:29
Regarding Jeff Atwood’s assessment typing and programming, I imagine good programmers are often good typists. Typing well may be an indication that a programmer cares about his profession, but if so, he’s a good programmer because he cares, not because he can type well.
Tom B 12.09.10 at 09:07
I think the importance of being a good typist is that the act of typing doesn’t distract your train of thought. The speed is probably less important then the ability to think and have your thoughts come out of your fingers.
Andrew 12.09.10 at 09:39
John, I agree with your comment. I interacted with a lot of bad programmers, almost universally they could not touch type. My thought on the correlation was, they did not care about the execution of their craft, because if they did, touch-typing would greatly increase their effectiveness.
As a programmer, you don’t need to take dictation at 90wpm. If your error rate is very high, and your typing rate is very low, you will spend a lot more time just keying in your thoughts than you would otherwise. Not learning how to touch type shows that you don’t care about that lost time, which probably indicates you don’t care about your overall ability to get things done.
Jason 12.09.10 at 10:05
Jeff Atwood’s too easy a target, John — nobody ever said he had a deft hand with an analogy. Also, a closer comparison with a composer wouldn’t be skill at the piano, but speed writing musical notation. I found that I could get a lot more done on a piece once I changed my round noteheads and shaped flags to hash-marks and slashes for exactly the reason you point out: my hands could get a passage I’d worked out written down on paper while it was still in my memory.
Sreenivasa 12.09.10 at 12:34
I used to type close to 60 words per hour. I realized, in programming it doesn’t matter how fast you press keys, it’s matter of what keys you are pressing in what order. I slowed little bit but increased my accuracy considerably.
Mohammad Elsheimy 12.09.10 at 13:22
I agree with you, it’s not how fast you can type, it’s how to keep your brain out of interruptions because of your low speed. As you said, you strictly should keep up your hands with your brain.
As a programmer, it doesn’t make sense if you’re typing at 150wpm while making lots of errors. Programmers gain speed gradually as long as they are coding for the market (not just practicing) that requires them to write lots of code all the day. Plus, programmers memorize all keyboard letters and symbols that no one else can really know them all. However, when programmers leave code and try to write any other thing, they usually type with errors because they used to code, to write in a special way, to use some strange abbreviations and shortcuts, and special way in character casing.
JG 12.09.10 at 19:51
Depends on your “speed of thought”. I learned touch-typing on a manual typewriter long ago and can still type 80-100 wpm, sometimes faster. Sometimes I still can’t keep up with my speed of thought. But I’m certainly glad I can touch-type because I don’t actually think about the typing part but about the content as I am typing. For a language I know well, this helps me immensely. YMMV.
T.W. 12.09.10 at 20:55
When someone’s holding a good deal of context in their head (i.e. programming), I’d argue that a quick typing speed makes it easier to act on one’s thoughts before any one of them is lost. Oftentimes code needs to be revised, and the cost of each mistake is multiplied when each line of code takes longer to rewrite.
Learning to type was a basic requirement I had to meet before I graduated from my public U.S. high school. I haven’t yet met a fellow employed programmer that hasn’t learned to type. Management types, yes, but programmers no.
Raphael Pereira 12.09.10 at 21:45
It’s not about speed, it’s about accuracy. For example, how much effort (lines of code) does it take to write a simple quicksort in C? Let’s say x. If we were to write the same quicksort in Haskell, that would result in code 2x or 3x shorter. The idea stays the same no matter if you are a quick typer in the C world, or a slow typer in the Haskell world. Even if you are a fast typer typing Haskell, that doesn’t change your status to a better programmer, it’s just one of the many skills that would be nice to see in your toolbox, but are not essential.
Dubbs 12.10.10 at 03:34
A programmer that types slow, shows that they don’t have experience. By default a programmer should be able to type without looking at the keyboard, or hunt and peck. A keyboard is a tool of the trade, and they should be very good at using that tool. You wouldn’t want a plumber who didn’t know how to use a monkey wrench, or a mechanic work on your car and they don’t know how to properly use a socket wrench? That is the same with programming, if you don’t use it properly, then it shows that you don’t know the tools of the trade as well as you should.
SteveBrooklineMA 12.10.10 at 09:42
Typing ability does matter. Just try programming using a Dvorak keyboard. Even a split keyboard is enough to trip me up. Really, even an oddly placed ctrl key is often enough. It’s the distraction.
I. J. Kennedy 12.10.10 at 21:22
At Microsoft, more than one programmer that I worked with got RSI in the wrist from typing. I don’t know whether to be impressed by a coder typing that much, or horrified.
Florian 12.25.10 at 16:09
Touchtyping isn’t about typing speed primarily. It’s about the ability to type without having to avert your gaze from what you’re typing.
Everytime you switch your gaze from the logic you’re looking at (the code) to something else, you’re interrupting your train of thought.
There’s also the issue of efficient editors (like vim or emacs) that require you to type a bunch of commands. Typing them in a pecktyping style takes forever, but a touchtypist can issue them in such rapid succession that to the followers of lesser IDEs the activity of a vimonaut or emacsoneer look more like magic editing then something that was humanely doable.
Another issue with slow typing is if you need to write something else then code, like say, an email, documentation, hack down some dumb html or hand enter some data. Say you spend each day pecktyping 10 emails your emails for 2 hours and then you spend another 3 hours pecktyping documentation. Wouldn’t you rather use the majority of your day thinking and coding instead of wasting it needlessly serializing letters slowly?
sNobody Special 12.25.10 at 16:46
I think of the correlation works differently. It isn’t that if you can’t touch type you can’t be a good programmer but of those who are physically capable of touch typing probably haven’t written as much code as those who can and while I recognize that there’s more to coding than just churning out big blocks of code. I think that once you’ve eliminated the clueless the people who have written more are likely to be better.
Petri 12.25.10 at 16:47
There’s also the matter of comments. Writing those is tedious enough even if you’re fast typist, slow one may be tempted to skip some.
David Emery 12.25.10 at 16:59
In my experience (35 years), typing speed does count, for a couple of reasons:
1. Getting sh*t done!
2. Capturing your thoughts quickly
3. Doing comprehensive documentation
The combination of touch typing and a keystroke oriented editor like EMACS has made me very productive.
And as a side comment, on one project we had our choice of conventional editor and command line compiling, or a ‘visual environment’ (Eclipse-like.) The best/most productive people tended to use editor+command line, for a couple of reasons:
a. They knew exactly what they were doing with that tool set
b. They didn’t want to waste any cycles on GUI, they wanted to write the code, run it through the compiler, and then if necessary test it out.
Those people also tended to stay away from debuggers, too, for similar reasons.
Ludovic Danigo 12.25.10 at 17:09
You think while you type ? Really ? And that is good programming ?
I don’t type while I think, I’ve already though before hand (pun intended).
Come on guys, a program doesn’t automagically design itself while you type, does it ?
Typing is just executing. Fast is nice but mildly relevant to actual programming skill.
Frank 12.25.10 at 17:20
Florian, if casting a quick glance at the keyboard is derailing your thoughts, then you have less ability to concentrate than a fricken ferret on speed! Don’t just pull stuff out of where the sun don’t shine. Your eyes for example are saccading incessantly without you even noticing. And if you’re a programmer, and you’re in the flow ™ stuff like a glance to the keys will hardly (if at all) consciously register – let alone interrupt any thoughts!
Completely apart from that, I’d say that Stephen Hawking would probably make a better (and faster) coder by sucking at and blowing into his mouthpiece than even the fastest touch typist would.
Coding is mostly about thinking, then a lot of other stuff, and then typing: Programmers working on big projects will typically write around 10 lines of code per day, so if I bend backwards by one order of magnitude that would make 100 loc/day.
Anyways, the whole question is slightly absurd: Anyone who has done a lot of coding (which I guess might be prerequisite to being called a programmer) will have gotten used to using a keyboard. They may not be perfect ten-finger writers, but there isn’t any necessity for that. They’ll be fast enough.
jms 12.25.10 at 17:53
I think that fast typing is a side effect of doing a lot of programming. If you do a lot of programming, you will be doing a lot of typing, and your fingers should learn how to do their thing with minimal brain interaction.
I cut my teeth in the 1980s doing IBM 370 mainframe assembler programming. The IBM programming conventions are extremely heavy on comments. Generally assembler written by IBMers is massively overcommented — for a reason. It is very important that someone completely unfamiliar with your code be able to open up your program and immediately understand it well enough to make bug fixes and enhancements. This meant that every single line of code generally had a comment, and every page or two, there would be a full paragraph of comment-only text describing what was (supposed to be) happening. Once you get used to doing enormous amounts of typing, you learn to think what you want to say, and your fingers just magically make the movements. At my peak, I was typing 100WPM and essentially writing nearly bug-free code at that speed. Most of it was comments, but that was the nature of the style. And it’s a lot easier to find bugs when you’ve also written a paragraph describing what you intended to do, along with the block of code that attempts to do what you’ve described.
So if you are a fast typist, it probably means that you do a lot of typing. If you’re a good programmer, it probably means that you do a lot of programming. If you’re a slow typist, you’re probably not programming enough to get really good.
gwern 12.25.10 at 18:24
http://en.wikipedia.org/wiki/Amdahl%27s_law would seem to be relevant to this conversation.
D. Lambert 12.25.10 at 19:33
I tried using Mavis Beacon and other touch-typing-training software when I was a teenager, but I never reliably got above 20 WPM or so. Now I work as a software developer. I doubt I type any faster than that even today, but most of the typing I do (code, documentation, correspondence, anything) is short bursts punctuated by thought, revision and research anyway.
A little off-topic, but I probably only type about 3 WPM in Arabic … then again Arabic isn’t my native language, I personally have never been fully fluent, and I’m a bit rusty since the last time I studied it formally.
Another thing you need to type well, of course, is a good keyboard, good posture, good air and good light. When I’m thinking of buying a laptop, I always try the keyboard, seeing how I can type code and text. I found a Compaq Armada m700 at a flea market once and have owned a few since, because I really like the keyboard (the 3-button mouse was a plus, as well). My work-computer these days is a Lenovo ThinkPad, which also has a durable and nicely responsive keyboard.
John 12.25.10 at 19:44
There’s limited potential for typing faster. It’s unlikely anyone could improve their typing speed by 10x. It’s more likely someone could learn to get 10x as much work done per keystroke by learning their software well, writing macros, scripting common tasks, etc.
Wolter 12.25.10 at 20:01
I would not hire someone who tells me that touch typing ability is an indication of how seriously someone takes their profession. Such a comment tells me they are far too superficial to spot real talent.
I need employees who not only are able to do the job, but are also able motivate others towards excellence, something the judgmental type is unable to do.
A. Nonymous 12.25.10 at 22:53
My father was an accomplished programmer that worked on some fairly well known projects for some very well known companies, yet he was absolutely the slowest hunt-and-peck typist I think I have ever met. It was really quite painful to watch.
My vote is that typing speed has absolutely no bearing on programming capability.
I type 100+wpm with accuracy, but am definitely not in the same league as my father was when it comes to programming skill.
bhupp 12.26.10 at 00:07
Crappy programmer here, if words per minute is the measure. When I type in prose, I prefer to use Dragon – so that I can keep up with my train of thought by speaking, rather than typing. If I’m typing code, I’m in NetBeans. If you can type “com.” faster than I can, then you’re a faster typist, but who cares? If you prefer your own typing speed to using the IDE’s knowledge of the underlying API, I would hazard to say that you have more typos (and compiler errors) than I do, and are therefor less productive. The only programmer I have known in the course of my 25+ years of programming that shared this typing speed belief didn’t understand the design choice between inheritance and composition, and probably preferred his own typing skills versus reuse. I suspect he had some idiotic notions concerning lines of code as well. I prefer less lines of code. And I demand an elegant solution. So it really doesn’t matter to me how fast I can type. My $0.02.
StarwarsPuppy 12.26.10 at 00:57
Here’s the Star Wars equivalent of tough typing:
http://starwars.wikia.com/wiki/Form_VII:_Juyo_/_Vaapad
When the thoughts flow, you need to channel that stream into the keyboard, doing which needs minimal interruption.
Not to hint that programmers are a bit closer to the Dark Side, that is what *managers* are ;-D
S. Tavares 12.26.10 at 01:36
I’ve been writing code for nearly twenty years even though my left arm was amputated when I was just a teenager. Often tell people that I get paid for what I know not what I do.
Garth 12.26.10 at 02:48
The statistic I’ve commonly heard is that a typical programmer writes maybe 10 or 20 lines of code a day (presumably after several iterations of trial and error and cleaning things up). If this is true then a programmer is NOT a typist. A programmer is a problem solver who then implements the solution almost as an afterthought.
Florian 12.26.10 at 03:21
@Frank
I regularly think while I type, and I average between 500-2000 lines of code if I know exactly where to go.
And I’m not pulling this out of my hat. If I emulate pecktyping I feel horrible, I can’t keep my train of thought for the code and I’m slow as hell, also vim becomes inoperable for me in a pecktyping fashion.
There’s a thing I noticed about non touchtyping programmers:
1) They’re afraid to write documentation (not that I’m a fan, but I do it fairly quickly and well)
2) They use horrible variable names instead of nice descriptive ones.
3) Often instead of just bashing the logic down in the most straightforward manner, they go to extraordinary lengths to compose code of multiple layers of indirection and obscurity just so they don’t need to type another 20 lines of stuff
4) They’re usually afraid to to throw code away since the act of rewriting horrifies them
So yes, if you do not touchtype, you’re a worse programmer.
Mark 12.26.10 at 03:28
I’ve been a programing for 25+ years. Chief Architect on quite a few projects. Embedded and PC. I need to glance at the keyboard for reference. So I don’t touch type. But I do hold my hand in relatively the right positions. The primary job of a programmer is to think not code. Coding is what brings your ideas into existence. But most of the time its about understanding that lines particular implication to the algorithm and the edge cases of the problem domain, is there a better algorithm, should I refactor this, or is there an API for this because it seems pretty common thing to do.
I’ve tried dictating code which would be great for not only my speed but also my spelling. I found little productivity gain even with massive macroing for common things like loops and function setup. Code is notoriously full of misspellings and short variable names, and acronyms. They give enough productivity.
The reason i,j,k are used as index variables has actually more to do with your right hand location. But we tend too want more descriptive indexes that is why we spend the time. So that shows a bit of real speed trade off for quality already.
Command line hacking away is less permanent and therefore gets a greater benefit from typing speed. But if you need to do something more than once write a script.
Another good example is cut and paste the ultimate in speed. But in the end leaves code hard to maintain.
So give me a lazy programmer that thinks for productivity increases rather then types fast. One that knows the power of the command line and functional programming. I’d rather a young up and coming programmer spend more time learning basic algorithms, patterns and their related trade-offs, a deep understanding of the OS’s API they are working on, and they architecture they find themselves in. If programming productivity was about typing speed we stenographers would be making 6 figure salaries.
Cellar 12.26.10 at 03:42
You’re missing the point. Being able to touch-type shows that you’ve put in the effort to rise beyond hunt-and-peck. For a computing professional, any computing professional, this is pretty much required. Nothing says “illiterate boob” like an IT professional who’s clearly having trouble finding the keys without looking. That includes middle managers and brass. If they’re too cheap to hire a full-time touch-typing secretary, then they’d better be able to touch-type themselves. And not need a spell-checker to help them find the words either. I expect professionals to know their business.
Stephen Hawking is an outlier and so far out it’s not funny: It takes him hours to do the daily chores of getting up and going to bed, leaving him plenty of time to think. And that’s all he does. Most of us don’t have that luxury.
Personally I found that my typing speed actually increased when I started to write prose instead of code. The duty cycle of writing code is fairly low. Most self-taught touch-typing programmers aren’t that fast –some 60wpm or so, I can do 70 on a good day but I’m fully aware I’m only average for a touch-typist having known a guy born with a hand missing who does 85wpm regardless– and yes, 60wpm is quite enough but a far cry from hunt-and-peck.
Still and all, touch-typing is only the beginning. First you learn to read and write, then you learn spelling and grammar. Once you’ve mastered that you can start to say something comprehensible and perhaps someday you’ll be able to sway the masses with your prose… or your code. But if you don’t have the basics down, I’m not going to put effort into picking apart ramblings that might, possibly, contain a pearl or a gem or two. In fact, if you as much as mix up “there” and “their” often enough, or can’t be arsed to use “its” and “it’s” correctly, I’m going to drop the work and move on. There’s simply too many better things to do.
If you’re going to write then you need to pour every cluon, every brain-cycle, every tought into improving your writing. You can’t afford to let yourself be held back by having to think about where the keys are. This is the same when writing by hand: You write down the words without having to think how to spell each word, nevermind thinking about drawing each individual letter.
The original point was that hunt-and-peck is below the mark for basic proficiency expected of a programmer. And yes, yes it is. If you need to look at your keyboard when you should be looking at your screen, then you have some homework left to catch up on.
Jasper Kennis 12.26.10 at 06:04
Writing code IS like playing piano, so being fast is of the greatest importance, I’d say. We’re also composers; when we’re planning our code, when we do UML, TDD and ERD.
Of course, when we’re actually writing code, we’re still designing it as well, but by than you should have a clear idea of what your code’s supposed to do. A good programmer should be able to speed trough that proces. Of course we lose speed if we run into something new, but the actual writing of experimental code should still be done fast.
Time is money, the faster I can write my code, the more clients I can handle. Man, would I love to be “only” ten times as fast as I am now!
Time is money, maybe epsecially in our proffesion. so if I could work “only” ten times as fast as I can now, I would be mighty rich by now
Gweihir 12.26.10 at 06:08
Seems nobody of the speed-typers does any real programming. True, you can write simple business logic faster. But if any real algorithmics comes into play, thinking will take 10x…100x or more the time that typing it in will take. This means typing speed is essentially a non-factor. However those that think it is a factor, very likely do not even understand real algorithmics. If you never do anything complicated, you do of course not know that it takes time.
Basically the belief that fast typing speed matters in programming is a strong indicator of weak programming skills, as these people have not understand large part of the skill-set at all. Don’t get me wrong, there is a large need for people typing in boring and simple business logic fast, but these are at the lowest end of the competency scale and will likely remain there. For them to judge the programming field as a whole is just arrogance.
Colin Asquith 12.26.10 at 06:30
I’m a programmer and can type quite fast without looking but I have a ‘two and a half fingers per hand’ typing style, I’ve always wanted to properly touch type but think I need to go back, slow down, and start building the speed back up with the correct technique. It’s a resolution for 2011! I think if you want to master a career/area Atwood is right, try and master all of the things involved.
S. Tavares 12.26.10 at 07:18
Being a faster typist does not make you a better programmer. There are just as many bad but fast programmers as there are slower but talented coders. For that lack of speed I’ll take quality.
piet 12.26.10 at 08:05
This Jeff Atwood is not a very bright man saying this I suppose.
Wonder if he considered the outcome of his words. Anticipation you should have before publishing.
Can you imagine Moses coming down the mountain with an Apple and a PC and the 10 commandments typed wrong¿?¿?
Manuel Elaraj 12.26.10 at 08:48
Typing speed is almost as important as being a good coffee drinker. It has very little to do with your ability or even your output as programmers. I use IntelliJ and Eclipse to input most of my code, and the IDE guesses what I want about 60% of the time. Learning the shortcuts and the macros a good IDE has will make you far more productive and typing speed. Of course, you do need to be at least someone efficient at typing, but if I am hiring someone I would take the average typist who is smart over a fast typist that gives me crappy code. Also, good programmers are lazy by nature. The best code is often solves problems with the least amount of of lines. Less code means less chances for bugs.
Florian 12.26.10 at 08:49
@S. Tavares
You clearly do not understand efficiency. You don’t get to pick fast vs. quality. You get to pick efficient vs. inefficient. You can both be efficient and good. But there’s plenty of indication that efficient and good go together. Meaning that inefficient but good is as rare as bad but efficient.
Dave 12.26.10 at 08:53
I don’t think to be a good/great programmer you need to be a speed touch typist, but I know MY need to look back at the keyboard causes me problems. I can’t count the number of times I have ended up with typos and errors because of my not being able to look at the screen at the same time I am typing.
Also it is more of a problem if I am doing my thinking at the same time I am programming. Sometimes I think an then code, sometimes I think and code at the same time. Of course anyone who reads my code would think at some points I just code and don’t think at all, but that is a whole other discussion.
Dave Kirby 12.26.10 at 09:19
If typing speed was a good indicator of programming ability then where would that leave Donald Knuth, since he wrote the entire LaTeX program in pencil before he typed in a single character?
McCoy Pauley 12.26.10 at 09:32
Most of the “programmers” out there couldn’t code their way out of a wet paper bag, no matter HOW fast they can type.
Peggy 12.26.10 at 09:43
It is all about the content. Bad code can be typed quickly. Good code that is efficient and accurate takes thought. Typing speed is irrelevant.
RG Wes 12.26.10 at 11:02
As with almost very argument pertaining to programming, your perspective depends very much on where you’re coming from (pun intended). For example, I’ve read countless arguments on the pros and cons of various languages, but the truth is that opinions on either side are equally valid. The problem is that very few arguments are presented within a clearly defined context.
I believe the same is true of typing speed. Some languages are inherently more verbose than others – I know it can take me hundreds of lines to express something in one language that only takes a few lines in another. Using my preferred language, I type very little. And in my particular field, I would argue that it is more important to be able to draw than to touch type. The ability to listen, imagine, and contemplate is also vital.
For me, touch-typing would make almost no difference to my workflow. But I can easily imagine other programming roles where the difference would be substantial. Without defining a clear context, this debate is unlikely to be constructive.
John Slimick 12.26.10 at 14:56
When I became a programmer in 1961, I was told that I had to learn two skills: keypunching and touch typing. I have well outlived one — could the other be far behind?
Peter Duerden 12.26.10 at 15:32
I’m a terrible typist but a great programmer. I once thought that improving my typing would improve my programming so I took a typing course. I upped my WPM and accuracy but it made no difference to my programming! Copy typing is about learning to use the QWERTY keyboard to create spoken/written text as efficiently and accurately as possible.
For me, programming uses very different finger skills. It’s all about symbols, numbers and key-combination shortcuts. The QWERTY keyboard wasn’t designed to help with that. I’ve worn out several keyboards because the left-hand SHIFT, CTRL and ALT keys wore out!
I recently started to make the switch from Windows- to Mac-based development. Due to the different keyboard layout and seemingly torturous shortcuts my typing rate has slowed. Hasn’t stopped me from creating some kick-ass problem-solving
software though
Andy 12.26.10 at 16:23
This article was written by a true non-Vim user. Your keyboard is the main tool to get your thoughts to the computer. Faster typer is better for any task that requires you to use the computer.
Geoffrey Thomas 12.26.10 at 19:24
I’m a graduate student in computer science and minored in music in undergrad, so I have experience with coding, writing papers, and composing. While I know several good composers who aren’t virtuoso pianists, they all play and can sight-read passably well — they make fun of their ability, but they have to be at least good to be able to compose music and know what it sounds like. The same thing applies to coding: you have to be able to try things and see what the most simple or efficient or effective way to approach a task is, and you’ll never get that if you just work on paper. Granted, it’s useful to take time off from your keyboard (whether PC or piano) to think and not be at it round the clock, but you absolutely can’t come up with something offline and key it in and have it work. It’s no coincidence that the most popular languages have been interpreted, not compiled, that the REPL from Lisp has been popular for decades in newer environments, that web APIs encourage experimentation, and so forth.
Writing papers is an entirely different skill from writing code. On my most recent project I needed to write a lot of code and try several things before I found something that would work. Once I found it, though, the paper has been taking weeks to write concisely.
John 12.26.10 at 19:46
piet: I believe Jeff Atwood is indeed bright. He’s had a lot of insightful things to say, piano comment notwithstanding.
David Emery 12.26.10 at 19:54
Seems nobody of the speed-typers does any real programming.
That’s total bovine effluent. Next time you fly through Canadian airspace, including going to either Europe or north Asia, consider that the air traffic controllers are looking at code I wrote.
People who mistake ‘concise notation’ for maintainable software should be forced to maintain real systems.
Wolter 12.26.10 at 21:01
David’s right. It’s not that fast typists don’t do any real programming; it’s just that these people touting “slow typers are bad programmers” are drawing a flawed conclusion from either anecdotal or non-existent evidence, something that should raise a HUGE red flag during the interview process.
You might as well argue that people prone to eye strain are bad programmers, or people who don’t use vim are bad programmers, or people who don’t use ergonomic chairs are bad programmers, or people who don’t use DVORAK keyboards are bad programmers.
Such arguments are a sure sign of flawed logic reinforced by personal arrogance (two things that are BAD for a creative profession), and it’s something I try to weed out when evaluating potential hires.
6502 12.27.10 at 03:18
If you write a lot of code then it’s unavoidable that you’ll get a decent typing speed. And to be a good programmer IMO you need to write a lot of code (just reading may give you the false impression you know something… to really metabolize a concept so that it will really become part of you and serve you as a weapon when fighting problems then you’ve to be able to explain it with your words, with your code).
So IF you’re a decent programmer THEN you’re a decent typist… but it’s important to understand that fast typing is a mere unavoidable consequence.
sNobody Special 12.27.10 at 04:44
Another thing that John is doing here is comparing a continuous outcome (relative typing speed) to a binary outcome (being a hunt-and-peck typist). Which isn’t a valid comparison.
Shashank Joshi 12.27.10 at 06:18
A programmer should never care about typing speed. It increases automatically with the numbe of line of codes he writes.
Aaron 12.27.10 at 07:33
I would much rather hire a slow typing coder with good ideas than a fast typing one with bad ones. It’s simple reasoning: it is much more likely that the coder with good ideas will start typing faster given time, than the one with stupid ideas starting to get better ones.
sNobody Special 12.27.10 at 08:39
Everyone with the “I’d rather a slow A than a completely inadequate comparison element for comparison B” and the “My great grandfather smoked 30 packs a day and was the picture of health” please stop breathing.
The point Jeff s seems to be making is that typing speed is a proxy for programmatic ability.
Sherman Meeds 12.27.10 at 09:07
Having seen countless situations where typing speed had considerable impact on what ultimately happened, I can say that the faster you type, the easier the flow of ideas. I have seen many programmers who were constantly frustrated having to work so hard to type and it affected their ability to program. It seems to affect their ability to think. The freedom involved in being able to quickly express yourself in prose or code helps you be creative. Having to work so hard to put something into the computer cannot help but stifle a person in some way, perhaps in several.
However, I do not agree that typing fast or slow has anything to do with meeting a need to type 1000 words per day; that pertains to keeping up a writer’s skills in defining prose content, not in being `creative` or effective. Typing fast only tends to remove barriers to communication and that is a good thing.
bVoqui 12.27.10 at 09:14
Does anyone notice that, by now, most text editors provide a ‘type ahead’ feature ? So, brute force typing has no more meaning. Far more, almost 80% of useful recent projects I was involved in, were made by cut/paste/drag/ drop of ‘alien’ components. So, typing 10 or 100 or 1000 wpm is a crawling rate compared to paste/ drag 2 full chapter per hour..
Don Casteel 12.27.10 at 09:15
I find this article and the resulting conversation extremely interesting because it let me think about my own process in new ways.
As many have already said, obviously there are great programmers with poor typing skills, as well as bad programmers with great typing skills.
I can’t comment on any generalization as to “better typists are better programmers”, but to me it makes sense that better typing skills certainly don’t hurt.
I say this as someone who looks at the keyboard while typing. I am not a hunt-and-peck typist; I tend to use four fingers of both hands, but must watch the keys, looking up to the screen occasionally for a sense check. When writing non-code (like this) I think I type fairly fast, and spend much more time re-wording my thoughts, than correcting typing mistakes. When coding, the time spent typing is insignificant compared to formulating the required code. This is especially true when attempting to solve a new problem, navigating uncharted territory as it were.
The programming I do is mostly 3D graphics, and therefore heavily math based. When working out multi-variable dynamics in 3D space, the challenge is creating the algorithms needed for the desired results; this all happens in my head, getting it out through my fingers becomes trivial. Often times I complete whole sections of code never thinking about the typing, some times I can’t even remember typing it.
But…. With both text typing and generating code, I frequently mistype something, getting keys transposed, or actually offset by a key or character. Yes, I have to go back and fix it. However this costs very little time compared to grammar or spelling errors when typing text, or syntax and math errors when generating code.
I am a horrible speller… I would give up 50 words per minute of typing speed for no spelling mistakes any day.
Does this hurt my coding efficiency? Absolutely!
I try to use descriptive variable names, and often find myself having to correct misspelled variable names deep in my code. I do this much more often than fixing typos.
English is my first and only language, and I suck at it. If someone could point me to a book, or class, or training application that would fix my cross-wired brain, I would be a much better textual writer. BUT… I would never trade better language or typing skills for the visualization and mathematic skills I have, which would absolutely kill my programming ability.
Do I wish I could touch type? Yes, but only because the few typos I make are an annoyance.
Do I feel if I could touch type, I would be a better programmer? No, because typos are a minor annoyance, costing only a minimal amount of time. My typing skills hurt me much more when doing something like writing this post, but only because I’m writing this in MS Word, where my spelling mistakes are highlighted, and easily fixed.
So all in all, for me, my poor language skills have a much bigger impact on my writing and coding than my typing ability.
John 12.27.10 at 09:21
bVoqui: Your point ties back to the comparison with Stephen Hawking. He doesn’t “type” at all. Highly adaptive software presents him choices that he selects. He would not produce 15 words per minute if he were, for example, tapping out Morse code.
Casey 12.27.10 at 10:19
I have been writing code for 16 years and initially learned to touch type back in middle school. Several years ago, I broke my index finger on my left hand and part of the rehab for that was to practice typing on one of the typing practice websites. I have continued to periodically go back to that site for practice. The best I have ever been able to do is 55-60 WPM, so I doubt that I will be getting any dictation job anytime soon.
I know I have worked with people in the past that can type much faster than that and I admire their ability to do so. But I would take my ability to code over theirs every day of the week and twice on Sunday! Typing code in your language of course is the most challenging typing anyone will ever do. The use of symbols and numbers in every language makes typing code difficult. I can promise you the QWERTY keyboard did not have C++ in mind when it was being laid out.
And with CodeRush (and similar tools), I would say that pure typing skills are not as important as everyone makes it out to be. I would bet that a person that hunts and pecks, but knew all the keyboard shortcuts for CodeRush could rival the fastest typist. I know my limitations on typing speed, so I seek out these types of tools to help me out and it does make a difference. My $.02 worth.
David Emery 12.27.10 at 10:31
Typing code in your language of course is the most challenging typing anyone will ever do. The use of symbols and numbers in every language makes typing code difficult. I can promise you the QWERTY keyboard did not have C++ in mind when it was being laid out.
Not every programming language has the same dependence on symbols as those which derive from C. I suspect that some of C syntax derives from an intent to limit typing due to the technical characteristics of slow Teletype machines, etc. I’d hope we have moved beyond designing programming languages for such machines.
We should be designing programing languages for readability, not typing convenience. Remember, the number of times a program is read is much greater than (or “>>” if you prefer
than the number of times it’s written or edited.
wizardzz 12.27.10 at 10:37
I have use of only one hand for the last 12 years of my life. I have been a developer for roughly 14 years. Last year I went to a job interview for a senior development position and the interviewer was the CTO of a large financial software company. He noticed I used one hand and stated, you only use one hand, can you still type fast or does that hurt your productivity. I told him that as a developer you typically spend only about 15% of your time actually typing code, and that if he ever coded, he would know that. I then answered his question by telling him that I could type faster with 1 hand than he could with 2, which I was 99% certain to be true. I then told him the position wasn’t for me and left.
frevd 12.27.10 at 10:41
Programming is about combinatory operations, no matter what language. I’m typing at 80wpm, but what really matters is the speed programmers create models, i.e. think. Of course, typing speed matters a great deal when bringing concepts down to editor paper, not because you save time, BUT because you do not get distracted by a) finding keys (not about speed but blind typing conditioning) and most importantly b) by breaking your mental flow due to delays.
Scott Tovey 12.27.10 at 11:33
A few years ago while sitting in the job works center I was typing an article. As often occurred, the person next to me asked a question so I looked over to see what she was referring to during which; I continued to type.
I bring this up because I did this without noticing and would not have given it any though if her son had not been impressed by my apparent talent saying: “Wow! He’s typing without looking at the keyboard”.
When in my zone people tend to tell me that I type fast.
At the local community college, I have gained to some extent, the reputation of being a good programmer. Not that it was all that difficult considering the fact that I was programming long before I took a college class on the subject.
That said; my proficiency at typing has no bearing on my ability as a programmer. I would never attempt to write code while carrying on a conversation with the person sitting next to me. To be a good programmer requires some intense thinking. Intense thinking requires absolute concentration and dedication of thought.
A programmer I know told me that he once worked with a woman that could through out 2000 lines of code in an hour. It would however, take 2 to 4 hours to debug the program and get it running. He said, if she had just slowed down and made fewer typing errors, she would have been an excellent programmer.
The gal knew the language, as well as she could speak English, but, all the bugs in the code meant that it took her just as long as with a slower more methodical programmer.
Speed can be a good thing to have. Over the years however, I have learned that haste makes waste.
While it’s not likely that an individual will get hurt during a programming session, I not only have been injured on the job due to being rushed, so have others. I have also witnessed first hand the lower quality that comes from rushing a job.
Some of the comments posted here are quite irrational as well as illogical. They are akin to the response I got from a resume submission that declared: “there were so many spelling errors in your resume that I couldn’t read it”. Upon reading that statement, I promptly copy and pasted my resume into word which I believe to be a better spelling checker than my self and the tools on the website where I had posted the resume. The so many typos amounted to two misspelled words.
Typo number 1 was a legitimately misspelled word.
Typo number 2 was the purposely misspelled word in a business name.
So that particular individual was not able to read my resume due to a single misspelled word.
Look, I have compulsive perfectionist tendencies, so I’m all for doing things the right way, but if you’re going to deny a person a job because they don’t use all their fingers when they type, or they get there theirs mixed up. You are an evil tyrant pure and simple.
Being a compulsive perfectionist, I can be quite difficult to get along with. Realizing that I’m a compulsive perfectionist means that I do not ever hold people to the same level of perfection that I always fail to achieve despite my efforts to achieve them. Sure, I may blow up and get totally out of line at the first site of a mistake, like those dang pesky semi-colons that keep disappearing. But it doesn’t take me all that long before I realize that I make those same stupid mistakes.
There are mistakes however, that I have absolutely no tolerance for. Those mistakes that are not legitimate mistakes but more rightly fall under the heading of stupid. Claiming that a persons typing speed and style indicates their ability as a programmer is not a mistake. It is just plain stupid.
Far to often over the past six years I have seen so much, just plain stupid, being done by people who claim to be professional when in reality it only boils down to them being dishonest.
Employers expecting programmers to work in a high passed work environment or to multi-task.
A college’s web master/developer certification program requiring a networking concepts class which includes sub-netting a network. Yep, the first person you call when the network goes down is the webmaster. Don’t bother the network administrator, he gets paid to much to bother with such trifle issues as the network going down. Sarcasm intended.
People who expect a programmer to be a speed typist are as unreasonable as an employer that posts a position for a webmaster and expects them to know such languages as C, C++, Assembly, Java, and many other languages that have absolutely nothing to do with developing a web site.
I’m a compulsive perfectionist. I know I’m a compulsive perfectionist, but even I know that there is a limit to peoples abilities and skills. Typing fast has nothing to do with thinking up a program function and implementing it. All typing fast proves is that you have the physical dexterity and agility in your hands and forearms to be able to gain such speed in typing. It does not prove that you are a good programmer.
It is natural for your speed to increase through use. That however, does not mean a programmer is going to be typing 60 wpm. If a programmer is, he or she, is not likely to be writing a bug free program. On the contrary, it is more likely than not going to be riddled with a lot of bugs. Bugs that will take as long if not longer to correct if the programmer had debugged as each part of the program was created.
Nuff said.
JonO 12.27.10 at 11:37
I expect this is another “Which language is the Holy Grail?” argument. There are touch typists who are good, great programmers, and there are touch typists who are lousy programmers. I’ve seen and worked with both, non-touch typists: ditto.
David Emery 12.27.10 at 11:39
As a side comment, I went to a military college (http://www.norwich.edu). Few guys there could type, so I made good beer money typing term papers
David Emery 12.27.10 at 11:49
People who expect a programmer to be a speed typist are as unreasonable as an employer that posts a position for a webmaster and expects them to know such languages as C, C++, Assembly, Java, and many other languages that have absolutely nothing to do with developing a web site.
I categorically refuse to hire any programmer for any purpose who is mono-lingual and C and C++ count as 1 language. No matter what you’re doing, experience to different programming languages is in my experience essential to being a good programmer. Now maybe for some “grunt work coder” jobs, knowing and applying a single language is OK. But I’ve never worked in an environment where there was any need to hire such people.
Some have argued that typing is irrelevant because programmers should be spending most of their time thinking. I’m interested in programmers who can think about problems using a variety of tools. Many of those tools require ‘keyboarding skills’, better skills can help. Another aspect is how different people use tools in different ways. As a skilled touch typist, I’d rather backspace and retype a word than mess with the mouse to invoke the spellchecker and then click on a suggested alternative. That’s just my particular skill base. The arguments for efficient ‘capture of intent’ have been made by multiple people in this discussion. I don’t begrudge people their visual programming environments, but I similarly won’t relieve them of the responsibility for capturing/documenting ‘intent’ that is not captured in the semantics of the programming language. (And I note in passing that different languages capture more or less semantics, requiring less or more documentation for the maintainer to understand what’s going on.)
George 12.27.10 at 13:25
A lot of comments left here by readers disagreeing with you (ie claiming that typing speed does matter) are clearly from people who don’t understand how hunt-and-peckers actually type. Here’s a clue: they don’t actually LOOK for each letter as they type. They already have a good idea about where each letter is.
I have never learned to touch-type and I don’t care. I can type code just as fast as my touch-typist colleagues. Again, all you guys saying hunt-and-peckers are bad programmers don’t really know what you are talking about. Look at good hunt-and-peck programmers in the real world – they exist but not many of them do, which is why your views on them are skewed.
Scott Tovey 12.27.10 at 13:59
@David Emery:
“I categorically refuse to hire any programmer for any purpose who is mono-lingual and C and C++ count as 1 language.”
You clearly missed the point of my post. Your response tells me as well that you do not know very much about web development.
The main languages (the plural use of language in this case is not an error) are: HTML, JavaScript (for the client UI), on the server side the most common language is PHP. PHP’s prominence is due to the Linux/Apache prominence. After PHP you have a choice of Python, ASP, JSP, Java, Perl, ActionScript with Flash not in any particular order.
If you want a Desktop interface other than the browser, now we start talking Assembly, C++, Visual Basic, Java, Python or any language that just happens to fill the bill on the platform for which you are developing. The only valid development language to expect from a web developer is Java, all others are non essential.
If you think you are going to get a proficient, well rounded (as in knowing every language) developer, you are deluding yourself. No one has the time, money, need or mental capacity to know the over 2000 programming languages along with their syntactic idiosyncrasies that are in existence today. So stop expecting it. Of course, if you just happen to run into a programmer with a photo-graphic memory, you just may happen to have found one.
The point is, require what is essential to the position. Don’t ask a web master to be a generalized all around desktop developer. If you want a desktop developer, make that your job posting. If you want a web master, post only those technologies are are essential to developing your website. Be specific in what you need. If you need a C++ developer, don’t claim to be looking for web developer.
It is extremely annoying and a waste of my time to see a job post with a web developer title and to find out after clicking the link that the employer has everything listed that pertains to a desktop developer, and one or two items that pertain to a web developer.
It is not possible to get proficient at anything when you are using everything.
I repeat:
It is not possible to get proficient at anything when you are using everything.
That being a self evident truth: all the while you employers are demanding excellence in skill, you are at the same time sabotaging that excellence in skill by demanding that developers know 10+ languages.
No programmer builds programming skill by learning a programming language. Programming skill is built by using said language on a daily basis. An programmer that is proficient in a single object oriented programming language, can use them all. There is no difference in programming principles from one OOP language to the next. Certainly the programmer will have to get use to small differences in syntax, but his or her overall skill remains the same.
Typing is not always the best tool to use to figure out a programming problem. Sometimes, the best tool is to push away from the desk, get up from the chair, walk down to the vending machine, and purchase a bottle of your favorite soda. This is the only tool I have found to break out of an infinite loop.
The infinite loop is caused from being so focused on solving x problem with y solution that you can’t see the obvious. As good an idea as it was, it will never work.
Programmer Infinite loop:
1. Solve x problem with y solution that is not working.
2. Adjust code.
3. if (you are convinced y solution will not work){ GOTO 1 }
4. if(you are completely frustrated and need a drink) { getSoada(); GOTO 6; }
5. Go to one
6. solve x problem with z solution.
7. Yeah! z solution works. =)
getSoda()
{
push away from the desk
get up from the chair
walk down to the vending machine
canThinkClearlyNow();
purchase a bottle of your favorite soda.
return to computer
}
canThinkClearlyNow()
{
hey, what if I try this instead.
return idea
}
Yep, did that a few times.
Always hated the feeling of wasted time when that happened.
Scott
Scott Tovey 12.27.10 at 14:02
Eeeeeew, got a typo and my code won’t work.
Omit 12.27.10 at 14:05
It seems to me that it’s not really how fast you type… but weather you can do so without it distracting you from your real task (accurately modeling your ideas in whatever language). Being a fast typist can be an asset but any faster than you can think is irrelevant (I find that 25-35 wps is about as fast as I can think and express it although I can type faster).
David Emery 12.27.10 at 14:08
We’re getting off topic, so all I’ll say about your solution is that it’s awfully -sequential-. One advantage of working with, for instance, functional programming languages is that you can envision modes other than sequential algorithms.
I don’t expect a programmer to be expert in 2000 different languages. What I expect is that he can demonstrate more than one way to think about -and express- solutions. At the end of the day, programming is about expressing abstract solutions using a limited vocabulary, syntax, etc. See http://en.wikipedia.org/wiki/Sapir–Whorf_hypothesis
yannickt 12.27.10 at 14:10
“No matter what you’re doing, experience to different programming languages is in my experience essential to being a good programmer.”
Language specialization is often a result of domain specialization. I know a few people in the game industry who have only worked with C or C++, not by choice but simply because these are the lingua franca in that industry.
Scott Tovey 12.27.10 at 14:23
For those who are wondering why you would goto 1 when you are certain that y solution will not work.
The infinite loop is caused by being stuck in the mindset that you are going to solve x problem with y solution. The fact that you are realizing it won’t work is irrelevant. Despite the evidence, you try to solve x problem with y solution. The getting up and walking away is what breaks the mindset and allows for new ideas to enter into the thought process.
There has been one advantage to having experienced this a few times, it’s more obvious to me when someone is stuck on using their solution as opposed to just solving the problem. Fortunately, I’m more concerned with solving the problem than holding on to the idea, so once I walk away and clear my head, I usually come up with a real solution.
JonO 12.27.10 at 15:22
@ David Emeroy
“I don’t expect a programmer to be expert in 2000 different languages. What I expect is that he can demonstrate more than one way to think about -and express- solutions. ”
But you hire people based not on whether they have more than one way to think about solutions, you hire people, or so you say, because they have proficiency in a number of programming languages. You may argue that the one equals the other, but I am afraid you have not provided any proof of that assertion.
Don Casteel 12.27.10 at 16:44
My feeling is that experience with more than one language is critical in understanding that experience with any specific language is not necessary.
I have to qualify that by saying it is important to know both object oriented programming and a more linear language like Javascript. I say this because of the differences in how they work.
After you’ve learned more than one object oriented language you can easily figure out any object oriented language. But you will struggle quite a bit the first time you attempt Javascript. This was true in my case. I expect the same will be true going in the other direction.
Ketura 12.27.10 at 16:45
In studying game programming, we’re cautioned away from pre-emptive optimization, in which we begin to take parts of our program and take all the tricks out of our bag and make it unreadable but blindingly fast, only to realize later that that particular part of our program runs once and never again. I think it’s pertinent to the discussion on touch-typing….yes, by typing faster, I think you can spend an overall net decrease of time at your desk, but is the difference worth it? Why not speed up your thought process instead?
For visual learners.
sNobody Special 12.27.10 at 17:11
Well since everyone is missing the point so artfully might as well do the same:
My cousin Jake was the best programmer in all existence and he only used his elbows so he made about 10wpm. So now Jeff assertion can’t possibly be true.
Any logical flaws I missed using there?
But I see now were on to the developer bi/tri/etc.. -lingualism. For me it’s just a business decision in the vast majority of cases I can’t afford to hire someone who is unable to code well in only Java. I’ve met and even hired a number of these idiots. People who were TA’s in computer science (in Java) but were hopeless writing code in a language they’ve never seen. So when it came to patching a legacy application they were utterly useless. By the time I made it through university I was required to have written code in a number of languages. If you want to work in any small organization (research, startup, etc..) you will need to be able to do this. I would also stress as others have done the need for knowing how to express problems in more than one paradigm (e.g. OO, functional).
…and while I’m ranting try knowing a thing or two about how computers and networks especially work too.
David Emery 12.27.10 at 17:29
It’s easier to make a working program fast, than to make a fast program work. Karl Nyberg
sNobody Special 12.27.10 at 18:33
@Ketura – I agree about preemptive optimization it’s one of the cardinal sins of programming and your graph is essentially illustrating Ahmdal’s Law.
Why not just “speed up your thought process” well how about you define what that is, it’s objective metric and the methodology to increase it’s speed reliably. As far as typing goes all three of those can at least be stated with some confidence (and I’ll reiterate I’m not saying – and from what I see Jeff isn’t saying this either – that there’s necessarily a benefit in improving ones typing speed ).
Keith 12.27.10 at 19:21
I don’t think typing fast is related to a programmer’s ability to write code. I believe a programmer ’should’ be a good typist (i.e. accurate) but speed is only secondary. I can type fast but I switch between looking at the screen and the keyboard. On the otherhand, being an accurate and fast typist will increase productivity and efficiency. Hmmm, I never really considered this. Interesting article, thank you.
Ketura 12.27.10 at 21:39
@sNobody Special
I suggested “speeding up your thought process” just in contrast to speeding up one’s typing skills to improve efficiency. It perhaps would have been more accurate to suggest “improving your engineering process” or “clean up your work flow”.
And as for the graphic, I should hope it illustrates Ahmdal’s Law–I took it from the wikipedia page on that very subject
Dom 12.28.10 at 08:58
Well I think the typing speed it depends on how much have you practised it. Actually I can’t imagine that a good programmer how to learn and practise programming without typing…
bill 12.28.10 at 12:59
A programmer / sysadmin / etc. using hunt ‘n’ peck to type is like a construction worker using a tack hammer to frame a house.
JonO 12.28.10 at 15:45
That may be as dumb a simile as I have ever heard
sNobody Special 12.28.10 at 18:11
@Ketura – the questions remain the same. define what that is, it’s objective metric and the methodology to increase it’s speed reliably.
So the answer to your question “Why spend time optimizing for when we can optimize for “. Is that the question presumes that the cost of all optimizations are equal which is clearly not the case.
In my experience the more poorly defined the term is (e.g. “software engineering process”), the greater complexity in optimization and the longer the ROI and an optimization which I can cost-justify is very often preferred to one I can’t.
Anyway despite that I don’t have a problem with the binary outcome of being a hunt-and-peck typist is a reasonable proxy for lack of proficiency in coding. I don’t believe that increasing your typing speed has any intrinsic merit. So this is more of a purely academic discussion about optimization strategies.
sNobody Special 12.28.10 at 18:18
Hmm my “Why spend time optimizing for when we can optimize for “ had some angle brackets in it which got interpreted as tags. It should read: “Why spend time optimizing for :something we spend little time on: when we can optimize for :something we spend a lot of time on:.
Scott Tovey 12.28.10 at 20:25
While I do not deny that there is some benefit to being able to type faster, I have come to the conclusion that those who decry “hunt and peck typists” as being unprofessional and bad programmers are in fact themselves unprofessional.
I infer from their obvious embarrassment concerning “hunt and peck typists” that they themselves are quite insecure about their own skill and talent as programmers.
These are as irrational and illogical as those that argue that the solution to unemployment in the United States is the need for an increase in immigration because of the delusional belief that every consumer produces 1.5 jobs, a theory which is proven false by the very existence of unemployment.
Likewise, the argument that only “touch typists” are good programmers is proven to be false by the very existence of good programmers who enter their code using the “hunt and peck” method.
The fact of the matter is, both skills and abilities are distinct and different from one another and, while a good programmer can increase typing speed with minimal effort, it will take quite a bit more effort on the part of a touch typist to become a good programmer.
There is another problem with this adamant position against “hunt and peck” typists. Being that the “hunt and peck” typists are likely to be increasingly in the older workforce, determining an individuals lack of programming skill based on their typing method can be construed as age discrimination. Such a determination can also be construed as defamation of character and or slander.
When hiring a programmer, employers should only be concerned with an individuals programming skill and ability, not their typing method.
JonO 12.28.10 at 20:49
“When hiring a programmer, employers should only be concerned with an individuals programming skill and ability, not their typing method.”
You’d think that anyone in a position to hire would’ve figured that out, wouldn’t you?
Scott Tovey 12.28.10 at 21:13
@JonO
Yes you would.
Unfortunately, the position of power allows them to go on ego trips and make irrational decisions that are based solely on politics, not on genuine skill.
I was once told by an interviewer that I probably couldn’t do a job because I hadn’t done it in a while. Besides having four years of experience, the job was as complicated as riding a bicycle.
Sometimes I wish I was as quick witted as Robin Williams, because that individual deserved a good slashing. Comically speaking.
JonO 12.28.10 at 22:36
@ Scott Tovey
Them that can, do. Them that can’t, manage.
cthulhu (no not that one) 12.29.10 at 06:02
I agree that programmers shouldcbeable to type fast, but its not as important as accruacy
sNobody Special 12.29.10 at 09:17
@Scott Tovey – While I strongly suspect that your argument is a strawman i.e. nobody hires solely on typing style. To answer your broader question as to why people would use imperfect proxies for hiring instead of “programming skill and ability” is simple. There is no useful objective metric.
It’s the same reason teachers gave you tests to determine if you knew how to differentiate instead of directly divining your “mathematical skill and ability”. Grow up kids.
JonO 12.29.10 at 09:31
@sNobody Special
If I understanbd you correctly, you claim that by giving an applicant a typing test, you can “divine” their “programming skill and ability?” If that is what you mean, then I predict a great future for you – in Human Resources, or maybe Divinity School.
I have known really good touch-typist-programmers and really good two-fingered-programmers. Both types delivered both quality and quantity in equal measure. The claim that touch typists never interrupt their thought flow, by the way, is gainsaid by the amount of time they take back-spacing to correct their errors, since their error rate is usually much higher than someone who spends a fair amount of his time looking at his keyboard as well as at the screen.
sNobody Special 12.29.10 at 11:55
@JonO – No, you really don’t get it. You’re definitely conflating a couple of issues. One point I’m making is, that “Programming Skill and Ability” – which I’m going to call PSA now – isn’t something that is easy to define or measure (I figure you’ll take issue with this because of the cavalier way you pronounced a group of people were equivalent in this respect). Now because I can’t directly and/or easily measure your or anyone else’s PSA. I have to when hiring use a proxy – something else which estimates PSA. Scott’s complaint – in essence – is that typing ability is inferor to PSA for measuring PSA and I should only look at the thing which I’m pretty sure can’t be directly observed or easily measured. Which is, of course inane.
The other issue you could be touching on is that I don’t see the real issue with considering a *binary outcome* as being reliable proxy for PSA. Yes I’ve known developers who were two-finger typists (including myself as a youth) and those who weren’t. However unlike you I recognize that the world is a pretty big place and my experience isn’t necessarily representative. Good luck with fixing that.
JonO 12.29.10 at 12:12
@sNobody Special
I am relieved to be told that I still don’t “get” nonsense.
Of course evaluating programmers isn’t easy, but if you have been placed in a position of doing so, and you admit that you are not capable of it and instead use a metric like typing ability then I hope you make your inability clear to both those you evaluate and those for whom you are doing the evaluations.
I do not, by the way, make any claim that my experience is universal. You are the one who have made the statements that all good programmers are touch typists and all two-finger programmers are not. I offer my experience simply as incontrovertible proof that you have no idea what you are talking about.
Enough, I am done wasting my time trying to get you to admit that the world is nearly as simplistic as you want/need it to be. Take the last word if it is important to you. I am unsubscribing to this topic.
sNobody Special 12.29.10 at 13:16
@JonO – You seem to need to take some of my statements in a silly way. The point was that we all use proxies to measure complicated things in life. Proxies are by nature less precise than the thing we are using them to measure. Ergo to demand that people not to use them is pretty lame.
Your idea that I have somehow, somewhere made statements like ” all good programmers are touch typists and all two-finger programmers are not” when what I said was I don’t have a problem with the idea of a binary outcome being a reasonable proxy for PSA. Is amusing…and stupid…particularly amusing when you accuse me of looking at the world in an oversimplified way.
sNobody Special 12.29.10 at 13:21
Oh and “evaluating programmers” isn’t necessarily the same as being able to determine PSA. Every person in the hiring process “evaluates” a programmer. Even if I ranked developers by typing speed alone – which I’ll restate yet again for other people as brain-damaged as JonO – that I don’t do nor do I believe anyone really does – it would still be evaluating them. What it wouldn’t necessarily be doing is providing a very good assessment of PSA or job success (which in some cases may be different things).
Mark 12.29.10 at 15:10
@sNobody Special
If your evaluating PSA then do it. It can be done. If that person is also going to do data entry then measure that ability. Evaluating by proxy is a cop-out. hat’s the problem with HR people doing a technical interview. I would expect more from technical people. In no way is typing speed a reflection of programming ability. You might as well evaluate them on the color socks they wore to the interview. I remember the days when IBM required the stupid ties and lost good people. It’s OK with me if companies other than mine don’t see real talent.
I look for creative people. If someone can type faster than me, I move away from the keyboard and let them type, when we’re pair programing. Thats how professionals work. We recognize each other weaknesses and deal with it. I would hate to see my fellow hunt-and-peck programmers waist time learning to type. There is far better use of their time. That time would be better spent moving to CMMI Level 3 or 4, and leveraging reuse, which has far better documented returns in productivity.
T.W. 12.29.10 at 20:17
Nobody’s claiming that typing speed is a measure of programming ability in anywhere near the same manner that micromanagement is a measure of a player’s StarCraft skills.
Mikael 12.30.10 at 02:16
I can type very fast and I’m also a fairly decent programmer. In my experience good programmers are in the vast majority of cases also good typists (and knows just about every keyboard shortcut in existence). Good mech designers can throw in new complicated details in their 3D-cad designs in no time. A skilled electro-engineer calculates the cut-off frequency of a RC-filter without a pocket calculator. And so on. You gotta know the tools of your trade… and know them well.
sNobody Special 12.30.10 at 23:05
@Mark – I think one of my comments got eaten. Anyway if PSA can be measured directly then you should be able to give me a precise definition and an reasonably unambiguous way to measure it within some standard error. I very much doubt that you can. “Looking for creative people” isn’t unambiguous in fact it’s at least as bad as saying you’re measuring PSA – probably worse.
In order for something to “in no way reflect” – in any usefully objective sense of the term. You would need a large random sample of developers. Some kind of metric as to their comparative quality (whatever that means) and their typing speed. You can then calculate the R. You don’t have that right? Hence you can’t really support that statement except anecdotally.
You’re also making a pretty bad logical blunder. I never, ever said learning to type faster improves ones programing. The fact that so many people here don’t seem to get that means either they don’t understand what a binary outcome is or don’t understand the limitations of doing a regression analysis on data.
As and aside I find it interesting that you’re pair programming and calling it “that’s how professionals work”. Given that it’s very much a minority practice in development shops and the last meta-analysis didn’t see much overall improvement in employing it.
I haven’t seen much in the way of compelling research on CMMI and while I think the goals are admirable and I have looked through the one and only one study “published” (but not peer reviewed) by CMU. From a statistical point of view the research is poor but it’s poor research in a environment (IT) where the research is F**king awful. So I suppose that’s something.
Gautam Sinha 02.04.11 at 10:33
I think … each finger is controlled by a micro circuit in the brain somewhere in the thalamus. With the control of each digit on your hand and and keyboard should lead to awareness and increased discipline . I think…. As regard to quality of words vs, quantity of words, yes its a point of view that will soon die , as kids today seem born with concept.
gautam
Shelley 06.24.11 at 06:14
i thought the answer to this one is fairly obvious: there may be a correlation between typing speed and productivity but it’s certainly just a correlation and not a cause.
thought experiment: one of your “grandmaster” developers who is one or two orders of magnitude more productive than your other programmers and who types ~100WPM sustains some sort of injury leaving her unable to type faster than 10WPM. are you now going to replace her with someone that types 50 WPM but was an order of magnitude less productive? are abstract thought, ability to design for maintainability, debuggability, flexibility, etc. going to suddenly hit a brick wall because she types slower? not a chance.
besides, how many of you actually spend more than 5-20% of your time on a project actually typing in code? you do? if so, then in most cases i would suspect that you have not spent nearly enough time either looking into productivity-enhancing tools (say, code completion, macros, code generation, a more appropriate language for your domain, etc.) and methodologies (agile design and automated testing come to mind) that will shift that into time more productively spent than hammering on the keyboard.
or look at it this way: take a piece of software approximately 1,000,000 phyiscal lines of code, with an average of 50 characters per line.
1,000,000 lines * 50 characters/line = 50,000,000 characters
50,000,000 characters / (5 characters/”word”) = 10,000,000 “words” (as in WPM)
10,000,000 “words” / (50 WPM) = 200,000 minutes
200,000 minutes / (60 minutes/hr) = ~3333 hours
so, to *type* a million lines of code takes approximately one and two-thirds man-years at 50 WPM. one estimate i found for how much time is spent on a project of this magnitude (http://www.eetimes.com/discussion/break-point/4026827/A-Million-Lines-of-Code) was 67 people for 40 months. unfortunately it did not break that down but hey let’s go crazy and say that only 10 of them are developers.
let’s say of the ~333 hours of actual typing for each developer has to be doubled to account for throwaway prototyping, testing, and user documentation. that gives us ~667 hours of actual typing per developer over 40 months, or ~3.33 years.. which, nicely works out to approximately 200 hours per year of typing necessary per developer. obviously as an order of magnitude estimate.
so, with my assumptiom of ~2000 hours per developer per year (and most of the passionate developers i know would spend a lot more than that) we’re talking 10% of developer time spent typing on this hypothetical million line project with 10 developers that type 50 WPM. if they only type 25 WPM, they will still only spend about 400 hours, or 20% of their time typing, or at the crawling rate of 10 WPM about 50%. oh, and none of this factors in the tools like code completion, code generation, macros etc.
now, assuming the numbers here are close (i think they are quite conservative, personally), and given the advantages heretofore mentioned of the “grandmaster” developer which would you rather have: a “grandmaster” typing 10 WPM or someone one or two orders of less productive at 100WPM?
oh, and keep in mind the “grandmaster” will get more done in fewer lines and the code she writes will be more maintainable, debuggable, and flexible than the 100 WPM speedster.
just askin’.
(and yes i have a shift key but i forget what it’s used for. unless something needs CamelCasing.
)
Adrian | Diseño web en málaga de calidad 09.03.11 at 22:06
I understand perfectly, the programming is very much in my life. It is a love and hate. Regards.