We Are Typists First, Programmers Second

Remember last week when I said coding was just writing?


This is a companion discussion topic for the original blog entry at: http://www.codinghorror.com/blog/2008/11/we-are-typists-first-programmers-second.html

For the curious, I searched around trying to find that rainbow keyboard. The closest I could find was the Luxeed keyboard (available on Thinkgeek: http://www.thinkgeek.com/computing/input/a85c/)

I don’t know where Jeff found this one with the black bezel and colored keys. Even though the image filename suggests it is a Keyright keyboard, a Google image search for that does not yield one with a black bezel.

It’s hard to take anyone seriously when they suggest that typing is the most important development skill. But, I’m glad, Jeff, that you have a skill to fall back on in case the programming thing doesn’t work out. By the way, how are you at making coffee…?

I agree with Chris; typing speed is only relevant if it obstructs your flow of thinking. What bothers me as a recent tendency though is to put a whole lot of oughts and shoulds that are pretty arbitrary and do not relate to the issue of composing good quality, well-documented, extensible code that satisfies a need. In my mind, we should focus on taking the needless steps away from that process, not adding steps to the shortest path between idea and implementation.

With modern IDE typing code is more like playing game, than like typing full words. You are constantly using shortcuts, choosing things from menus, and copying stuff. Also tabulation is completely different (and more important) in code, than in English (or any other language).

BTW - i’ve found that I’m more productive, when I type slower, and stops often to think about what I want to type next :slight_smile:

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 :slight_smile: (thanks for this idiom, BTW), and he types a few times slower than I do.

A good programmer won’t need to type fast since their code will be succinct and compact. it doesn’t matter if you type half as fast if your program is 4 times smaller than the fast typist’s…

I hunt and peck and my spelling sucks (English is not my first language) but there is a big difference between a coder and a programmer. A coder types whats a programmer tells him to do. A programmer designs software. Remember Programming 101? No code only flowcharts!

pete: and when you want to chnge something in your program you’ll have to find and change things in 7 different places, while in better code it will be oneliner change.

In a reaction to this I wrote this. Why English is really important to us non-English speakers.

Typing is the second step for the other people in the world ;-).

Does anyone here have experience with Kinesis, Maltron, or even any other more extravagant input device? I’d really like to hear about it.

I don’t type too slow or too fast, just kind of half-fast…

In College, a professor said don’t learn to type. His reasoning was that you need you hands for your whole career and typing fast will bring on rsi, secondly by typing fast you will avoid coming up short cuts for doing repetitive tasks and being more creative. I don’t totally agree but there is something in both points.

There’s one touch-typist guy here at work. It’s indeed incredible to see him type. The bad news is that when it comes to programming, I usually have the same feature implemented in half the LOC (while using more verbose 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.

I 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 :wink:

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 :wink: 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.

We 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.

IRC 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.

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.

74 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.

I 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.

Your speed was: 75wpm.

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

Booeeeh!!