Jeff Atwood said in one of his blog articles:
Coding is basically just typing. So if you want to become a great programmer, start by becoming a great typist.
I completely and absolutely agree with him.
I am not YET a GREAT programmer, but I have a great deal of pride in my ability to type about 108 Words Per Minute (WPM). I owe all that to my father. When I was a kid, while my peers played their video games all day long, my father made me sit in front of a typewriter, with a typing manual and made sure I learned to type. It all seemed like some sort of punishment back then. But now, all I can say is “Thanks Dad!”. My ability to type properly and efficiently has become one of the most invaluable skills I possess, in my humble opinion.
I have to commend the university I attended for the fact that it made keyboarding compulsory for almost every student. However, my university made one vital mistake in exempting computer science students from keyboarding classes. If keyboarding classes are important to any set of people, it is the computer science students. Steve Yegge in one of his blog posts made this statement:
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.
This is exactly my point. It is a good thing that my university decided to “force” make the majority of students take typing classes, but they made a major error in exempting the CS students.
Many people might disagree with my belief (and indeed Steve Yegge’s and Jeff Atwood’s) that the ability to type properly and efficiently is absolutely essential to the programming profession. I’d like to see a programmer who codes without his keyboard. I cannot really take a “hunt and peck” typist seriously as a programmer. I know as programmers, we might not code at the speed of thought, so therefore our typing speeds might not exactly translate to a drastic reduction in software development time. However, an efficient typist, would always,in one way or the other make a better programmer in many ways. In fact, programming is not just about writing code. As a programmer, you are always in a position to type one thing or the other.
This could be the documentation for your software, an e-mail explaining one thing or the other to a fellow programmer, or some other piece of documentation. My point is, a good programmer has to undertake a huge amount of typing in order to get his work done effectively. So, as a “hunt and peck” typist, I just wonder how much you would be able to achieve. Even if a programmer does not exactly know how to type, he might be able to write a few lines of code and get a basic app running. But just imagine how much such a programmer would hate commenting his code and I am sure we all know just how important generous and well placed comments are in programming. To make matters worse, I am pretty sure such a programmer would hate creating any form of external documentation. Software might be spectacular, but without proper documentation, it is almost useless.
In the little experience I have had as a software developer, I often find myself having to explain concepts to other people on the Internet using Instant Messaging (IM) or even e-mail. Of course, I do not write with a pen on my computer screen; I HAVE TO TYPE IT using a computer keyboard. Judging from my own experience, I believe most programmers find themselves in this same situation. So, what happens when a “software developer” does not type efficiently? It seriously affects his ability to communicate effectively with team mates or just about anyone on the Internet that has anything to do with his ability to effectively produce software. I believe communication with other people is a vital aspect of the software development process. Personally, I have serious problems communicating with programmers on the Internet who have serious issues with typing! I guess the programmer who cannot type would just have to relegate himself to hallway discussions. Unfortunately, most software development teams hardly ever share the same hallway!
Jeff Atwood goes ahead to say that:
When you’re a fast, efficient typist, you spend less time between thinking that thought and expressing it in code.
Many of us are familiar with the following scenario. You decide to go into a room with an original intention of doing something in that room but by the the time you get there, you completely forget what brought you there. One way of looking at this is that in the time interval between moving from your original location to your destination, you have forgotten the reason for which you got up in the first place. In essence, because of the time you have spent trying to express your original intentions, your body and mind has forgotten exactly how and what to express.
This same scenario happens when writing code. There are times when you have a particular idea and due to the time interval between thinking about it and expressing it in code, that particular idea drifts away or loses its original efficacy.
However, I have to make one thing clear. I am not saying that every programmer must go through formal typing classes. But at least, every programmer should be able to type efficiently. I mean, if you actually claim to be an efficient programmer, then you must have spent quite a significant amount of your time working with a computer keyboard long enough to buy you a near-destructive ability on the keyboard even if you do not follow all the formal processes involved in typing. These days, learning to type is pretty easy. Despite the fact that I’m still pretty young, I still had to learn to type using a manual typewriter and absolutely no software. But today, we’ve got software like Mavis Beacon Teaches Typing and Typing of the Dead to teach us how to type using fun methods that are really not as boring as the old ways. In Typing of the Dead, you actually get to learn to type by shooting zombies!
I’d like to end this article by quoting the closing remarks of Jeff Atwood in his own article:
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.
It is empowering being able to type almost as fast as you can think.