Tuesday, November 18, 2008

Programmers are Typists - And More

After reading Jeff Atwood's blog post "We Are Typists First, Programmers Second" on Coding Horror, I thought I'd better go see what my typing speed was.

I took the same online typing test that Jeff Atwood took, and managed to beat him:


We'd kinda hope that someone who writes software for a living could type with a reasonable speed. I'm curious to know if my mom, who types as part of her profession but is a non-programmer, could beat me.

Even more, I'm curious to know what my typing speed is when writing code. If you were to do a test like that, "mistakes" could be calculated by the number of syntax errors your code generates if you try to compile/run it. However, I'm not sure what a "word" would be, in calculating words per minute.

Surely your familiarity with the language would make a difference in your "speed." What I find a bit interesting about this discussion is that your typing speed in this case does not necessarily equate to your delivery speed.

For example, if you, like much of the computing world, are a Javahead, in my opinion you have a bit of baggage to overcome in order to attain a reasonable delivery speed. Java's mantra seems to be, "Why do something in one step when it can be done in two - or five?" Thus if you are a Java programmer, you've got some verbosity to overcome in order to attain productivity. Fast typing speed matters for you.

On the other hand, if you are a bit more sane and prefer a language like Python, the language is actually helping you out here. It is so easy to arrive at functional code in Python that perhaps the language makes up for typing shortcomings that a programmer might have.

What about a language like C? C is admittedly terse, but it doesn't do a lot for you because it is comparatively low-level. If you don't have libraries in hand to do what you need, writing them yourself kinda removes any advantage you may have gained because of the terseness of the language. Of course C is excellent based on other factors.

I do agree with the post though - typing is important to programmers. It is important for an additional reason - and that is because good software engineers should be expected to generate documentation - design documents, API documents, test cases, and SDK documents like tutorials and explanations of sample code. In short, there's a lot more typing to be done in a software engineer's job than just the typing of code.


Now, many of you are asking, so what does it mean if you type nearly 90 words per minute AND are not handicapped by a blind adoration for Java? What if you are a fast typist AND you prefer Python?
Well! That describes me quite clearly! And apparently, it means little. Sorry.