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.
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.
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!
Your speed was: 75wpm.
You made 2 mistakes, your mistakes are shown in bold text:
Booeeeh!!
Jef Claes on November 18, 2008 4:58 AMecho co co co
Dan on November 18, 2008 4:58 AM81 here. And i thought, that i'm godlike. So you're more godlike, than i am :)
bush on November 18, 2008 4:58 AMTyping well may be damn important but coding is by no means "just typing"
I'm a firm believer that actually writing your code is the least time portion of the software development process.
Calvin Spealman on November 18, 2008 5:01 AMIs 60WPM bad?
* cries *
Range from 75-88 with 1 mistake (poor spelling).
I'm not really sure your analogy holds up. Getting up and moving to a room takes longer and changes the context more. A delay of a few seconds does little.
I'm dubious as to whether better typing makes you a better coder, or that there is merely a correlation between the two. After all, it isn't surprising that someone who is a good coder has spent a lot of time typing and thus developed good typing skills. It doesn't necessarily follow that going out and learning to type properly will make you much of a better coder.
[ICR] on November 18, 2008 5:08 AMI'm by no means a touch-typist. But I get along. And I only scored 45 WPM..
That said, typing speed is of course a factor.
But don't type the same over and over. Use an editor with snippet and template-support. Use code-completion.
Personally that means TextMate for me when doing markup and VS2008 w/Resharper for those .Net moments.
erlando on November 18, 2008 5:08 AMI agree that typing is extremely important for a programmer, and a skill worthy of practice.
But are we programmers secondarily to typists? I don't think you made a good case for that, and to be honest, I don't think one is possible. I'm open minded though. =)
Sammy Larbi on November 18, 2008 5:08 AMIt 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 5:09 AMI'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.
75 wpm, which is good enough considering English isn't my native language.
Ivan on November 18, 2008 5:14 AMIf you think more, you type less. Just in case you think this is an excuse, I just got 95wpm.
Kent Boogaart on November 18, 2008 5:14 AMBroken clocks are right twice a day..
(sorry for the pedantry) ;o)
A few years ago I started out in the IT industry where most people do: tech support. It was for a small ISP and before the new phone system came in we would have to come into the office, listen to a voicemail and type in a support ticket from it. There is no better way to learn than to try to type with someone as they speak and you'll get quite fast in a short amount of time.
Scott Salyer on November 18, 2008 5:16 AMI love my Das Keyboard!
People are always stunned to see it, and fearful too. I encourage them to give it a try and tell them they'll surprise themselves and sure enough most people do pleasantly discover they know the keyboard better than they thought.
It really surprises me when I find IT types who can't type. I never had any lessons or went to any real effort but just became a very fast typist through simply doing it every day for 24 years now!
David M Williams on November 18, 2008 5:16 AMI've been doing software for over 10 years and still cannot touch-type. The most used key is the backspace.
If dyslexia exists then so does the dis-ability for typing?
Speed matters. Yes, too slow and your buggered, too fast and your buggered. What about velocity? Momentum?
Can you just stop pontificating and just say that typing faster with more accuracy is preferable than not and leave it at that.
But you're right, there are no excuses; there are explanations and reasons.
Sam on November 18, 2008 5:16 AMI 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...
Actually, a broken clock is right twice a day !
Once from 0 to 12am
Once from 12 to 0pm
Anyone out there who can not type over 80wpm that is trying to justify that you don't need to type fast would have a completely different opinion if they could type up to speed. My suggestion, just learn to type, it is not that difficult, and then you will learn to value it.
this is the program I use: http://klavaro.sourceforge.net/en/
roberto on November 18, 2008 5:19 AMYour speed was: 102wpm.
You made 3 mistakes:
broter
pies (missing comma after)
sergvice
Can I have a cookie now?
Your speed was: 4538wpm.
use programmer's favorite: copy-paste
Usman Shaheen on November 18, 2008 5:31 AMI 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...
Grr, 75.
Timothy Andrew on November 18, 2008 5:34 AM<flame> Wtf, I got 97 wpm, English is not my natural language and I am not even a developer.. You guys need some training :-P
Ced on November 18, 2008 5:34 AMYour points about typing are entirely valid, but one point I think you missed is that typing out code is not the same as typing out paragraphs of text. Code contains relatively large numbers of non-alphabet characters, which are not as easy to type. Additionally no-one types out code in one long block, you constantly jump around adding, tweaking, reading.
Beyond a basic ability to touch type, I do not believe there is a necessity to have a high wpm.
Richard on November 18, 2008 5:36 AMTo be honest typing speed is a factor but is it really that a big issue. I guess it is hard to type fast and think fast. Something's going to break. I am working on my typing but there is an unique problem here in Europe. WE have like 10 possible layouts of the keys here. And me going around from country to country and US keyboard is not always an option.
So keep on hitting those 80+wpm marks but I wonder if a application typed sp quick would actually compile.
Dejan Fajfar on November 18, 2008 5:37 AMI found a way in which programmers differ from typists:
"click the Start the clock button, copy the sample text below"
So I clicked, selected, Ctrl-C, Ctrl-V, stop. 4157 wpm and 103 mistakes :).
(102 wpm without errors on the first serious attempt though)
(also, seems I wasn't the first one to use copy/paste :))
mark on November 18, 2008 5:37 AMPersonally, I don’t know any programmers who *CAN* type. I’ve always really liked your blog Jeff, but this is a BS post. Programming is not about typing. How fast do you need to type to write 15 lines of code/day!?
Booji Boy on November 18, 2008 5:37 AMWhen I was in high school (late 60s, early 70s), typing class was recommended for all college prep students, and that's where I learned -- on massive mechanical typewriters that strengthened the fingers as well.
Years later -- in the early 80s when PCs were being introduced into the insurance company where I worked -- I discovered an interesting phenomenon: The intelligent women of my generation often had not learned how to type for fear of being shunted into secretarial jobs. They were suddenly at a disadvantage with the new technologies.
Charles Petzold on November 18, 2008 5:42 AM
> Broken clocks are right twice a day..
Not if they display AM/PM, they aren't. It's my imaginary clock, damn it, and I get to make the rules here!
Jeff Atwood on November 18, 2008 5:42 AMLet's not forget how fast copy and paste is... I can "type" at 5432 wpm:
http://employees.claritycon.com/pwalke/blogs/typingtest.JPG
Pwalke on November 18, 2008 5:44 AMJust 42 wpm here. I did take a touch-typing course once, but I didn't find it very useful.
It seemed to me that that the emphasis on placing your fingers on the home keys was more suited to English than code (e.g. curly braces end up on your right pinky, control and tab on your left pinky and the cursor keys are unreachable).
Are there any "programmer's touch typing" courses that use different techniques?
At the moment I generally use two fingers and a thumb on each hand to type while while staring at the keyboard. This actually works okay but probably isn't helping my posture!
Graham Stewart on November 18, 2008 5:44 AMCome on...cut him some slack..will you..
he meant broken "digital" blocks in 24Hr format...
:)
Nice post BTW.
Samrat Patil on November 18, 2008 5:47 AMITT: List of everyone's typing speed.
Chris Jones on November 18, 2008 5:47 AMMm, I do not know how accurate the measurement is for me: 68wpm, 4 errors. Well, I do not mean technically accurate. Yes, I typed 68 words per minute and made 4 errors, but I am not sure how significant this is.
I was mostly hampered by reading the text. The text was more or less random rambling for me - random rambling with weird grammar and strange words I never heard of before, resulting in a quick "huh? what is that?"-pause, resulting in a pause while typing.
If I have to hack down a thought in python, this is different. I just know where I want to go, I know the structure and thus, I don't have such "Huh?"-moments. Thus, I type faster when I type code and not random weird texts. I even measured this once using a traybar wpm-counter. When I was hacking a thought I just wanted to get hacked down, my wpm sped up to around 90 - 110 wpm, when I was just fixing things while thinking about it, it was at 20 and when I was thinking, it was 0 :-)
Thus, I think you are right to a certain degree. You need to be able to hack down a certain thought you have right now in your current language at high speed, so you can go to the next thought, yes; however, this does not imply that anyone who consciously types 30 wpm must be removed from the programmers pool.
It would be much more interesting to have a good tool that tracks your wpm during the day at work and throws some datamining at it in order to state "right, you appear to have 3 modes of typing: one with 90 wpm, one with 20 and one with 0."
Greetings
Tetha on November 18, 2008 5:48 AMDAMN!!..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...
:)
<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 5:50 AM60 WPM Qwerty
47 WPM Dvorak.
I program at work in Dvorak, at home Qwerty (wife). I find programming much easier with dvorak, while typing text such as that test is easier with qwerty. I think it is mostly because of muscle memory. When learning Dvorak, I found that the hard part was relearning how to type words. With Qwerty I wouldn't type f-r-o-m. I knew the muscle movements for "from". As I use Dvorak more and more, I am getting better at typing with it. This test was a bunch of words I don't need to use much at work (blood-red shimmering glory of the sun), so I can see why that score is a bit behind.
Phillip on November 18, 2008 5:53 AMI think this is a great point, and definitely valid.
The root of it is that typing is an abstraction layer for what we're really doing. The less barrier we have between our real task, and our conscious mind, the better. It's the exact same phenomenon that prevents people with poor vocabulary from being excellent speakers and writers. They have to put more conscious effort into communicating their ideas, rather than having them flow out.
Let's say you are raking leaves to clean up your yard. Now imagine if instead of raking up a pile of leaves (or using a leaf blower) you had to pick up 3-5 leaves individually and take them to the pile. This is what hunt-and-peck typists are doing. Good typists have a rake. Excellent typists have a leaf blower.
Alex on November 18, 2008 5:53 AMI have the same problem with entering a room and forgetting why I entered it. I even forget that I came in there for a reason--I just see something else in the room to do and I do that instead. I've tried to learn touch-typing, too, but mid-keystroke I forget I'm learning to type and change the channel. Let's go ride bikes!
Mark Cidade on November 18, 2008 5:58 AMAh, but there ARE analog 24 hour clocks, these are right only once a day if broken. You see these sometimes in hospitals.
My typing? average, but autocomplete and Intellisense compensate for that. I don't just type code into notepad (well, actually for HTML, I do, because I'm obstinate)
Jeff, surprized nobody commented on your Perl slam there.
Is there a typing trainer for APL???
Nchantim on November 18, 2008 5:58 AMYour speed was: 53wpm. Four errors.
ins't instead of isn't
fact instead of fat
life, instead of life.
glintong instead of glinting
I guess I'll be fine because I mostly program in Perl with use strict.
And, when I do get paid for programming, it is to make the seemingly impossible, possible. Typing speed is a lot less important in those circumstances. Especially since what you type when you program is drastically different than random blocks of text.
When you key in a program, you use similar constructs over and over and develop a better muscle memory for those types of text. When compilation and testing are quick, you catch errors early and often.
This post seems like an attempt to generate a lot of comments on an essentially pointless topic. You seem to have succeeded.
-- Sinan
Sinan on November 18, 2008 6:02 AMYour 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.
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 ?
@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 6:07 AMScrew yer WPM - I can use VI
Michael C. Neel on November 18, 2008 6:09 AMTyping fast is important for programming effectively. I have often ended up in the same situation you describe, where you walk into a room and not remember why you are there, but with typing. I'm working on a program, and I run into a difficult problem to solve. I sit back for a while to come up with a solution, and when I have it I try to type it in fast enough so I don't forget it. If I go too slow, the idea is lost.
I type on a Dvorak keyboard, and I have for a few years now. For me Dvorak feels a lot more comfortable. I am not tempted to look down on the keys, because the keys do not match what I type. This means I can type without hunting for the keys, and I can rely solely on muscle-memory. I'm sure you can learn this with qwerty as well, but it is easier with Dvorak. I don't type very fast though, I only got 64wpm on that test. But typing on Dvorak feels more comfortable.
Marius Gundersen on November 18, 2008 6:11 AM50 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.
That's a pretty gay keyboard XD
KJW on November 18, 2008 6:19 AMHm, 64 with three mistakes.
But to be honest, I was at the same time listening (and actually paying attention to) the stackoverflow podcast :-)
Jan on November 18, 2008 6:21 AMI never learned to properly touch-type - I can type fast enough to get by though, and I find the type of things I type regularly I can do very fast.
I only scored 71wpm on that test, but English prose like that isn't my usual thing. I can bang out C/C++ and "random gibberish" like Perl code much, much faster :)
Andy on November 18, 2008 6:25 AMHogwash. Software development is a lot more than just typing and faster typing doesn't make for better code. I understand Jeff's analogy of forgetting why you walked into a room (which happens to me as well), but if you're forgetting stuff because you aren't typing fast enough, then perhaps typing speed isn't your biggest problem.
I'm a decent typist (78 wpm), but I work with someone who types everything with the index finger on each hand. He's not fast, but he's been doing it for 25+ years and is one of the best developers in my group, by which I mean he writes *good code*. The ability to write *good code*, which at the end of the day is all we're trying to do, is unrelated to the ability to type quickly. I agree that being a good typist is an advantage, but "typists first, programmers second" implies that being a good typist is a more important skill for a programmer than actually being a good programmer.
Extra-pedantic clock analogy comment: A broken analog clock is right twice a day because when it stops, it's still showing *some* time. When a digital clock is broken, it generally doesn't show anything on the display, so it's never right.
Graeme on November 18, 2008 6:26 AMListen to music and type the lyrics as you're listening. Start with something slow like Tea for Two, and gradually move up to REM's It's the End of the World as We Know It. Good luck with that one.
stevex on November 18, 2008 6:31 AMOh, man, that paragraph about forgetting what you walked into a room for is me to a T. This happens to me so often that I wonder how my brain isn't swiss cheese at this point.
Also, I know quite a few fellow Computer Science students who can't touch type. It's weird when you ask them to type a simple string into Google, and it takes 30 seconds for them to complete it.
Benjamin M. Strozykowski on November 18, 2008 6:34 AMWhy do you need to write code fast? Sounds like you need to think of a program to write that code for you. Less is better.
I guarantee ctrl-space auto complete is faster. hehehe
Joe Beam on November 18, 2008 6:36 AMI think the issue isn't typing speed, it's that you can type as fast as you can verbalize internally. You don't have any conscious thought of what you're doing, it just 'happens'. Typing 40 wpm isn't important if that's as fast as you can think. ;-) Hunt-and-pecking is fatal, though, since it means that you don't have a good 'flow'.
That's why vi was the editor of the gods. (Emacs also, as much as it pains me to say that, but still better than the current IDE crap.) You didn't have to break your thought to find the mouse, highlight something, and then go back to the keyboard. You just thought "I need to delete these three lines" and *poof* they were gone.
As for typing speed, I remember typing a block of code once as a receptionist/admin walked by. She stopped, spun around, and demanded to know how I could type so fast (typically 65-70 wpm). And how I could do it when I was doing it WRONG. Like many people I'm self taught and my hand position is wrong, I hit about 2/3 of the keys with my right hand (rotating it at my wrist), etc. But when you think about it, it makes sense since I'm a large guy and keyboard sizes were probably standardized for the far smaller women of the early 20th century. She honestly seemed to be offended that a mere engineer could type faster than a professional like herself. Uh, yeah.
Chris on November 18, 2008 6:36 AMI concur with Theta, I got 58wpm with no errors, french is my natural language. But, I do touch-type no looking at the keyboard, just the screen.
And I can honestly say that I type much much more quicker when I am writing my own stuff. In that text there, I had to pause for certain words and names, make sure to get them out properly. Also, in programming the subset of words is much more limited and we have all those strange characters/operators to add and of course the numbers.
In my work I have remarked that my muscles learn to type the words out as a whole, not the individual letters and the letters come out much faster.
Finally, just a funny thing I am often experiencing. When I am really deep in thoughts and my hands are flying over the keyboard, if someone steps up by my office, I can look at him and start a discussion with him while my hands finish the sentence/paragraph that has been queued in my brain. It is always disconcerting for the visitor and they hesitate to pursue the discussion while I am still typing away.
My thought is that if I were typing faster (I think I am running more or less around 90 wpms in those moments) my brain wouldn't have to keep this pipeline of data. Or my brain would just work even faster and faster, I don't know. Ultimately, I wonder what would be the speed limit that the brain can think ahead in WPMs?
philibert on November 18, 2008 6:36 AM@Jon Schneider:
Yep, you're right of course: touch typing would help in all those situations and my current stare at the keyboard technique is less than useful.
But the first two don't really relate to any actual programming tasks that I regularly perform and the last one, typing mistakes, is relevant as I never make any misstakes. ;)
The question stands though: are there any specific touch-typing techniques for programmers that take into account frequent use of non-alphanumeric characters, keyboard shortcuts and cursor control?
Typing a simple bit of code like: if x[12] <= '¦' { print($msg); }
using touch-typing from the home keys seems to involves all kinds of contortions to me.
Why should I become a faster typist when Visual Studio can't even keep up with my two fingered typing? Every time I type a period it takes Visual Studio a good 10 seconds to figure out everything that could come after that dot notation.
Robert S. Robbins on November 18, 2008 6:41 AMI learned to type using a really old version of Accutype (http://www.barrybennett.co.uk/software/typingtutors/accutype4.php, although I'm not sure the program in the link is the same I used) in my dear 086.
In my career I've worked with several good programmers that couldn't type, but let's face: typing using two fingers looks pretty unprofessional.
gux on November 18, 2008 6:41 AMOnce you have a decent typing speed (it doesn't need to be lightning fast) the next thing you simply have to do is find a good IDE with code completion and refactoring support and master it. Learn every keyboard shortcut you can. Using these tools will mean you need to type less, a lot less in most cases e.g. you can refactor code to a method with one shortcut and typing the name for. It also lowers the barrier to changing the code, which is extremely important. This is because you will not make small refactoring and imrovements to code when the cost of that relative cost of that change in terms of effort is high. Both reasonable typing speed and mastering of tools will bring that cost down enough to prevent any barriers. This can have a profound difference on your coding over time in my experience.
The best thing I ever did for my Java coding was mastering Eclipse refactorings and keyboard shortcuts.
alb on November 18, 2008 6:42 AMIt's true, faster typing doesn't make better code. And with tools like codesense / intellisense it became even less important. Half of the time I don't even write complete words anymore.
Holli on November 18, 2008 6:44 AM
3234wpm, with 78 mistakes. So copy and paste isn't perfect, but at that speed, who cares about a few typos? And you can do it without a keyboard :-)
The point that no good programmers are poor typists is a dodgy one. Like Jeff, I've never learned to type "properly", but I can get by. Mostly because I've done a lot of it over many years.
And I think that's what it really comes down to - putting in the time. You have to put in the time learning, rather than just doing, though. Some people have 20 years of experience, and some have 1 year of experience 20 times.
No-one I know of was a good programmer from day one - it's a skill that takes time to develop, like any other. So I think Jeff's looking at it the wrong way around.
Typing ability is not a prerequisite of being a good programmer; it's a consequence.
Jim Cooper on November 18, 2008 6:45 AMOkay, someone who hunts and pecks at 10wpm may be hurting their ability to code. But, what about a person who can type 40 to 60wpm? Are they typing too slow?
Back even before my days when businesses had secretarial pools, a secretary who couldn't type at least 75wpm was useless. But, they were merely copying what someone had already written. They didn't have to compose while they typed. To them, speedy transcription is everything.
We as developers compose while we write. Concentrating on being able to type without looking at the keyboard is important. Being able to touch type is also important. But typing at 85wpm? Is that really a job requirement?
There's an old joke about a man who came to this country from Europe, and tried to get a job as a custodian at a small synagogue. When the synagogue found out he couldn't read, he couldn't get the job.
Instead, the man found some rags and sold them. He took the money he made, and bought some nicer rags. Soon he had two rag carts. Later, he sold second hand clothes, then factory seconds. After that, he opened a small store, and then another. He started to sell more expensive clothes, and soon opened a store on 5th Avenue.
As his business grew, and more and more stores opened up, he realized he needed a loan. He went to the banker who drew up the papers which the banker asked him to read.
"I can't read", replied the man. "I never learned to read English."
"That's amazing", said the banker. "You are one of the biggest and best known retailers in the Northeast. Imagine where you'd be if you could read!".
"I'd be a custodian at a synagogue", replied the man.
I can type around 45 to 60wpm, and I get paid a nice six figure salary. If I could type 85wpm, I would be a secretary earning maybe $35K.
David W. on November 18, 2008 6:47 AMSrsly!? come on people you work with a keyboard all day...there is no valid excuse to not know how to use it. Learn the tools of your trade.
Dan on November 18, 2008 6:48 AM"faster typing doesn't make better code" that could be argued upon. But what couldn't be argue is that faster typing DO make better comments. And better comments DO make better code.
philibert on November 18, 2008 6:49 AM79 with no mistakes for me. Of course, if I were programming, all of the proper nouns would be auto-completed. I'd rather not have to remember how to spell 'Serengetti' (nonstandard spelling in the original text).
As important as fast typing is, isn't fast reading just as important? If you can read twice as much code or twice as many books/blogs/etc. in a given amount of time as the next programmer, you're probably going to develop faster. (disclaimer: my reading speed is consistently over 1500 wpm; probably why I think reading is so important...)
Krenn on November 18, 2008 6:49 AMI really was enjoying Typing of the Dead until I realized that it doesn't count spaces. I was then stuck with the dilemma of either being correct and typing the spaces, or not typing the spaces to be faster. I stopped playing it after that, but am always on the lookout for good typing games (haven't found any yet).
If you do touch type, note that what kind of keyboard you are using makes a slight difference. I used one of those split "ergonomic" keyboards for a year (Microsoft brand) but then realized I was much faster on a regular keyboard. Unicomp's buckling spring keyboards are great and what I use now.
Also, don't worry about "carpel tunnel" or "RSI". Read this: http://www.rsi.deas.harvard.edu/handout.doc
N on November 18, 2008 6:50 AMAgree 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.
Thanks you so much for this analogy :
"Instead of answering directly, let me share one of my (many) personal foibles with you. At least four times a day, I walk into a room having no idea why I entered that room. I mean no idea whatsoever. It's as if I have somehow been teleported into that room by an alien civilization. Sadly, the truth is much less thrilling. Here's what happened: in the brief time it took for me to get up and move from point A to point B, I have totally forgetten whatever it was that motivated me to get up at all. Oh sure, I'll rack my brain for a bit, trying to remember what I needed to do in that room. Sometimes I remember, sometimes I don't. In the end, I usually end up making multiple trips back and forth, remembering something else I should have done while I was in that room after I've already left it."
Now I can explain in understandable words to my boss why I need a good computer.
Ohman on November 18, 2008 6:56 AMI 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.
Today's youth learn to type concurrently with learning to talk. I think "slow typists" is simply a symptom of a generation that didn't grow up with computers in-hand.
Within 10-20 years, I predict that just about everyone will type above 60wpm.
The effect I think you're seeing Jeff, is that "good programmers" had computers at a young age and so they are simply ahead of the intuitively-learned typing curve. Everyone else will catch up in a few years, as digital immigrants age and retire.
A good example of correlation, not causation.
Vance on November 18, 2008 6:58 AMAnother post of a sketchy hypothesis, perhaps designed to draw in comments to your blog. Typing is used to produce programs, to express, to experiment. It is a tool of production.
Some of the best "programmers" I've met couldn't type worth a damn. But they could use a whiteboard REALLY well. They knew how to foment ideas.
I think the keyboard has actually harmed the process -- some people should think before they type, but they type first.
Steve on November 18, 2008 7:00 AM"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 7:01 AMWe 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 7:03 AMGreat 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 7:09 AM63 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 7:12 AMInstead 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 7:12 AMAnd writers should know how to type too! :)
Practicality on November 18, 2008 7:17 AM68 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.
> 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 7:26 AMJeff 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.
"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 7:34 AMSometimes 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 7:35 AMI'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 7:41 AMFirst 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.
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.
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 7:44 AMIt'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 7:46 AMFound 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 7:49 AMJeff, 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 7:50 AMI 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 7:50 AMI can see your comment system still sucks. Anyway, find the "a name=" closest to the wanted quote.
André on November 18, 2008 7:50 AMYour speed was: 79wpm.
You made 6 mistakes, your mistakes are shown in bold text:
dkd on November 18, 2008 7:52 AMAndrs 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/
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 8: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 8:11 AMI 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 8:21 AMThere 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 8:28 AM98 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 8:30 AM75 WPM, one mistake... which wasn't really a mistake, but me spelling stuff the proper, Canadian (or English) way.
Gray --> Grey.
:p
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 ЙЦУКЕН. 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 8:40 AM44wpm.
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 8:41 AMI 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 :)
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?)
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 8:48 AMI 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.
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 8:51 AMProgrammers 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 8:52 AM8 WPM - Beat that fools
HB on November 18, 2008 8:54 AMit 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 8:55 AM87 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 8:59 AMI 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 8: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 9:02 AMokay.
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 9:03 AMYour 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 9: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 9:09 AMWhen writing VB.NET code, 1 WPM is sufficient to keep up with the IDE. :-(
Chris on November 18, 2008 9:15 AMI 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 9:16 AMThis 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 9:17 AMYour speed was: 4646wpm.
Congratulations! You made no mistakes, practice does make perfect.
hehehe :D
someone on November 18, 2008 9:17 AMGilbert 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 9:22 AMBelieve 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 9:22 AMUgh. 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 9:35 AMTyping alone will not make you a programmer!!! You must actually write the program code, not just type..
Jules on November 18, 2008 9:45 AMTyping 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?"
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 9:52 AMTyping, how quaint.
I'm sorry but I CAN'T type my programs, they must be drawn.
Phil Brooks on November 18, 2008 9:58 AMThe 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 9:58 AMI 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 AMWell, 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 AMOh, 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 AMMost 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 AMI 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 AMHere'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 AMOk, 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 AMThis 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.
> 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 AMI'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 AMthanks 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 AMI 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 AMa 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 AMIf 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 AMHow 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 AMI 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
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 AM74 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 AMQ: How did the Project Manager obtain 700 words per minute?
A: By assigning the task to 10 Developers.
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 AMFaster 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 AMI'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?
<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 AMI'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 AM125 =) No mistakes.
Eric on November 18, 2008 11:59 AMThis is my result:
Your speed was: 52wpm.
You made 8 mistakes.....
divison on November 18, 2008 12:21 PMI 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 PMright, and swimming is just moving your arms;
move your arms faster and you're a better swimmer :-)
Think more, type less,
generate the rest.
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.
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 PM20 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 PMI 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.
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 PMI 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 PMQwerty 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 PMI 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 1:00 PMFor the curious, I searched around trying to find that rainbow keyboard. The closest I could find was the Luxeed keyboard (available on Thinkgeek: http://www.thinkgeek.com/computing/input/a85c/)
I don't know where Jeff found this one with the black bezel and colored keys. Even though the image filename suggests it is a "Keyright" keyboard, a Google image search for that does not yield one with a black bezel.
Jake Cohen on November 18, 2008 1:01 PMIt's hard to take anyone seriously when they suggest that typing is the most important development skill. But, I'm glad, Jeff, that you have a skill to fall back on in case the programming thing doesn't work out. By the way, how are you at making coffee...?
Gunther on November 18, 2008 1:32 PMI agree with Chris; typing speed is only relevant if it obstructs your flow of thinking. What bothers me as a recent tendency though is to put a whole lot of "oughts" and "shoulds" that are pretty arbitrary and do not relate to the issue of composing good quality, well-documented, extensible code that satisfies a need. In my mind, we should focus on taking the needless steps away from that process, not adding steps to the shortest path between idea and implementation.
Louis-Eric on November 18, 2008 1:33 PMWith modern IDE typing code is more like playing game, than like typing full words. You are constantly using shortcuts, choosing things from menus, and copying stuff. Also tabulation is completely different (and more important) in code, than in English (or any other language).
BTW - i've found that I'm more productive, when I type slower, and stops often to think about what I want to type next :)
So I don't think fast typing is required for programmer. It's rather the other way around - when somebody can't write fast he is less probably a good programmer, becouse that means he probably hasn't been programming a lot.
But I know man, that started programming 50 years ago, can program circles around me :) (thanks for this idiom, BTW), and he types a few times slower than I do.
odrzut on November 18, 2008 1:35 PMA good programmer won't need to type fast since their code will be succinct and compact. it doesn't matter if you type half as fast if your program is 4 times smaller than the fast typist's...
pete on November 18, 2008 1:47 PMI hunt and peck and my spelling sucks (English is not my first language) but there is a big difference between a coder and a programmer. A coder types whats a programmer tells him to do. A programmer designs software. Remember Programming 101? No code only flowcharts!
Cornie on November 18, 2008 1:53 PMpete: and when you want to chnge something in your program you'll have to find and change things in 7 different places, while in better code it will be oneliner change.
odrzut on November 18, 2008 1:56 PMIn a reaction to this I wrote this. Why English is really important to us non-English speakers.
http://blogs.lessthandot.com/index.php/Architect/DesigningSoftware/why-english-is-really-important-to-us-no
Typing is the second step for the other people in the world ;-).
chrissie1 on November 18, 2008 2:04 PMDoes anyone here have experience with Kinesis, Maltron, or even any other more extravagant input device? I'd really like to hear about it.
searcher on November 18, 2008 2:22 PMI don't type too slow or too fast, just kind of half-fast...
jimmy on November 18, 2008 2:38 PMIn College, a professor said don't learn to type. His reasoning was that you need you hands for your whole career and typing fast will bring on rsi, secondly by typing fast you will avoid coming up short cuts for doing repetitive tasks and being more creative. I don't totally agree but there is something in both points.
donal on November 18, 2008 2:51 PMThere's one touch-typist guy here at work. It's indeed incredible to see him type. The bad news is that when it comes to programming, I usually have the same feature implemented in half the LOC (while using more verbose naming schemes...) - and usually with way less bugs. So if you think in terms of producing working, quality code, I'm not sure WPM is such a sound metric.
albert on November 18, 2008 3:02 PMI had a manager ask me once to type as he dictated. From that moment on, I learned, don't admit you know how to type ;-)
It seems like a lot of programmers also like to play musical instruments, so finger moment isn't a problem.
If it's that important though, then vendors much stop mucking with the keyboard layout. Real programmers don't need "special" keys ;-) Same with the mouse. I just bought a 5 pack of the Microsoft optical mouse, PS/2 & USB interface, because it is difficult to find locally. It has a nice shape to maneuver and lift, and it works on new and old hardware. I'm going to do the same with my keyboard. NMB RT8255, beige color which makes it easy to see in dim light, nice positive feedback on the keys, sturdy, and the lettering doesn't wear off with use.
dj on November 18, 2008 3:10 PMMo tipng if sine frankuuo
PixelGnome on November 18, 2008 3:14 PMWe could make a game out of the copy/paste technique:
- Copy
- Paste into text editor
- Replace ", " with " "
- Start the clock, Ctrl+V, Stop the clock
"Your speed was: 11650wpm.
Congratulations! You made no mistakes, practice does make perfect."
But in my honest opinion, you should work on speeding up whatever aspect of your programming causes you the most delay.
- if it's your typing speed, then work on that
- if it's problem solving, work on that
- if it's syntax... (well, you get the idea)
I personally see many students who can transcribe code at great speed, but are at a loss when it comes to making their own solutions.
Typing speed is a very small part of the overall equation.
Even better is an elegant solution that minimizes the amount of code you need to write in the first place.
gtnconcept on November 18, 2008 3:36 PMIRC and first person shooters are by far the best ways to learn touch typing. I regularly break 120 WPM with few, if any errors. Plus, I always capitalize and use proper punctuation - no matter how small the message.
Michael Wales on November 18, 2008 4:01 PM> I spent most time with _thinking_, not typing.
I alternate between the two, rapidly. Maybe it's just me, but I can't think very far ahead without trying my ideas out in code.
> Typing is just needed at the final step of writing software.
Sure, but this is a burst bandwidth issue -- at the time when you're really "in the zone", you don't want lack of typing skills to become the bottleneck.
> Typing speed is a very small part of the overall equation.
Sure, but that's how our industry works. Code is made up of a zillion tiny things that can have large consequences. Like, say, a single misplaced semicolon.
Jeff Atwood on November 18, 2008 4:03 PM74 wpm, no mistakes (well, hit a couple wrong keys along the way and backspaced.) About as fast as I thought I was.
I definitely agree that IRC and similar things are the way to make yourself touch-type -- this is how I stopped looking at the keys about a year into college.
Mike on November 18, 2008 4:42 PMI get in a groove and start speeding up and all of a sudden I'm playing music making rythyms and I look down and I'm typing lsdkjf ;sodkfj ;asodifj ;sdfj ;sdfjds fadfj gjfgnflgnldfig gobbley gook.
John A. Davis on November 18, 2008 4:51 PMI wonder how many people who argue here that the ability to type quickly is not an important requirement have also argued that Ruby's ability to type less characters characters IS important.
My guess is actually quite a few, but none that would admit it.
Bill K on November 18, 2008 5:00 PM"That's why vi was the editor of the gods. (Emacs also, as much as it pains me to say that, but still better than the current IDE crap.) You didn't have to break your thought to find the mouse, highlight something, and then go back to the keyboard. You just thought "I need to delete these three lines" and *poof* they were gone."
Hold down CTRL + SHIFT press down 3 times press delete or backspace, use home if necessary.
30 wpm several reason for that, but who cares anyway. If you need to type anything your not using your IDE code completion, code completion. Ppl bashing the keyboard are not using a IDE or are polluting the codebase with boilerplate code. ...and insulting your own intelligence. (excluding Perl programmers I suppose)
Regardless of getting 30wpm in a IDE I can make code appear as fast as my eyes can track it.
Michael on November 18, 2008 5:18 PMWhy, why can't we finally get rid of that stupid useless obstructive shift between the key rows? It was introduced to allow levers to fit one next to another beneath the keyboard. We don't have those levers for half a century already! It absolutely doesn't help for fast typing. Let's get rid of it and make keyboards straight and square. It'll be much easier for typing. It can even be done very smoothly, w/o forcing everybody to switch to a new standard in one night: let's make keyboards with the rows shifting towards the right locating one millimeter per three or five years. In just two decades we'll have an ideal keyboard. (I mean physically, of course the QWERTY layout is one of the stupidiest things we use.)
Let's Make The World Better on November 18, 2008 5:28 PMThanks for the article. You convinced me to look a second time how to change to Normal Style on Word, which didn't use to have a keyboard shortcut (or I didn't find it).
I found lots of good ones:
Ctrl-[] - Font size up/down
Shift-Ctrl-N - Normal Style
Ctrl-1,2,5 - Single, Double or 1.5 spacing
Shift-F3 - Change case between CAPS, lower and Sentence
Thanks for pushing me to learn them, I can now do most of the stuff I used to do with the mouse with the keyboard.
PRMan on November 18, 2008 5:32 PMA carpenter's job is more than cutting wood, but would you hire one who only used hand saws because he didn't bother to learn how to use power tools?
Non-typists won't get this: typists write, while non-typists type and write. Typists don't know they're typing.
Would you ride with a "driver" who had to look at his hands every few seconds to find the wheel?
Roger on November 18, 2008 5:44 PMJeff,
So I'm no one, and you're big time, but I think there's ONE thing that's more important than touch typing.
I just blogged about it here:
http://adotnetdude.blogspot.com/2008/11/how-to-be-better-programmer.html
Let me know what you think.
Esteban on November 18, 2008 5:48 PMI certainly agree and here's why: I recently had a job where I was forced to learn and use only vim. (I am now a convert and looking to implement eclim wherever I can). however, In an environment controlled by a senior aka senile developer I was at the mercy of not understanding my editor as well as a fairly new language and template style. As a result, while I grasped the structure without immediate code completion and an easy copy and paste, some of my most time consuming bugs where simply typos.
Grant Callaghan on November 18, 2008 6:05 PM"The best way to become a touch typist is through typing, and lots of it."
It also helps to have a nice keyboard, as discussed below.
"Hail to the typists!"
Indeed: and real typists use badass keyboards, like the "Customizer" I describe here:
http://jseliger.wordpress.com/2008/05/07/product-review-unicomp-customizer-keyboard
60 wpm no mistakes.
Sometimes Jeff I really think you're on to something. Other times(this post and last post), I think you're just finding something you do well and then proclaiming its essential for a programmer.
Typing is important -- it's how we get the code into the machine. But there are so many other things to worry about and perfect that are FAR more important. I think being a bad typist isn't that big of a deal. Our administrative assistant is a really fast typer. Maybe she should be the coder and I'll take her job.
Brian on November 18, 2008 6:31 PMIt's interesting to hear the stories of smart women who hadn't learned to type for fear they'd be shunted into secretarial jobs, and of secretaries who were surprised to find that programmers could type faster than they could. I learned to type because I assumed I'd end up as a secretary, and it served me well when I became a developer I found I could almost keep up with the sysadmins (who, in my experience, are often faster typists than traditional programmers/software developers). I can type around 80-85 wpm; the sysadmins I've worked with were in the 90-120 wpm range. Must be all those Unix commands. :-)
Lori on November 18, 2008 6:52 PMAt my job, sometimes during lunch or a few minutes before the closing bell, a bunch of us devs from across the company will all jump into the same game on typeracer and go at it. Tons of fun =) Now I know I can do it during actual work time and if management says anything, I'll point them in your direction and say its a core competency. =)
iamcodemonkey on November 18, 2008 6:57 PMI'm not a touch-typist. I've never seen the point; I type plenty fast as it is (75 wpm averaged over four tests) by using three/four-finger "hunt and peck" (but with no hunting, obviously; I know perfectly well where every key is.)
Yes, touch-typing is certainly a good idea, however I rarely find myself impaired by an inability to type fast enough though. And I might learn it one day, but eh. I'd rather spend the time studying to become a better programmer than a better typist, even though the two are related.
Asm on November 18, 2008 7:02 PMWow. Anyone who needs to be a typist first coding C# (that is what StackOverflow is coded in right?) must be writing some of the worst code I've ever seen, has never heard or resharper, or generally has a masochistic relationship with programming.
mendicant on November 18, 2008 7:04 PMI mean honestly, I have those mental lapses where I walk into a room and totally blank on why I'm there too, but if that's your argument for being a typist first and programmer second.... here's your straw.
Although typing skills are needed (I work with a hunt and peck programmer and it can be infuriating to pair with him), being an 84wpm typist won't (read: shouldn't) change your production at the end of the day.
mendicant on November 18, 2008 7:07 PMSo if being a master typist makes you a good programmer than what skill makes you a good software engineer?
I've seen my fair share of typists that can produce hundreds of lines of crap code on any given day. I'd rather hire the guy who actually thinks about the code he is writing, who understands that every instruction is a potential bug, and is properly motivated to write *effective* (and often less) code that is understood by others and is easily extensible.
Sean on November 18, 2008 7:37 PMNonsense. Anyone who workes on a PC all day and can't type 30wpm is a retard anyway. 30wpm is fine. I've worked as a developer and as a journalist and both involve spending all day typing and I'm far from being a good typist. In either of these creative jobs there are skills far far more important. I'm not convinced typing faster will make me any more productive at all.
Dan on November 18, 2008 8:03 PMI disagree:
1. Your words per minute is assessed based on you typing standard English sentences this is not what you do when programming. You regularly need special characters want to perform formatting with tabs or holding the shift key. These are all just as easy no matter what your keyboard style, I regularly find myself with one hand on the arrow keys or num pad.
2. With modern IDE's such as visual studio generally intellisense has picked up the rest of my statement before I have typed it, combine that with built in code snippets or programs like resharper and coderush/refactor pro, how much time do you really spend typing. I am only using visual studio as an example I am sure other IDE's have similar things.
3. The majority of my time is not spent physically typing, it's thinking, refactoring, researching, testing... I would estimate somewhere as low as 5% is time typing.
Yes being an ok typist is important (using more than a couple of fingers) but being a touch typist certainly not, you just don't get the sentence flow to require it unless you are writing documentation.
I can't take this article seriously. Perhaps if you didn't type so fast you wouldn't have wasted our time with this article.
Bill on November 18, 2008 8:16 PMTyping is not very important for you to be a good programmer. I remember some survey where saying that the number of lines typed a programmer per day is just 6. Given that any good programmer does not have a necessity to type more than 100 lines on any given day.
Typing could be useful only for writing emails.
Arunachalam on November 18, 2008 9:23 PMAfter reading this article I feel a lot ~less lonely~ as a far-going touchtypist (and a developer). Thank you, Jeff.
I have gone so far as to using my own touchtyping keyboard all the way from logging-in through system hebernation everyday. I name it "4T Keyboard".
The four T's are: Twenty-four-for-104, Twosome, Touchtyping, and Tracking.
Ttenk
Typing speed is as correlated to programmer quality as it is author quality. Considering Tolstoy struggled for 6+ years to write War and Peace, it's pretty amazing that Jeff Atwood could write it in 3 work weeks (without overtime even!). Heck, I could do it in 4 weeks. ;)
If you have a very low level programming job then perhaps typing speed is important ( but in that position your bigger worry is being replaced by a perl script ). If you're a student that hasn't gotten to control structures, than wpm could really help with that assignment that ends up being 2000 lines of source just so the lecture on for loops that day really hits home.
Haha! "Don't just type random gibberish as fast as you can on the screen, unless you're a Perl programmer" -- That is the coolest thing I've seen in a blog for a while. I love it :)
Tim on November 18, 2008 10:50 PMActually, a broken clock never "tells" the correct time. You have to know what time it really is to determine if the time currently showing is correct.
CB on November 18, 2008 11:06 PMI agree that it is an important skill
well i first learned using mavis beacon teaches typing
I played house of death in typing mode :)
i took the typing test a time ago on a facebook application
it is 89 wpm ... faster than 90 % of facebook :P
the other advantages of being a touch typist is that you can look at your friends, out the window or watch something while typing
another thing i like is when i sit in that weird position at work, head hardly on desk level and no one can say anything cuz i can efficiently work :P
however, in other languages, like arabic , i am terribly slow and i can't immagine how ppl manage with the hunt and strike technique
LifeGeeked on November 18, 2008 11:43 PMI'm not sure about this... it seems to me that optimizing typing time is like optimizing the wrong part of programming. Its like trying to write your loops in assembly when you are doing a brute-force algorithm, when you should actually be thinking of a better algorithm instead. Anyways typing fast is a nice complementary skill.
Robert on November 19, 2008 12:21 AM@Robert yeah, but you know how obsessive programmers are. They'll obsess over optimizing everything. I don't think it's a zero sum game. Learning to type faster doesn't mean you can't also improve your algorithm knowledge.
Haacked on November 19, 2008 12:31 AMJeff,
I hate to be picky, but a broken cleck is right <b>twice</b? a day.
charles graham on November 19, 2008 12:39 AMI've made Artypist, which is a free website for learning to touch type.
I think that sometimes programmers spend most of it's time thinking and not typing. So one may think it should not be crucial learning to type, but let me tell you something:
Sometimes there are moments, hours, even days of great inspiration. You know what? you have to use that time of inspiration before its gone, and the better typist you are, the more things you get done.
When you work, you are not 100% of the time inspired, of course, but thats why, when you are, you should use that time.
For a normal programmer, maybe it's not that important knowing how to type, but that's why I think the article says "if you want to become a great programmer, start by becoming a great typist".
On the other hand, the same applies to bloggers.
I really enjoyed the article ;)
Pau Sanchez on November 19, 2008 12:43 AMIf typing speed really is the issue, why not hire a $15 typist to do it for you? I can assure you that no matter how fast you are,
Let me answer that for you; won't work, because typing is not the thing that's slowing you down. It's the thinking about what you're doing. Copying a sheet of text at 160WPM is not the same as coding a database layer for your software project.
(Of course, keeping an eye on that g*ddamn broken clock won't speed things up either)
Gabri on November 19, 2008 1:03 AMJeff, I think you're spot on. I work with 50 or so developers. It have just generally noted that the touch typing programmers usually run rings around the other. I haven't analysed it, but I've long had the opinion that the touch typers get through work quicker, and write more maintainable code that is less likely to need fixing after a code review.
I think the reason these guys are better is because they have an all round desire to improve their work, so they study their craft hard. That they touch type is just a consequence of their self motivation.
People who don't put effort in to learn how to use their keyboards are probably the same people who don't put effort in to learn the nuances of their programming languages and the tools they use.
So maybe the touch typing skill isn't really the most useful skill, but is just a good indicator of someone who cares about learning to do their job as best as they can.
Scott Langham on November 19, 2008 1:21 AM84 WPM..
Well i guess u have to write something jeff..
Are there any programmer friendly keyboards?
We're always typing : ! % ^ * " ' @ $ & [] {} <>, strings like =>, and of course _
Why are these all on the shift key?
I'm not a Mac user and Ruby uses some characters (I think #) that is a ridiculous number of key presses, you try typing a string with an embedded variable "#{fred}". This gets old fast. Uk keyboards have # without the shift.
And don't get me started about the uselessness of the capslock key, just don't. On windows I have it mapped to be another shift in case I press it by mistake.
Typing this stuff at full speed is hard enough.
Personally, I learned to type on an old manual typewriter in the early 80's - beat that.
Francis Fish on November 19, 2008 1:33 AMWhen I first started learning to program it had little to do with typing. Actually the FIRST programs I made involved no typing at all, but manually putting holes in punch cards on the spare Singer at my dad's job. Later on I learned assembler and did most of my coding with paper and pencil; I would write out the entire program on paper first, and run it through my neural debugger (brain) and only after I was satisfied that it would do what I wanted, then I typed it.
Then when I started learning C I did that for a while too, but eventually grew out of it.
That being said, I started learning touch typing in the 3rd grade, and I'm pretty good at it now (105 wpm with 1 mistake on that test), and I think it helps make me a lot more productive.
---
@pete, sure you use a lot of special characters, and Intellisense helps, but they're still only a tiny part of the code, unless you spend most of your coding time writing regular expressions. And they're all still keys, and being able to get your fingers to them quickly without thinking about it still makes a big difference, so of course typing style matters just as much with them as any other keys.
I kind of agree with this title, unless you dictate to your computer. I didn't have any formal training for typing, but picked up the speed eventually by the time I began programming luckily. First few years of my interaction with computers were for playing games and documentation. Both logic and typing go hand in hand, unless you know what to type, there is no use of having great typing speed. Good logic and fairly good speed of typing is nice combination. One thing from personal experience is that before writing code, if I write down what I have to do on a paper, things work out better, I bet every programmer has the same experience. But as you move up above the chain of command, typing skills are tied to answering mails, preparing presentation, and less technical work. At the level slow typing speed is helpful, because you have whole 8 hours at your disposal (again this is personal observation, and may not apply to all)
Anand.V.V.N on November 19, 2008 1:42 AMCould not agree more with you...good notice
Rampy on November 19, 2008 2:08 AMAm I the only one who've found that my typing speed suffers tremedously from switching between my laptop, my keyboard at home and at work?
I used to type a lot faster when I only used one computer, but using three different keyboards is just more than my motor system can handle:(
33 wpm btw (on my home desktop keyboard)
Audiomind on November 19, 2008 2:38 AMConsider this. I just looked at the source code to a game that I helped develop several years ago. Total source code size is approximately 18 million bytes. Whether or not most of the time is spent coding or thinking, that amount of code has to be typed or otherwise created. Somebody like me when I'm working I'm typing about 25,000 keystrokes per hour (33,000 when typing straight English). That works out to be about 720 man-hours of typing. Now consider a more average typist who types around 10,000 KPH. That works out to about 1800 man-hours. So that's a difference of about 1080 man-hours of typing over the course of a project. At the average salary for game programmers, that's over $40,000. Obviously things like Intellisense will cut into that some, but even if it cuts it in half that's still a pretty good chunk.
I remember reading on some random blog, http://www.codinghorror.com/blog/archives/000637.html that "If you're wondering how much code the average programmer produces per day, I think you might be asking the wrong question."
That same post linked to a Microsoft blog that pointed out the Vista developers wrote just 1000 lines of shipped code per year.
Assuming the average line of code consists of around 8 "words", then a non-touch-typing 50wpm coder (like myself) would take 2hrs 40mins to type that in, whereas an 80wpm touch-typist would take 1hr 40mins. A grand saving of just one hour a year!
Graham Stewart on November 19, 2008 2:56 AMMy opinion is the Good Programmers code around others, and its not because they type faster, but because they think out a good plan and simulate the problems in their head before they starting to code, thus finish the task at hand in the shortest most effective way they can.
While the eager typist is still retyping their buggy-code, N-times redesigned code. That they didn't think through enough.
As for the Driver example... I'd rather ride with a driver that drives slow and steady and takes in his surroundings, more than some Immortal teenager that thinks he's a stunt-driver that can do 160mph in back alleys or what not.
But of course you have formula-1 drivers, they are best...
Robert on November 19, 2008 2:57 AMYour speed was: 98wpm.
Congratulations! You made no mistakes, practice does make perfect.
English is not my native language and I was slow with stopping the clock. Hooray!
mannu on November 19, 2008 3:30 AMI disagree whole heartedly. I would say being a slow (but accurate) typist is better. If you can't finish your work because of the slow speed of your typing, you're writing to much code! If you have to type that much code, maybe you should consider the following
1. Better code reuse
2. You should be doing more thinking/designing so you only code something once.
3. Your jobs sucks because you have the coding equivalent of Mr Bucket's job in Charlie and the Chocolate factory
Jeff, I don't like to tell people they are talking bullshit, but the "verbal diarrhoea" so to speak coming from your fast typing skills is getting worse. Yes, being about to touch type fast is a valuable skill, I just completely fail to see how it correlates to high quality code.
> “Steve and I believe”
No Jeff, Steve Yegge believes it, you are just regurgitating it to look like you are in the same league as him, you might be able to type as fast as him, but I would bet hard cash that what he types is of higher quality than you (code or blog). Maybe you should take a lesson from him by writing longer, more informed and original blog articles that people will really learn something from, instead of just being flame bait to generate ad revenue.
One last point, if people read your blog, it is highly likely they read other peoples (including Yegge), don’t go around reiterating what they have said in some “Me too” fashion as they most likely have already read it firsthand.
Tim
As long as you can type faster than you can think you should be OK as far as programming is concerned. There is a huge difference between copying passages from a book at ~90 words per minute and writing (sensible) code at the same speed. I don't think I know anyone who can do the latter.
That being said, I sometimes wish I had learned touch typing when I was younger. I can type about 80-90 words per minute in English, but when typing (fast) for extended periods of time I get tired in my wrists and fingers. I have tried to "reprogram" my typing skills several times, but I always give up because the drop in typing speed starts to annoy me after a while.
Anders Sandvig on November 19, 2008 4:12 AMThat was the most absurd thing I have ever read.
darren on November 19, 2008 4:18 AMI disagree.
84 words is allot more than the amount of code I could write today.
I use IBM's Rational Application Developer
I wish I could type 50 SPM (Statements Per Minute)! Pure multi-threading.
Saj on November 19, 2008 4:46 AMDvorak keyboards: I had a look on ebay - lots of coloured transparent stick-on things to "convert" your existing keyboard - not $100, more like $1.99!
Francis Fish on November 19, 2008 5:34 AMI must admit, I totally agree with Tetha on this. It took me longer to read the text from the screen than it did to type it back in! I scored 31 wpm, but I can program faster than most of the developers that I know. Where they are quoting over 100 days for a piece of work, I'm quoting 30 or 40. This has nothing to do with typing speed, but my ability to look at a problem and come up with a viable solution quickly.
@Jeff, I do agree with you to a certain extent that being able to type faster does help with my profession, but not when I'm typing code in to a code editor. This would help more when typing up design specs, etc. I have found myself dictating to my girlfriend when I have a big document to write, as she can touch type properly, but I'd never dictate code to her, I'd be quicker doing that myself! So while she can touch type, she certainly can't type code, even from dictation! So, "..typists first, and programmers second.", definitely not.
Being a contractor, I get paid by the hour, so I'll be going back to the hunt-and-peck method soon, though!!!
Charlie
57wpm with two mistakes
For the most part, I type with just two fingers from each hand and most of that is touch-typing. I started out that way on a Compaq Portable in the 80s, tried to re-learn the "home row" method in high school and hated it, so I stuck with my pseudo touch-typing method.
On the other hand, my mother has been a secretary for all her adult life and can do 120 wpm without breaking a sweat.
Pete on November 19, 2008 6:14 AMWhen coding, most of the time we are not typing. And when developing a software, most of the time we are not coding. I think your argument is flawed.
John on November 19, 2008 6:23 AMI'm not going against your point here, but if you are to follow the "touch-type" guidelines (which the image of the keyboard is based on) you can't type in {, } or any other fun characters. Just a fun observation
Thomas Winsnes on November 19, 2008 6:32 AMjust for the hell of it
I do believe I am the fastest copy/paster in the west! Clocked at:
Your speed was: 10682wpm.
Congratulations! You made no mistakes, practice does make perfect.
102 wpm.
I took a typing course in grade 10 (1979), even before I touched a computer. I had been typing my homework and I felt I should learn typing so I could do my homework faster. Little did I know that it would become a central skill in my career!
Steve Boyko on November 19, 2008 7:04 AMOn the subject of typing and programmer productivity, is anyone else annoyed by the fact that so many modern 21st century programming languages still inflict case sensitivity and punctuation-mark riddled syntax? I mean, which is easier to type: "for c=1 to 100" or "for(c=1;c<=100;c+=1)"? Are "&&" and "||" really preferable to "and" and "or"? With modern IDEs that fill in the "End Ifs" and "End Whiles", etc for you, are curly braces really saving anyone any typing when defining code blocks? Most touch typists still need to take a peek to find the punctuation keys, which may not even be in the same place from keyboard to keyboard, especially with laptops.
And how many times a day do you mistype variable "myVar" as "myvar"? Backspace, backspace, backspace, shift-"VAR", oops I hit caps-lock instead of shift, backspace, backspace, caps-lock "ar", oops build failed, it's actually declared as "MyVar", search and replace, etc. Ugh!
K&R put all of that stuff into C back in the early 70's to make it easier for them to write the compiler, (which at the time was just an internal research project at Bell Labs) certainly, not to make it easier to write programs in!
The most productive programming languages I ever used for business application development were the 4GL's popular way back in the 80's, before OOP caught on, and C++ with its ugly syntax and case-sensitive nonsense became the de-facto model for the next generation of languages (Java, C#).
ED on November 19, 2008 7:26 AMI could probably type 80 wpm or faster if I really wanted to push myself, but I hit 72 without feeling that little twinge that reminds me that 20 years of keyboarding and pounding out over 10,000,000 words have really taken their toll.
A more useful typing test for programmers would involve lots of { and } type things though. Especially for people who aren't using English layouts. Almost all of the symbols common to most programming languages are bafflingly horrible and evil on non-English keyboards, and it would throw anybody's time way off.
That brings up another amusing point along these same lines. I had a British friend who lived in Spain, and who complained constantly about how evil the keyboards were. I asked him why he didn't just change the layout. That's what I do to type in foreign languages, and I know several alternative layouts by heart. But no, he could never use a keyboard where the little things printed on the keys didn't match what the keys did. He's been programming since ENIAC or something, but apparently can't touch type!
Michael on November 19, 2008 7:26 AMWow. Closer to 30 years actually. No wonder my wrists hate me. And my mouse arm shoulder.
Michael on November 19, 2008 7:32 AMInspired by Yegge's original post, I'm on a mission to break the 120 wpm barrier.
I'm happy with Typing Master software (http://www.typingmaster.com/).
Adam Kahtava on November 19, 2008 8:27 AM71 wpm, and one mistake (forgot to type the period at the end).
Noether on November 19, 2008 8:36 AMProgramming is just typing in the same way baking is just throwing stuff in the oven. Raw speed has very little to do with productivity.
Also, a broken clock could be right any number of times in a day if we consider relativistic effects and different types of breakage (operating at high speed, etc.).
Jon Galloway on November 19, 2008 8:42 AMWhen I did the test, I was around 45 WPM with one mistake. However, later in a day, I got "in a zone" and "typed" some significant portions of code and as typing, I suddenly realized I am typing a lot faster and not looking at the keyboard at all (this observation broke me out of zone, as I wanted to share my experience here. I hope I will be able to get back and perform some more work).
In general, I agree with those thinking strict standard typing skills (esp. typing speed) are not that important. What is important is you are typing in such a way your typing is not blocking you. "Typist" typing is definitely one possible way how to do this, but there are also other ones.
Ondrej Spanel on November 19, 2008 8:54 AMyou know you're a java programmer when... ;)
Luckily I've never worked with programmers who weren't touch-typists. It should be a secondary skill.
But is programming really writing? Depends on the language. A highly declarative language might feel this way. Dynamic languages tend to be a little more tricky since you start to talk about the ways of things instead of what things are. When you reach Lisp, you start writing things to write things for you and end up having a continual conversation with your programs.
At the end of the day though, our job is to control processes which manipulate data. Got to remember that this stuff is translated down on some level to bits and bytes.
j_king on November 19, 2008 10:02 AMI agree with you now. It was called "typing 101" when I took it many years ago (IBM selectric...), but now it's called keyboarding, since nobody knows what a typewriter is.
(82 wpm, 2 errors. I can hit 95-100 with reasonable accuracy when I get warmed up...)
Eric on November 19, 2008 10:13 AM***I mean, which is easier to type: "for c=1 to 100" or "for(c=1;c<=100;c+=1)"? ***
The second one is faster and easier to type. I have been coding in C-style languages for 20 years - it is a natural language at that point.
****Are "&&" and "||" really preferable to "and" and "or"? ***
Again, solely a matter of what you are used to - && has one less keystroke too. Also, && is clear and unambiguous - it's an operator that is well defined, where "and" is an english word, and its usage in everyday speech makes the meaning unclear sometimes in the programming context - thus, the recent invention of stupid keywords in VB like "AndAlso" which is somehow different from "and", and no where near as clear as "&&"
****K&R put all of that stuff into C back in the early 70's to make it easier for them to write the compiler, (which at the time was just an internal research project at Bell Labs) certainly, not to make it easier to write programs in!****
Actually, coding languages were terse back then because memory was unavailable to store large amounts of source code, and when everybody knows what "?" means for example, why waste a whole 8 bits by making them type "if" - the first C-dialect I worked in had a one-character abbreviation for almost every keyword. I loved it - if you knew what the letters meant, it was just as readable as any other language, and since you could fit more code on a page, it was actually easier to work with than other languages.
Jasmine on November 19, 2008 10:54 AMJust for fun I tried the test on my phone, and got 25 wpm. =)
Ricardo on November 19, 2008 11:05 AM"Dvorak keyboards: I had a look on ebay - lots of coloured transparent stick-on things to "convert" your existing keyboard"
That doesn't make a dvorak keyboard - it still requires you to change your OS settings.
Brad on November 19, 2008 11:46 AMTyping 'the way it should' just makes my hands hurt and feel really weird. My fingers just go all over the keyboard randomly, though still I have quite a high typing rate and don't make a lot of mistakes.
PBEAN on November 19, 2008 12:33 PMI used to type blindly with 10 fingers, but my wrists got sore when programming. I had to stretch my tiny hands too much. All those shift [, + and - signs, numbers, backspaces and deletes... I also use control, alt and shift for Resharper, together with the home, end, left right and (page) up and down keys. So I had to leave the home row anyway.
Now I type with mostly my index fingers and pinkies. My wrists are in much better shape.
The important thing is that you can type without thinking, it doesn't matter how many fingers you use. As long as it doesn't break your flow.
I got 45 wpm, enough for me. I could have doubled that if it would have been normal English, which I didn't have to re-read over and over again. All those 30-word sentences and weird words made my non-native-English head spin.
alvin on November 19, 2008 1:33 PMAw... This makes me sad. :| I already do this.
Casey on November 19, 2008 2:22 PMI'm a fulltime employed coder with young onset Parkinsons.
take that ;)
Jonathan
Jonathan on November 19, 2008 3:13 PM"Programming is just typing"? I don't think so.
If you type slow, you tend to type less - which results in shorter code and carefully think before you put lots of shit on your code that later you need scrap it out in a so-called "refactoring".
Brainless fast typists suck even more.
Mark Howard on November 19, 2008 4:22 PMJust as important as learning how to type is investing in a good keyboard. My friends called me insane when I invested $50 in a keyboard. Similarly, it's almost impossible to get your employer to buy you a good keyboard.
Chefs buy their own knives -- and they generally will buy the best knives they can afford (read: expensive).
As a programmer, your keyboard the tool with which you craft artwork. How can you possibly hope to do your best work with a poor-man's tool?
Peter on November 19, 2008 5:22 PMJeff,
I cannot agree with you. Just ask programmers how many times did they delay work because they type slowly. For me, none!
I know that one guy in Microsoft who design Windows memory management. He types with just 2 fingers.
Morgan Cheng on November 19, 2008 5:46 PMAll right with me.
I'll drop you in the middle of the forest and let you there. You'll survive for sure, after all, it's just breathing and having a heartbeat! Anybody can do it!
Less extreme? I'll let you into a rally car, or a NASCAR machine. Easy, after all, it's just driving, isn't it?
Why don't you speak 5 or 8 different languages? After all, it's just making noises with you mouth! Can't be easier than that!
If it was only a question of typing, why take someone with university diplomas and pay him big money? I'll hire the nearest secretary that can do 100 WPM, and drop her in your chair. Or maybe you're getting paid way to much... Minimum wages should be enough, you're just typing!
In all those cases, it's not only the apparent easiness of the job, it's the skill required to make it appear easy. You're a fast typist, good for you. But don't say, or let anyone say, that our job is "just" typing.
Typing is one of the many, many skills that make a good programmer, and I'm far from sure that it is part of the more important ones.
Spou
Spou on November 19, 2008 7:11 PMAnyone can touch type mere letters and numbers, thats child's play.
I want to see people touch typing C code.
All of those chicken lips and ^s and &s and |s and \s and @s and #s and ~'s seriously broke any elegance or style I had previously. No one ever taught that in my TYPING 101 course in high school.
I would argue though that great typing skills have very little to do with creating elegant code.
Great typing skills allow stupid people to create crap faster..
Davide on November 19, 2008 7:27 PMUnless there's a new sport called freestyle coding I fail to see any relevance between being able to type and writing good code.
If you're reproducing code you wrote down on a napkin i can understand the benefit of speed, but if programming was like typing, they'd call secretaries programmers.
The majority of my coding time is spent in my head. I used to write down pseudocode before, but I find it easier to just brainstorm.. in my brain. Diagrams go a long was as well, but typing.. err.. I don't think so. I worked in an internet cafe once and suddenly I was typing up school projects for $10/hr and I couldnt really type that well. I had taken formal typing lessons, but the bad habits never seem to go away. I type at least 100 words/min but i often go faster when I'm daydreaming.
Ezrad Lionel on November 19, 2008 8:08 PMSometimes the ide interrupts my typing. New Visual Studios and many other programs type by themselves too, but not always as I want. So I have to hit undo from time to time or correct some other "mistakes". There goes some time to trying to find the correct settings to disable or modify the features, but not always succeeding.
Silvercode on November 19, 2008 11:15 PMAlso tooltips cause lag. If I want to see something, a tooltip pops up and I need to move the mouse and try to calm down before I see what I was looking for.
Silvercode on November 19, 2008 11:16 PM75 wpm on my first attempt. I made 3 errors.
I have to admit that I am not very good about remembering to use capital letters for new sentences.
I think if I didn't have to backspace to correct my capitalization 4-5 times, I would've been up to 85-90 wpm.
TM on November 19, 2008 11:31 PMQUOTE: "Anyone can touch type mere letters and numbers, thats child's play.
I want to see people touch typing C code.
All of those chicken lips and ^s and &s and |s and \s and @s and #s and ~'s seriously broke any elegance or style I had previously. No one ever taught that in my TYPING 101 course in high school."
@Davide: personally I find that I type code much faster than the type of text presented in the test that Jeff linked. I also find that typing speed is important when programming. I like to be able to "keep up" with my train of thought as much as possible. Having to stop by train of thought to wait for text is BAD.
"Regular" internet typing, where I type as I think, I can type much faster than the test given as well, since I'm not trying to exactly duplicate something that I just read.
In the typing tests, some of the words are spelled wrong, and the grammar is a very old style. (For example, I had one where many 'e' characters were replaced by apostrophes). This slows me down even further, since I have to correct myself from spelling it correctly.
TM on November 19, 2008 11:39 PM@jeff, u better come up with some better articles..ur readers don't seem to be very happy about your work atm...
Jeff, I'm a long time reader of this blog, and while I find many of your posts interesting and informative, this one is just... well, wrong.
As Spou noted before me, you cannot reduce coding to mere typing.
I spend very little of my time actually typing the code, most of the time I'm thinking about a problem and trying to come up with a good solution.
If you really believe that coding is just typing, then I wouldn't want to be the person maintaining the code that you wrote.
matt on November 20, 2008 2:25 AMJeff, I'm a long time reader of this blog, and while I find many of your posts interesting and informative, this one is just... well, wrong.
As Spou noted before me, you cannot reduce coding to mere typing.
I spend very little of my time actually typing the code, most of the time I'm thinking about a problem and trying to come up with a good solution.
If you really believe that coding is just typing, then I wouldn't want to be the person maintaining the code that you wrote.
matt on November 20, 2008 2:25 AMOMG I just read a blog on typing
ASG9000 on November 20, 2008 3:12 AM76WPM, no errors, and I've never had a typing class. If the paragraph didn't have so many odd words I had to double check for spelling, I would have scored as I usually do on other tests, in 80s to 90s.
In other words, you type fast and never took a class. I type fast and never took a class. Neither of us made errors.
Why the hell would you burden someone with a soul-killingly-boring typing class? The only people I know with carpal-tunnel are those that learned the "proper" method of typing which strains the tendons too much. I only use the first two fingers on each hand and the thumb, moving my arms to position my hand, and can type faster than anyone else I know.
Bill on November 20, 2008 3:52 AMThere is obviously somewhere a limit where inefficient typing technique becomes a productivity inhibitor. I'd propose that less than 35-40wpm could be a "potential concern". But there are so many other factors that consume your time, that a typing speed gain would be like fitting an 3.5GHz CPU in a 10-year-old motherboard - assuming it was physically possible): All other system components are so slow, that the time gains in the CPU hardly matter.
I scored 60-65 wpm on the test (including inline backspacing to correct errors), forcing the speed beyond that results in one or more errors being left in. I'm not unhappy with my typing speed, at least I've never felt it was a productivity bottleneck.
Of course I could be faster. Let's say I could train myself to be 50% faster. Would it make me 50% more productive as a programmer? Clearly not. I rarely type that much code in one go without long thinking-pause, compilation, test, etc.
I recognise your description about walking into rooms, but while coding, I rarely ever forget what I'm doing - in fact, good programmers excel at tracking this kind of task path in their head while they're creating code. And perhaps it's exactly because you have to shake off this kind of deeply nested contexts that you have trouble remembering non-coding-related tasks like fetching coffee, going to bathroom, etc.
showing my age - accuracy was always more important - had to use keypunch (backspace doesn't work) and would find out 3 hours after submitting deck that there was a typo. Punchcards - no wonder I had nightmares in college - my roommates would tell me I was having nightmares about my cards all flying away.
Laura on November 20, 2008 5:23 AMThis is one of those little things that can make a big difference and is often overlooked. It's like losing 10 pounds when you are a race car driver. It will actually make you slightly faster, even though it's not really your main focus.
Practicality on November 20, 2008 6:47 AM@Michael
Ergonomic keyboards *really do* help with that. Give it a shot some time. Similar to a good chair, those kind of things make your day much better.
Just a suggestion.
Practicality on November 20, 2008 7:01 AMTotal bullocks, of course you need decent typing (54 wpm :/) but software dev is not really about typing but thinking what you type and at 84 wpm, i assure you it's faster to copy paste ;)
Also, keyboards are not ergonomic, go read about the history of qwerty, azerty. They where made to slow down typing because writing machine couldn't handle the secretary typing speed!
Well, i just destroyed your post, can't believe it went to «popular» dzone section...
seb on November 20, 2008 7:28 AMI've noticed that even among non-programmers, hunt-and-peck typists often have limited awareness of what's actually on the screen. I think that fumbling around on the keyboard while trying to accomplish a task on the computer is like fumbling around with a cell phone while trying to drive. You can do it, but you're working at less than half of your mental capacity and are liable to make some dangerous mistakes, or at least omit some important details.
I personally know programmers that think that 30-40 wpm is perfectly acceptable because they spend most of their time thinking anyway. I've always found that to be a self-defeating argument. If thinking is our core competency and typing is just unavoidable overhead, then it's EVEN MORE important to minimize that overhead, whether that means automating it with tools or just training ourselves to do it faster.
Think of it as trying to converse in a foreign language without total fluency. You can probably figure out how to ask where the bathroom is, maybe even ask for directions, but you're not going to have much success with a philosophical discussion.
Aaron G on November 20, 2008 7:35 AM"Also, keyboards are not ergonomic, go read about the history of qwerty, azerty. They where made to slow down typing because writing machine couldn't handle the secretary typing speed!"
That's a myth. There's not a single grain of truth to that claim. Kind of ironic how people will feel that they "destroyed" the post with a comment full of typographical errors and general misinformation.
Aaron G on November 20, 2008 7:37 AMAaron G
Thats not a counter argument :)
I saw it in my ergonomic class in uni. It's also in wikipedia...
http://en.wikipedia.org/wiki/QWERTY
So hmm yeah, not a myth.
seb on November 20, 2008 8:04 AMYou might also checkout www.keybr.com. I have used it in the past a bit, trying to learn Dvorak (literally gives me a headache). I really enjoy it's easy online interface. Where ever I'm at I can practice.
David on November 20, 2008 8:39 AMI have used Dvorak for the past 5 years, it has helped keep carpal tunnel issues at bay. I used to go home from programming all day with my wrists on fire, I then changed to Dvorak cold turkey and haven't looked back. It is also fun to change a coworker's keyboard layout when they leave their machine unattended, and it is also a bit of a deterrent against people messing with my machine...
Your speed was: 77wpm.
Congratulations! You made no mistakes, practice does make perfect.
Well, if Wikipedia says so, it must be true. You might want to actually check the references in that article, though.
http://www.reason.com/news/show/29944.html
The number of places the qwerty myth is referenced is mind-boggling. There's never been a shred of evidence to support it. It sounds plausible, but a lot of historical fiction sounds plausible.
Aaron G on November 20, 2008 10:38 AMMy first programming job, one of the first things that was asked in the interview was if I could type. I can't imagine doing my job without having mad typing skills.
I remember watching a magazine editor at the same company hunt and peck. So much for efficiency in that department.
Michelle on November 20, 2008 10:47 AMI think it depends on how you program. If you actually like typing everything out, then i guess being a good typist really helps.
However if you're a lazy programmer (like you should be), you will more often then not be hitting auto-complete keys. I rarely have to type more then 3 letters before hammering down on the auto complete.
The rainbow keyboard is KeyRight Look & Learn Keyboard.
It's $50 and comes with typing tutor software. The whole point of the colored keys is to show you where your fingers go. I'm not sure how pedagogically useful that is but it certainly does liven up a desk.
The Korean light up keyboard mentioned in another comment is really cool. There's an article about it here:
http://technabob.com/blog/2007/08/12/luxeed-led-rainbow-keyboard-disco-on-your-desk/
The black one is pretty cool. I'd consider purchasing one if they had an ergonomic version.
Dana on November 20, 2008 11:46 AMIf all it took was typing as fast as you can think then there wouldn't be a need for refactoring. I'm amazed that you are even implying this.
rel on November 20, 2008 2:10 PMYour speed was: 105wpm.
Congratulations! You made no mistakes, practice does make perfect.
First thing in the morning, I'm hungover, I paused to talk to a co-worker half way thru and I have AIDS.
i win on November 20, 2008 3:22 PM35 wpm but I'm not a native english writer...but yes, I type using only 2 fingers. u_u I have to take a course to improve my typing...I think I'm better with code...intellisense, snippets and a common collections of words helps.
Rulas on November 20, 2008 3:25 PMI love it when I see posts like this because they piss me off. Typing speed does not equate to anything. Mediocrity is the only problem within the programmer ecosphere.
Kevin on November 20, 2008 4:20 PMI have to disagree. I think it's more about using the keyboard efficiently. Most of the time, it's tabbing, arrow keys, alt+sumting or ctrl+sumting or highlighting with shift+home/end to copy&paste/delete. rather than out-and-out paragraph typing. I'll admit it'll be an advantage but it'll only be a problem when it is slower than your train of thought (or you actually have to think about the keyboard when typing).
I think someone mentioned that the best programmers are sometimes also the laziest. They will create/get all the best tools, libraries, templates, shortcuts, frameworks etc. just so that they have easier time programming, and minimize trouble debugging/changing later. Will they learn to type faster so that they can shorten the time needed to express themselves? Perhaps, but I think, as long as they type competently, all the above will take precedence than learning to type faster.
Eazy on November 20, 2008 6:46 PMi came late to the party and thus no one actually reads my comment.
I have actually made my own keyboard layout (actually most of it is stolen from a group of people who began to make a really good keyboard layout and then proceeded to change it every 2 weeks so that no one could actually learn it. luckily they had it licensed as gpl have a look:
http://xyious.com/blog/main.php/2008/keyboard-layouts
)
now as an added bonus people like jeff atwood (see post a couple of years ago by phil haack) can't look at my keyboard and guess my passwords, or be able to type on my layout .... plus a few of the important characters (important for programming, like {} [], etc., can only be accessed by pressing the right alt key and one other key (usually a number, on the right hand side of the keyboard (how stupid is that)) on the german keyboard layout, which are on the home row very easily accessible on my layout.
point is learning to type tho (and not necessarily touch type, as there are people who break 90 wpm by hunt and peck, even without looking at the keyboard), and here i have to say practice is the only thing that helps. typing all day will make you faster, with time. a concentrated effort for a couple of days (definitely not all day, you need to take breaks. one rule always applies .... if it starts hurting you need to stop, even if you're programming in crunch time) will speed up the process.
i definitely suggest spending half an hour a day practicing until you've reached a sufficient typing speed. after that practice for half an hour twice a week will still increase your typing speed.... and if you're self employed it pays to keep practicing.
Alexander Knopf on November 20, 2008 8:39 PMI can't believe how many people take this stuff seriously! Jeff is just having a lend as usual. (typed in .00003 seconds)
fred on November 20, 2008 8:52 PMI'm just a learner, but I feel so much more productive now that I've learned to type fairly quickly. While typing speed shouldn't seem like the limiting factor for programming productivity (you surely spend far more time thinking and reading existing code than you do typing), it's truly remarkable what improving your typing speed and accuracy will do for your productivity. The faster you can type, the more easily your thoughts flow when you <i>are</i> writing. The more accurately you can type, the less time you spend on frustrating tasks like correcting yourself. The ideal is to think of a line, and write it, all in one rapid action, so that your hands become a direct conduit from your brain to the screen without you having to think about how the symbols got there. When you are waiting for your hands, you are stalling your brain. At best it's like being in a busy waiting loop, and at worst you can even lose your train of thought.
I completely agree with Jeff's comments though i would also add that Keyboard shortcuts are just as important to know than pure typing skills. I've followed this up on my blog @ http://www.tobymills.com/blog/?p=17
Toby Mills on November 21, 2008 7:03 AMIf typing is that important to your programming, then you're clearly writing too much code.
Yes, I can touch type... more quickly and accurately than most... but really, the only reason that how quickly you type might give you an advantage over another programmer is that you're both writing too much code.
Instead of worrying about how quickly you type, think about what you're typing. Otherwise you'll end up repeating the mistakes that lead to the mountains of terrible code that's already out there.
Rakesh Malik on November 21, 2008 10:38 AMMy text editor (vim) allow me this:
I don't use keyboard arrow, escape, tab, enter, backspace and delete (they are too far)
I use hjkl, ^k, ^i, ^j, ^h, it saves my wirst instead.
I use 2 text editors (vim + textmate) at the same time, each for what they are best for.
Sure progamming requires some typing and of course you need to be somewhat skilled at touch typing. But you also need to be skilled at handling some sort of debugger, knowledge about algorithms and the big O formalism, some insight in the structured computer organization etc. If typing is your biggest problem among these, I'd say you´re more than half way to becoming a good programmer. If it´s not, you still have a long way to go. Really stupid post.
Sebastian Ganslandt on November 21, 2008 3:04 PMOf course, it’s about speed. Besides speed, it’s also about being one with your machine.
http://www.thousandtyone.com/blog/MartialArtsAndComputersAreYouOneWithYourComputer.aspx
rajiv on November 21, 2008 3:10 PM110wpm. W00t! But with four mistakes. Not the fastest or most accurate, but pretty well in there. (Except for you bozos who cut-n-paste. Cheaters.)
How about typing numbers? I got 43wpm from the same site. Beat that!!
Arguably numbers and symbols are more important to programming than typing straight text, especially with languages like C that use a lot of special characters.
But, to the point of the blog, programmers are not "typists first;" nor however is typing irrelevant to programming. The real issue is not raw typing speed, but rather how quickly one can drive the user interface of whatever one is using to program. If you can drive your environment at least as fast as you can think, you're OK. If you can't, then either your thinking is being slowed down by your typing (or mousing) speed, or you're spending mental effort on driving the user interface instead of on programming. Either one means you're not living up to your full potential as a programmer.
I agree with your statment about losing a degree or two of respect when you see a 'programmer' using the hunt and peck technique. It just cracks me up to see it. What makes me cry however, is to hear a programmer call up our helpdesk and ask how to install or uninstall a program, or how to initiate a defrag, or any number of things a 'standard' computer user should know. That is what really makes me cry.
Reboots DaMachina on November 22, 2008 7:11 AMTyping is a (necessary) tool of the programming craft, just like latin was deemed a mandatory necessity for any kind of scholar in the middle ages ...
Be carefull not to confuse the tool and the craft, they exist independently.
'lexu on November 22, 2008 7:58 AMwoooot..
Your speed was: 104wpm.
You made 4 mistakes,
And as to my suggestion; find some one and attempt to out type them repeatedly for weeks on end, while in the dark. Chat fighting for the win.
Neskiairti on November 22, 2008 10:17 AMGot to disagree with you on this one. Typing is not that important when you are using good editors with snippets and intellisense.
Jonathan Starr on November 22, 2008 10:53 AMI agree that typing is extremely important. I wouldn't go so far as to say that we're typists first, but I would argue that we're at least typists second.
Your speed was: 98wpm.
Congratulations! You made no mistakes, practice does make perfect.
lmcfarlin on November 22, 2008 7:00 PMI'll never forget a few years back when my mother retired from teaching. At the retirement dinner I looked across them room and saw my old typing teacher who was also retiring. I was compelled to get up go over to her and hug her neck. I told her and her family she had made me more money by teaching me to type than all the other teachers I'd ever had. She was so proud.
John Swaringen on November 22, 2008 8:35 PMSome excellent programmers that I have known possess not only good typing speeds but are also quite dexterous with the mouse as well. One person I knew used the mouse so fast during a demonstration that I had to ask him to slow down a bit.
Inder P Singh on November 23, 2008 1:09 AMThe best typing tutor I’ve ever met is Solo: http://ergosolo.com
Azat Razetdinov on November 23, 2008 3:24 AMI'm not a great typist and never have been. I wish I could type faster (yes, I did take a class many years ago to learn), but still I'm not great. However, I've known many people who don't type well and they still write good code. You have to think more and spew less, which is good coding style anyway. Typing speed is great for emails and documents, but I don't agree that it makes you inherently a better coder. I think you simply add more buggy code more quickly. Slow down a little, think, design, use code completion, refactor, test, etc. I believe that writing less code is better than writing more. One of the smartest programmers I know considers it a good day when you delete a couple hundred lines of code. Typing speed doesn't help with that. Yes, it's useful to know how to type, but that's not a reasonable way to judge programming skill and you're making a grave error if you look at somebody hunt and peck and think less of them. The real judgement of good programming is much more esoteric and difficult.
Wandercoder on November 23, 2008 2:07 PMI say first learn to program then learn to type, typing is essential, but knowing how to code should come as a priority. Typing is just a stepping stone on the way to become a great programmer but it's not the first one.
I agree that touch-typing and greater typing speed is beneficial... hard to argue it. But the typing test definitely favors the touch-typist, as you are copying random text. The touch-typist never has to take his eyes off the screen... big, big benefit in this test. The non-typist has to find his place in this large text every time he brings his eyes back up... and it takes longer to to absorb the next piece of text he is going to copy... you have to remember capitalization, punctuation, and spelling of a text that is not your own thoughts.
In coding, however, you are typing what is in your head already... you are not having to go back and forth with your vision, the text you are writing is coming from in your head, and you are not concerned about replicating something on your screen. I'm not making the case that touch-typing is wrong (that would be dumb), only that these standard tests are not a true measure of "programming typing" speed... I think the hunt-and-peck crowd would at least fair a little better in that circumstance.
However... this has pushed me top go back and re-learn touch-typing... it would be a benefit. And if there are any other developers or managers that are judging my performance as a programmer on my lack of this skill (whether warranted or not), it is worth taking the time to learn.
putman on November 24, 2008 8:53 AMSo you claim that because typing is required to be a good programmer, all programmers are primarily typists? That's ridiculous. A prerequisite is just that - something required *before* being able to succeed at something else.
Mind you -- I disagree with the other side as well -- I see a few comments to the effect of "slow typing forces you to think more," which is equally mindless tripe.
Tom Barta on November 24, 2008 10:46 PMWell over half of the time you spend working on a project (on the order of 70 percent) is spent thinking, and no tool, no matter how advanced, can think for you. Consequently, even if a tool did everything except the thinking for you -- if it wrote 100 percent of the code, wrote 100 percent of the documentation, did 100 percent of the testing, burned the CD-ROMs, put them in boxes, and mailed them to your customers -- the best you could hope for would be a 30 percent improvement in productivity. In order to do better than that, you have to change the way you think.
I only type at about 40 words per minute but I think better and faster than most. It's the same approach as "measure twice, cut once". 40 wpm is fine as long as you only have to write those 40 words once.
Ozy on November 25, 2008 2:44 AMTyping is on a very small part of program development. Being able to type at a hundred words a minute maybe impressive to some, but I believe the ability to think logically to solve programming tasks is by far a greater skill to have.
Also typing code is very different from writing a letter etc.
The secretary at the office can type at blistering speeds, but understands zero when it comes to coding!
She's a typist, I'm a programmer! Different occupations!
I dedicate all my skill at typing to video games, MMOs specifically. Since in the vast majority of MMOs, the only realistic means of communication is typing, and you need to communicate with so many people so often, it leads to absurd amounts of typing each day.
Psy on November 25, 2008 9:17 AMThis post inspired me to get back to touch typing (rather than 4 fingered touch/look). I am still slower touch typing than 4 fingered but getting better...
Along with the lessons at www.typeonline.co.uk that Jeff mentioned, I found a couple of nice games on facebook that are good for typing practice. The best IMO is typing race at http://www.facebook.com/apps/application.php?id=34857441437 You can see a video at http://vimeo.com/1728018 if you're not on facebook. Also quite fun is typing of the ghosts, which as you can imagine is a flash take-off of typing of the dead: http://www.facebook.com/apps/application.php?id=26707082548
You could almost justify playing these at work as they're improving your skills ;-)
danio on November 25, 2008 2:52 PMWe're not really typists much either with intellisense anyway. So who needs typing skills? Not me.
Bobby on November 25, 2008 4:09 PMFor typing practice: http://www.typing-lessons.org/
anonymous on November 26, 2008 8:27 AM56wpm sans training after a year on Dvorak. It's much better than the 30ishwpm I had on QWERTY for approximately forever. Plus my fingers are on the right keys and I don't hunt-and-peck. I recommend learning to touch-type on Dvorak if you cannot yet do so on QWERTY!
Does Typing of the Dead work with Dvorak?
Kelsey Higham on November 26, 2008 1:25 PMFor this article, you sir are truly an idiot and clearly know nothing about programming.
The best programmers are lazy typists and find ways to DRY up their code so that they avoid typing too much. In fact, I think that if you are spending more than 20% typing in ratio to thinking while coding, you are either a bad programmer or using the wrong tools. (Usually the wrong programming language or text editor).
Michael on November 27, 2008 6:11 AM86wpm
3 Mistakes.
I totally agree; I must admit that if I know how something should be written and can't use a pre-written template or copy it from somewhere else - being able to quickly type it up from memory is a god send. I'm self tough and my fingers tend to wander around the keyboard a little depending on which area of keys I'm focusing on at the minute rather than keeping them in the home row and moving my fingers up or down like real typists do.
I tried the dvorak (spelling) layout once and after getting used to it (I don't look at my keyboard so the fact the face of the keys were wrong wasn't an issue) it was a lot faster and I could write even more!! Only issue was that it was really designed for programmers; I remember the '{' and '}' keys being hidden somewhere making C programming a nightmare.
Ah well. Nice post.
Chris on November 27, 2008 6:35 AM96 WPM with 1 Mistake
That mistake? Typed "from" as "form".
I consider myself to be a pretty good typist :)
Joe on November 27, 2008 11:57 PMAs a developer, I might be asked to deal with some pre-existing code with a bug. Say something about 1500 "words" long. In about 30 minutes, I notice it's a common capability written the long way around. I rewrite into 20 lines, maybe 70 "words" (is a++; a word?).
Effective typing speed: -47 words per minute (1430 fewer words). You cannot get much slower than that and be proud of it. If I was a faster typist I might have gotten to -48wpm, but nobody would really notice.
Scumop on November 28, 2008 8:25 AMMeh, if typing speed is the limiting factor in your porgramming productivity you need to think more and type less. I spend a lot more time thinking about what code to write than I do actually typing it.
Jamie on November 28, 2008 11:28 AMWhen I was about 16 (2 years ago), my PC was unable to run my USB mouse and USB wireless adapter simultaneously. Rather than buy a new mouse, I spent months navigating with just a keyboard, and it improved my typing competency dramatically. I'm only at 50 WPM according to the Type Racer site, but it's a damn sight better than I was previously, and I recommend it to all those who wish to improve their typing skills.
Michael on December 1, 2008 5:21 PMWhoa!
I thought I was a programmer, all the while I've been a typist?
hmmm.
74 wpm, between 0 and 2 mistakes.
I type with 2 fingers and my thumb for the space bar. I've taken typing lessons before, but it just wouldn't stick. The habit is in and I get enough speed for most stuff anyway.
asdad on December 5, 2008 5:59 AMTwo words: COPY PASTE
How often do you really have to type long passages when programming anyway?
Two more words: FIND REPLACE
With these 4 words you can make up for any WPM, hunt and peck typing issues.
jb on December 5, 2008 12:05 PMYour speed was: 95wpm.
Congratulations! You made no mistakes, practice does make perfect.
Woot.. first try. Being able to type rocks.
sniep on December 5, 2008 12:26 PM81wpm, on my laptop keyboard, which I never use for much more than surfing the web because it's terribly slow for me.
Obviously it's self-serving for me to say that I think typing is important. I believe it is, but I also believe that there are plenty of extremely good programmers out there that can't type. I think it's some sort of mental block, as my dad and uncle can't type at all, but have both used computers almost as long as I've been alive. I could type 40-60 wpm with the hunt-n-peck technique (2-finger-typing ftw), until I hit 19 or 20 and bought my own computer, and given that my dad was using computers most of my life, so was I.
What brought me forward to touch typing was a combination of practice and removing the mental block of looking down at the keyboard. The practice came mostly from playing more and more complicated games, especially FPS and RTS games where you don't really have time to look down. The FPS games especially trained my left hand to get most of the left half of the keyboard by memory. At that point I simply forced myself to look at the screen when I was typing instead of the keyboard, and found that it took very little time to get over the mental issues and get my right hand trained.
Beyond that it was getting all of my fingers involved, something they focused on a great deal in typing classes, but that has been very slow catching on for me. Now, at the age of 30, my typing still remains mostly a 3-finger affair, plus thumbs on the space bar and the final finger mostly delegated to the edge keys (ie shift, tab, ctrl, enter, backspace). Typing games are really good once you get started in speeding up your typing, but may only go so far for people just starting to learn to type. On the other hand, they might help some people realize they can do it if they just stop looking.
Vizeroth on December 8, 2008 4:24 PMWoohoo! Thanks for mentioning Colemak. I've been using it for over a year now and I still love it. It was easy to learn, and it's so very much more comfortable than QWERTY.
The better you can type, the less brain-CPU-time you need to devote to the actual typing. I don't think you need to be able to type 100 WPM, but being able to type by touch without looking at the screen is very helpful for me.
Typing by touch also tends to go along with being able to spell, I've noticed. Touch typists spell partly by muscle memory. People who can't type quickly tend to spell poorly; could slow typing inhibit muscle-spelling-memory?
Adam DiCarlo on December 11, 2008 8:55 AMYes. Typing is important, but not secondary to thinking ofcourse.
By the way, I didn't do too bad either.
Your speed was: 67wpm.
You made 1 mistake, your mistake is shown in bold text:
Prateek Parekh on December 16, 2008 2:36 PMI got 249wpm, is that bad?
Calvin on December 17, 2008 12:42 PM> Don't just type random gibberish as fast as you can on the screen, unless you're a Perl programmer.
Thanks, Jeff, best laugh I've gotten all day! (and I *like* perl)
paul on December 22, 2008 10:46 AMCold struck me hard on the nerves this year and I spent my xmas learning programmer's DVORAK. Hell, I need more practicing, I'm still at 23WPN, and the amount of attention must be way lower.
But I feel much better and relaxed at the end of the day. You should really try it out. I broken both my wrists in a car accident so I suppose it's better for me than what you will experience.
But I still think I was dumb using QWERTY so long.
MaxDZ8 on January 7, 2009 7:06 AMI would like to point out a slightly different point (sorry if it is obvious, perhaps...):
1st, I do not think that the "pure" typing speed is sooo terribly a difference (unless you are speaking of someone that codes one character per second or every 4 seconds!!!):
I always thought (and seen based on evidence from some projects) that in the medium-long term (in the 4 or 6 month of a project, I mean!) the big difference is made by the overall quality of code...
perhaps, I repeat, that's obvious, but I think that a set of well made C++ classes, right architected, is more important than typing fast
(I admit that being all the other points the same, then typing speed brings some difference, though...)
ANYWAY... the thing that I wanted to say first, was another one:
I think that , MORE THAN BEING FAST AT TYPING, one more important thing (or, I dont know if actually you considered this also one aspect of "speed typing"!) is to be really proficient with your tools:
example:
I saw once a colleague of mine (that, btw, I respect a lot for his qualities as a designer generally speaking: he is brilliant, deep, good skilled and also really a nice guy to work with) that also was absolutely proficient in the usage of the EMACS editor:
this, I think, is a slightly more important difference than being fast at "typing": he was actually really able to do all the imaginable things at an extremely high speed from inside of EMACS, and this for sure makes some difference in the "amount" of code that you are able to produce, compile, test and debug in the 8 (ehr... 10 or 12) working hours that you have available in a day!
Rgds,
Alex
p.s. sorry for the bad english!!
> At least four times a day, I walk into a room having no idea
> why I entered that room.
I ... forgot what I was going to say.
Oh! The absent minded are just being present minded *somewhere else.*
Paul on January 17, 2009 1:28 PMDvorak: 90 WPM, no errors
QWERTY: 49 WPM, 1 error
I type with 2 fingers and my thumb for the space bar. I've taken typing lessons before, but it just wouldn't stick. The habit is in and I get enough speed for most stuff anyway.
http://petrastroy.ru/
Okay, I'm embarassed by my score...so I won't post it. I think I blame my MacBook Pro. As much as I love this laptop, it's not the best for pure typing.
...someone please validate my statement...
I've been touch typing since I was eight.
Anthony C on February 2, 2009 1:35 PM118wpm, qwerty, no errors. Kinesis Advangate Pro keyboard. The Kinesis makes all the difference, been using it since 1991.
ET on February 3, 2009 10:01 AMOkay, I'm alright. I redid the test from a comfortable typing position instead of my crappy desk at work.
Your speed was: 84wpm.
You made 1 mistake, your mistake is shown in bold text:
THIS book is the record of a struggle between two tempreaments, two consciences and almost two epochs. It ended, as was inevitable, in disruption. Of the two human beings here described, one was born to fly backward, the other could not help being carried forward. There came a time when neither spoke the same language as the other, or encompassed the same hopes, or was fortified by the same desires. But, at least, it is some consolation to the survivor, that neither, to the very last hour, ceased to respect the other, or to regard him with a sad indulgence.
Anthony C on February 4, 2009 12:40 AMI read this awhile back and very much agree with your sentiments here. One interesting difference between the usual typing games and what we do as programmers is that we use a lot more punctuation and digits (lots of stretching compared with prose typing). Anyway, I slapped together a programming typing game (mostly javascript) that, for now, just has some HTML snippets. Thought it might be interesting to some (plus I want some competition for my record times!). http://www.keypressr.com
Colin Jones on February 16, 2009 1:31 PMWhile typing speed does matter unless you are undertaking mindlessly repetative programming it isn't going to hamper you much at all. I admit i'm not the best typer, 90% of my keypresses are basically 2 finger typing. Although I have found that in uni much faster typists that myself have completed thing a lot slower than myself.
Also in my work, much of the time is spent thinking about what i'm trying to create, also a lot of the time I am using copy and paste to modify large sections.
The speed impacting you remembering something is a decent point, although I find whereas I can walk into a room and forget why I am there with programming I will always be able to recall what I was doing eventually. What I also find unusual is how much better my mind will work when leaving the computer, all to oftern i'm knocking my head against a wall attempting to get somthing working correctly and efficicently, I will walk away and come up with a completly different approach that is a lot better.
rob ryan on February 16, 2009 10:42 PMHey. Smell is a potent wizard that transports you across thousand of miles and all the years you have lived.
I am from Seychelles and know bad English, give true I wrote the following sentence: "Info the first great cheap airline ticket sites online."
Thank ;) Alyssa.
Alyssa on April 20, 2009 8:39 AMHi guys. There are worse things in life than death. Have you ever spent an evening with an insurance salesman?
I am from Paraguay and too poorly know English, give true I wrote the following sentence: "As a rule airline tickets booked early can usually get you dirt cheap deals."
With best wishes :), Henning.
Henning on April 20, 2009 11:36 AMHi guys. To be able to fill leisure intelligently is the last product of civilization, and at present very few people have reached this level.
I am from Myanmar and too poorly know English, give please true I wrote the following sentence: "Made by reliable automatic lighting co."
Thank you very much :o. Karif.
Karif on April 25, 2009 12:17 AMWhen I was about 16 (2 years ago), my PC was unable to run my USB mouse and USB wireless adapter simultaneously. Rather than buy a new mouse, I spent months navigating with just a keyboard, and it improved my typing competency dramatically. I'm only at 50 WPM according to the Type Racer site, but it's a damn sight better than I was previously, and I recommend it to all those who wish to improve their typing skills.
http://lidertour.ru
Hunt and peck method, 96wpm, one mistake (missed the period at the end of the last sentance).
Hunt and peck is all I've ever known and it works absolutely fine for me. I recently bought my first laptop and was shocked at how much quicker I can type with it, simply because the keys are squeezed much closer together than on a standard keyboard, and are also much shallower than normal keys, so lend themselves MUCH more to the hunt and peck method.
Jonathan on June 11, 2009 1:52 PM| Content (c) 2009 Jeff Atwood. Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved. |