Programmers are not typists first

Jeff Atwood had a recent post that coders are typists first, programmers second:

Steve [Yegge] 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.

I’m in the camp that I believe that anyone that touches a computer more than once a month should take a basic typing course.  But programmers as typists first?  I did some math on a recent 6 month project, and found that we averaged around 50-70 lines of code per developer per day.  Typing is important to me as a developer, but I still type far more during the course of a given week writing these ridiculously boring, narcissistic blog posts, emails, and the book.

What’s more, the typing skills I do have don’t really help out in the course of the day for those 50-70 lines I do write.  I code in C#, which means at least half the characters I do have to type are:

  • {
  • }
  • <
  • (
  • )
  • ,

Almost all of which require the shift key and some hand gymnastics to get around.  C# certainly isn’t nearly as wrist-friendly as other languages, but it’s not the most verbose either.

Still, not even most of my keystrokes in Visual Studio are dedicated to typing code.  I have no data to support this, but it seems like half the keystrokes go to a lot of ReSharper shortcuts and a couple Visual Studio ones.  The ReSharper shortcuts still make exclusive use of the Ctrl, Alt and Shift key in various combinations with other keys.  Again, I’m not typing words, but performing key chord combinations.

While typing is important, I’d still say learning design and OO are far more fundamental than typing.  But being a good typist won’t really improve your programming much.  If you’re typing so much that your typing skills are holding you back as a developer, I’d say you’re creating waaay too much code.  That much code is rife with duplication, and you’re not doing enough thinking, designing and analyzing.  With ReSharper, my ability to create code is as optimized as it can be.  There are still improvements to be made, but typing was never what held me back coding.

If you have to touch a computer, yes, learn to type.  But let’s not get carried away that we are typists first, programmers second.  We’re thinkers first, coders second.

Where TDD fails for me