

We Are Typists First, Programmers Second - bdfh42
http://www.codinghorror.com/blog/archives/001188.html

======
dhbradshaw
My uncle crushed his spinal chord and lost the use of his legs and fingers. As
a c6, he can move his arms in broad strokes, allowing him to type.

He has become a hacker in the best sense and done important work for many
years now. His mind matters more than his fingers.

------
axod
That's ridiculous. Good programmers work out how to type less using the power
of their mind. If you can type exceedingly fast, where is the incentive to
produce better more concise maintainable code? Learning to type fast before
programming could be a big mistake IMHO.

Also, if you love programming, you practice... and the more you practice, the
faster you get.

Typing is just the current method most people use to pass data from ourselves
to computers. Programming will continue to exist once we have moved on from
using keyboards.

~~~
yummyfajitas
The difference is the following.

As a fast typist using emacs, code simply flows from my brain to the compiler.
I think it, things compile, I see the results. My conscious brain is 100%
focused on my code, it's almost like a direct brain <-> computer connection.

Lately I've suffered from RSI. The pain is no biggie, but it forces me to
consciously focus on typing. When this occurs, I lose the (almost) direct
direct brain <-> computer connection. The fact that 15% of my brain is focused
on typing without pain lowers my productivity significantly.

~~~
axod
Maybe I'm doing something wrong. The bottleneck for me has never been typing
speed (Even when using idiotically verbose java), and I'm probably an average
speed typist.

~~~
yummyfajitas
It's not a matter of speed being a bottleneck, it's a matter of context
switching. Switching context makes me lose focus.

Fast, unconscious typing: Code -> program results -> code -> program results
-> woohoo, it works!

Thinking about typing: Code -> typing -> program results -> code -> typing ->
"Mmm, pad thai, so yummy." -> "Where was I?" -> code -> program results ->
code -> typing -> "I don't know her name, but I think I'm in love with record
store girl." -> "where was I?" -> "She has the nicest smile when I buy music
she likes."

------
rapind
I don't agree with Jeff or Steve. Mainly because a lot of programming is about
thinking, reading, googling, and copy / paste.

However, a couple weeks ago I did read Steve's original post on this and
decided that since I wasn't a great typist I couldn't really argue that it is
or isn't a hindrance for coding. So I began learning to touch type. Since
Steve's post I've put in approximately 1 hour (sometimes more) a day using a
course I paid for. My words per minute is up to about 50 (I used to be around
35 with my own invented way of typing), however I've still seen no speed
increase while programming because of all the symbols and numbers, so I'm
still at it.

I still don't think it'll have much of an impact on my quality of code or rate
of production. Most of my time is still spent thinking, reading, googling ;)

IMHO, anyone saying that typing is the most important skill for a programmer
is being silly. It likely is one more useful tool in your toolbox though.
We'll see.

~~~
rapind
I forgot to add a small point of criticism. In order to prove his point near
the end Jeff is comparing extremes instead of realities. Touch typing v.s. not
using a keyboard at all... I think the reality comparison is 80 wpm v.s. 35
wpm.

Also, I could be wrong on this, but I doubt the 84 wpm he rated on a word test
is the same rate he'd get writing code. The -=+/?\|&*()$#@! really slows me
down drastically. My apologies if I'm wrong.

~~~
chris11
This sounds like a good problem to solve, create a typing program for
programmers.

~~~
rapind
yeah, the thought occurred to me. Something similar to
<http://online.typingmaster.com> but allows users to create and pakage custom
courses. I.e. a programming course that starts with most of the same stuff but
then gears towards a specific language (java, ruby, python, etc.). Then allows
you to share these courses with others.

------
bdfh42
What typing?

I use Visual Studio - you just hit a letter and then the <TAB> key and
Intellisense writes the code. The programs don't always do what was intended
but hey you can't have everything.

~~~
Hexstream
I only type 65 WPM and use long variable names, yet I usually don't bother
using autocompletion.

I feel thinking about possible word clashes and the resulting background
process of continually estimating the optimal prefix so that I type enough
letters to get the correct completion yet not too much to waste effort is
slower and more distracting than just typing it out.

As I see it, autocompletion is just an aid for when you don't remember the
exact name of something.

------
Frabjous-Dey
I like Steve Yegge and Jeff Atwood a lot, and I respect them as experienced
programmers who probably know a lot more than I do. But, frankly, articles
like this discredit their expertise in my eyes.

You would either have to be an extremely poor typist or an extremely prolific
programmer for your productivity to be constrained by your typing.

------
tdavis
It's important to note that being a competent typist and being a competent
_programming_ typist are different things. On the test that Jeff linked to in
his post, I scored 101 WPM. Throw in enough symbols and numbers and other non-
standard stuff and I am forced to look at the keyboard occasionally which
lowers that number significantly.

As someone coming back to Vim after years away, this is complicated by the
need to memorize and be able to instantly recall a font of often complicated
commands. I am so inefficient currently that if a task simply requires some
copy/paste operations or I need to work with a very long file I will usually
just fire it up in TextMate and use the dreaded mouse to speed things along.

