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. Yes, there's a first time for everything. Maybe this'll be the start of a trend. Doubtful, but you never know.
Steve and I believe there is nothing more fundamental in programming than the ability to efficiently express yourself through typing. Note that I said "efficiently" not "perfectly". This is about reasonable competency at a core programming discipline.
Maybe you're not convinced that typing is a core programming discipline. I don't blame you, although I do reserve the right to wonder how you manage to program without using your keyboard.
Instead of answering directly, let me share one of my (many) personal foibles with you. At least four times a day, I walk into a room having no idea why I entered that room. I mean no idea whatsoever. It's as if I have somehow been teleported into that room by an alien civilization. Sadly, the truth is much less thrilling. Here's what happened: in the brief time it took for me to get up and move from point A to point B, I have totally forgetten whatever it was that motivated me to get up at all. Oh sure, I'll rack my brain for a bit, trying to remember what I needed to do in that room. Sometimes I remember, sometimes I don't. In the end, I usually end up making multiple trips back and forth, remembering something else I should have done while I was in that room after I've already left it.
It's all quite sad. Hopefully your brain has a more efficient task stack than mine. But I don't fault my brain – I fault my body. It can't keep up. If I had arrived faster, I wouldn't have had time to forget.
What I'm trying to say is this: speed matters. When you're a fast, efficient typist, you spend less time between thinking that thought and expressing it in code. Which means, if you're me at least, that you might actually get some of your ideas committed to screen before you completely lose your train of thought. Again.
Yes, you should think about what you're doing, obviously. Don't just type random gibberish as fast as you can on the screen, unless you're a Perl programmer. But all other things being equal – and they never are – the touch typist will have an advantage. The best way to become a touch typist is through typing, and lots of it. A little research and structured practice couldn't hurt either. Here are some links that might be of interest to the aspiring touch typist:
(But this is a meager and incomplete list. What tools do you recommend for becoming a better typist?)
There's precious little a programmer can do without touching the keyboard; it is the primary tool of our trade. I believe in practicing the fundamentals, and typing skills are as fundamental as it gets for programmers.
Hail to the typists!
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 AMI'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 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 AMWow. 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 AMI 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 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.
Jeff really the title of this post should be reversed. It should be We Are Programmers First,Typists Second. I've seen plenty of devs who could type fast but could there code compile or be maintained by anyone but them? The most important thing really is concentrating on correctness, maintainability, security, and lastly performance.
Typing is important too but it is last on the list of the attribute checklist of a successful programmer.
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 AMSo 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 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 Liststring _list;
public Liststring 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/
Nonsense. 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 AMI 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.
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 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 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 #1049;#1062;#1059;#1050;#1045;#1053;. It is arranged in such a way that most of the frequent letters are typed with the forefingers.
When I use QWERTY, howerver, I have to use my ring and pinky fingers a lot, which is not really comfortable. And even worse, I have to use my left hand more than the right hand. It's not problem that it is left, I play guitar besides programming, so fingers on both of my hands are quite agile. The problem is that it is slower than typing with two hands at a time. That's why I try some weird positions of my hands to type quick and use CTRL + Space in NetBeans a lot.
Why can't the keyboard manufacturers make keyboards with a better layout, I wonder? I don't believe that it would be so difficult to switch to another layout if it's really comfortable. By the way, I don't find Dvorak much better as it still suffers form the same problem: frequent letters like A, O, E vowels on the outskirts of keyboard.
Malcolm on November 18, 2008 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. disclaimerI 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 AMYou 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 AMunless 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 AMTyping 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 AMAfter 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
Ugh. Anyone that holds their role as a typist higher on their list than as a programmer has to be a pretty shitty programmer. I hate to have to put it so bluntly, but there it is.
Yes, typing speed is of value, but I spend more time programming than typing and am damn proud of it. Typing is just one of those sordid things I have to do between bouts of programming. Shortening that time is valuable but never more important than the programming itself.
Jeremy Gray on November 18, 2008 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 AMIM 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 AMTyping 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.
I don't think it's very accurate. It says I typed 1wpm and made one mistake. (A period!?) I'm pretty sure it didn't take me an hour to type that passage.
If typing is a core competency, I submit that spelling is another one. It's hard to find every place in code that manages delimiters or separators when people spell them as delimeter and seperator.
There's also a big difference between typing code and typing in your native tongue. I don't know of any human language on this planet that uses braces, parentheses, and semicolons to the degree that C++ does.
Stefan on November 18, 2008 10:02 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.
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 AMDon'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 AMActually, 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 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 AMWe 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 AMI 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 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?
quoteI 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 AMI 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 PMThe comments to this entry are closed.
|
|
Traffic Stats |