19 November 2008

Typing is the most important class a CS student could ever take -- not!

Every once in a while somebody who I think is very smart makes a pretty boffo comment. Case in point: Jeff Atwood over at Coding Horror concurs with the idea:

....the most important computer science course a CS student could ever take [...is...] Typing 101.

Wow. I really disagree with this.

I have worked on any number of projects over the years where it has been obvious to me that one or more of the engineers who work on the project can type....and by this I mean TYPE A LOT. I've seen projects that were comprised of a lot of code....piles of code...reams of code...tons of code. I am not exaggerating even a little bit when I tell you that I even knew of a project that involved a lot of highly paid engineers doing a lot of typing ("typing" and not "coding"). The project manager of that project cheerfully reported the progress of the project by saying "at this rate, we've got another 7 months of typing ahead of us". In the end, by any reasonable measure, THAT project turned out to be a total failure. Why was this project a failure? Because the engineers weren't typing the right things!

For the record, I think that it is a good idea that programmers can type reasonably well, but on the other hand the things that I value in a programmer are problem solving abilities, communication abilities, technical skills, and overall professionalism. I've met programmers who have all of these abilities and aren't the greatest typists. Would I hire these programmers to implement a project? You bet I would.

If Jeff Atwood is correct and typing is the most important course that a CS student could ever take, computer science departments all over should immediately adjust their curriculum. Also, the process of hiring software engineers needs to change. First and foremost, every software engineer must change the format of their resume to prominently mention how many words per minute they can type. The first step to any software engineering interview must be changed to include a rigorous typing test.

I think that I'll end the reductio ad absurdum now...

For a software engineer, it's not how fast you type, it's what you type that is important.


Bill McGonigle said...

Before my parents would buy me a computer they said I had to learn how to type. They took pity on me after going through several typewriter ribbons and got a C-64, which had all sorts of keys in different places.

Now I still can't 'type', but I can get 70wpm out with my home-grown programmer's hand layout. The only time typing speed would be useful would be for filling out user messages in strings files, which is rarely a major component of a programmer's time. If you need fast typing to program you're using a language I haven't encountered. Or Java (half-kidding).

kdc said...

I am a reasonably competent typist. I am not fast by any means but I get the job done.

When I program I do spend a non-trivial amount of time doing "tricks" to increase my output. I write a lot of sed/awk/Perl hacks to create/transform {stuff} into what I need. So, I might produce 3000 lines of code on a given day but I might have only actually typed 300 lines of this. I try to let the computer do the typing for me...