I don't believe conventional typing courses are sufficient for gaining the
sort of seamless connection talked about here because the focus is on
proficiency in typing common characters / words. I much prefer the "Words &
Numbers" test on that site
(<http://typeonline.co.uk/typingspeed_alpha_numeric.php>) because it forces
the practice of shifting between common characters and less common ones.
There's another test I can't recall the link to that basically just makes you
type never-ending series of single numbers and symbols along the top row.

Learning conventional typing is pretty easy. Becoming a highly skilled
programming typist is a task that requires much more practice.

------
davidw
Hrm. I think great and just decent programmers are probably well within an
order of magnitude of one another when typing, but not in terms of
productivity. Yeah, if you don't know how to type, learn, but come on, is the
sort of thing one has to resort to to get traffic?:-/

------
jmah
I've always wanted to learn to type with just my left hand. The Half-Keyboard
idea goes quite a way to that end; <http://gnufoo.org/ucontrol/> used to
implement it on earlier Mac OS X versions, but they were threatened with a
patent suit and so removed it.

Can anyone here type with one hand and recommend how to go about it?

------
icey
Dear painters: If you want to succeed, please use the largest brush available.

------
maurycy
Few months ago we were writers, now we're typists. What's next?

~~~
inerte
From Jeff and Steve:

The One Thing Every Software Engineer Should Know
<http://www.codinghorror.com/blog/archives/001177.html>

Every week some thing is more important than the old thing from previous week.
Next, we'll hear about stuff like "food", and "friends" and "love".

This necessity to shock is a gimmick. It does work for sensationalized news
for example, where from time to time a certain crime gets more coverage and
importance than others, even if the same type of crime is happening
simultaneously.

Typing is cool, ok, and so is marketing. But the germinating view is
simplistic: All things being equal, an awesome engineer who types faster is
better than an awesome engineer. But things are never equal.

"Learn Typing" plays with a primal human necessity, apealing to the easier
denominator. It makes people feel good to tell them that they can be better
professionals in two weeks.

"Learn Marketing" plays with our frustations. So many people have lived this
situation: The product was perfect, but maybe if I had just told about it
differently, if I had just made my boss understand, if I just knew a way to
convince others how much awesome I am, etc.

And let's not forget about yesterday's article about Honda, thriving in
dificult times, but run by engineers. The truth is that we (human beings, not
specifically the HN crowd) like to hear about what we like. I see so many
indications of the little club that exists in here (reddit is even worse
nowadays), but that's not the point, because this is normal. The point is that
all this shit doesn't matter, but we like to pretend that it does because we
get to be happy for five minutes.

Managers have this disease too, with their self-help books and curiosity to
know who moved their cheese. These things are like happiness injections,
making us feel good until the next shine stuff appear.

BTW, I do believe typing and marketing is important, but in no way they're
even near the top qualities I am looking for in a programmer.

~~~
vlad
Great post.

------
msie
The article should be called "We Are Bloggers First, Programmers Second."

------
jcl
On a barely related note, this article reminded me of how much I enjoyed
Typing of the Dead. Unfortunately, the only legitimate place I've been able to
find it is on GameTap, which requires a subscription fee. Does anyone know of
similar games? It seems there is a market opportunity for genuinely
entertaining typing games for a post-elementary-school audience.

------
light3
Wow I never knew the proper definition for WPM - when I was young I started
learning to type in VI and I practiced speed which as I recall was around 60
words / min, but trying out my typing speed on that webpage I find my speed
under proper WPM definition I'm doing 110 WPM awesome :))

Typing fast and efficiently has many benefits - you save energy, you do things
faster. Although in the case of programming typing speed is only one factor
which determine how well you program. One could argue that learning more
powerful languages or the ability to problem solve are equally if not more
important.

------
tsally
As a rebuttal, I present this scientific graph:
<http://i37.tinypic.com/33e086s.png>

------
gills
Or...don't write bloated code. Same result. There's a point in life where you
just need to understand your weaknesses but not obsess over them, and focus on
your strengths instead.

------
mxh
As a hacker friend put it: "Programmers are paid to think, and occasionally
type". Not the other way 'round.

------
aneesh
Typing is almost never the rate-limiting step when programming.

------
jeroen
If I had to, I could use a mouse with my foot on an onscreen keyboard. It
would require a bit more patience and time, but it would in no way hinder my
ability to create software.

~~~
hugh
Y'know, that gives me an idea. Why not a foot-controlled mouse? That way I'd
never have to take my hands off the keyboard.

(quick googling)

Oh, they already exist. Has anyone ever used one? They're three hundred bucks,
so I'm not gonna buy one just to try it out and see if I like it.

~~~
stcredzero
A SmartNav head mouse can be had for less. I've bought two for my girlfriend
who has RSI. Yes, they work quite well, but you'll need practice, and a way to
hit a mouse button without using your feet. (Hard to move your feet without
using your head.) There are programs that will emulate a mouse button for you.

------
Allocator2008
I don't even know where to begin with this. Typing is a way to program, but
not the only way. One can get on ebay or the like and find these old
engineering sheets of paper where people at IBM would hand write FORTRAN code,
then take the paper over to the department that would make punch cards out of
the programming sheets. No typing involved. It is like saying to fly you need
to know how to handle jet engines, rather than the principles of lift, keeping
the nose level, etc. Whether the plane uses a jet engine or not is incidental
to good piloting skills. Similarly, whether one uses a keyboard to create a
program or the IBM engineering sheets to handwrite out a program is incidental
to good programming skills. Typing hasn't a thing to do with programming.

