
We Are Typists First, Programmers Second (2008) - RyanShook
https://blog.codinghorror.com/we-are-typists-first-programmers-second/
======
collyw
I find this argument bullshit. After 15 years, the best code I write is the
stuff I think about the most and spend the least time typing. If I have
anything vaguely complex and algorithmic, I sit with a pen and paper and draw
diagrams, or write pesudocode until I have worked out what I am going to do.
When I was far less experienced I liked typing a lot and enjoyed programming
Java. Now I see that every extra line of code is an extra place that bugs
could hide and I prefer more expressive languages and more functional /
declarative styles of code. I like writing SQL, despite being a crappy
language in terms of syntax - I prefer the way I have to think about the
problem.

(I did try learning Dorvak for RSI reasons a few years back, but I spent too
much effort thinking about the typing that relatively easy coding became
difficult. So maybe I proved his point to a degree).

~~~
vikiomega9
The argument made here isn't to type out more lines of code but to match the
speed of your typing to your mental model such that the slow typing does not
get in the way

~~~
collyw
That's why I use a pen and paper. A diagram is far faster and more expressive
than most code.

~~~
NiveaGeForce
Or a pen-capable tablet or 2-in-1.

------
mquander
I got an interesting perspective on this in the past week. I type at 110 WPM
on a normal QWERTY keyboard, and I use keystrokes to drive my editor and
window manager (but not my browser.) I just switched to an ErgoDox configured
as mostly QWERTY but ortholinear, split, and with some of the modifier keys
and symbols moved around. The first day I was at 16 WPM, now I'm at about 35.
(Probably a little slower in syntax-heavy parts.)

The slowdown results in a mindblowingly different working experience. There is
so much time in between me designing the program in my head and the program
being in my editor. It drastically reduces the degree of interactivity between
me and the programming environment, where I can play around with different
shapes for the program. Insubstantially small improvements are no longer
insubstantially small; I resist making them. I resist writing mini-
documentation like detailed commit messages and docstrings. Way less work gets
done in a day. I frankly feel totally incompetent.

If there was any doubt in my mind that being good at keyboarding is a
worthwhile skill for a programmer, it's certainly gone now.

~~~
mark-r
I've always insisted on using standard un-ergonomic keyboards all my life, so
I can always be an effective typist no matter what computer I'm using.

~~~
mquander
I feel the same, but I'm hoping that my heavy laptop use plus a lifetime-so-
far of training will allow me to maintain my typing skills on a standard form
factor even if I learn something slightly esoteric for my desk.

------
potta_coffee
I spend a lot more time thinking than I do typing. The amount of typing is
especially reduced when debugging rather than writing new code. In fact, quite
a lot of my code starts on paper. When I'm ready to type the code out, it's
already "written", I just have to transcribe it.

~~~
topher200
It's like he's speaking right to you!

 _Maybe you 're not convinced that typing is a core programming discipline. I
don't blame you, although I do reserve the right to wonder how you manage to
program without using your keyboard._

 _Instead of answering directly, let me share one of my (many) personal
foibles with you. At least four times a day, I walk into a room having no idea
why I entered that room. I mean no idea whatsoever. It 's as if I have somehow
been teleported into that room by an alien civilization. Sadly, the truth is
much less thrilling. Here's what happened: in the brief time it took for me to
get up and move from point A to point B, I have totally forgetten whatever it
was that motivated me to get up at all. Oh sure, I'll rack my brain for a bit,
trying to remember what I needed to do in that room. Sometimes I remember,
sometimes I don't. In the end, I usually end up making multiple trips back and
forth, remembering something else I should have done while I was in that room
after I've already left it._

 _It 's all quite sad. Hopefully your brain has a more efficient task stack
than mine. But I don't fault my brain – I fault my body. It can't keep up. If
I had arrived faster, I wouldn't have had time to forget._

 _What I 'm trying to say is this: speed matters. When you're a fast,
efficient typist, you spend less time between thinking that thought and
expressing it in code. Which means, if you're me at least, that you might
actually get some of your ideas committed to screen before you completely lose
your train of thought. Again._

~~~
kraftman
Kind of off topic, but it's not the speed it takes to move between rooms that
is the issue, it's the fact they are different rooms. It appears the brain
ties thoughts to context and when the context changes we have a weaker tie to
the thought: [https://www.scientificamerican.com/article/why-walking-
throu...](https://www.scientificamerican.com/article/why-walking-through-
doorway-makes-you-forget/)

------
smcameron
To me, being a programmer without being a touch typist is like being a bicycle
messenger without knowing how to ride a bike. So, you push the bike as you run
along beside it. Sure, you'll get to your destination, but slower, and you'll
look ridiculous. I once knew a programmer who couldn't touch type, and he
really needed all the brainpower at his disposal to do his job, but he wasted
10 percent of it looking back and forth between the keyboard and screen
hunting and pecking. Trying to help him out was an exercise in patience.
Jesus, learn to touch type, you can rail against it all you like but if you
sit down and spend the two or three weeks to do it, you'll be thanking
yourself for the rest of your career for having done it. Refusing to do it
just plain stupid.

~~~
btschaegg
I whole-heartedly agree with you. In fact, I have the impression that there's
a rather interesting variation of the Dunning-Kruger effect in play on this
issue. Usually, mentioning DK implies a derogatory connotation (akin "dumb
people don't notice that they're dumb"), but in this case, many actually very
bright people can't imagine the upsides of touch typing because they never
experienced them themselves. There also seems to be a similar discussion
whenever Vim and Emacs bindings come up. Yes, you don't technically need them,
but they sure help you manipulating code at a pace where you're not constantly
loosing your train of thought because of some small change you're throwing in.

I have no problem with people who decide that the learning curve of both is
not for them. The thing I personally take issue with is when someone then
tries to explain to me that those upsides are effectively _nil_ , because
"you're not really typing that much all day anyway". I call BS on that. If
your code is non-trivial and you're trying to make it readable, you _are_
going to iterate on it a couple of times. No amount of scribbling and diagrams
is going to prevent that - even with the perfect data layout, the actual logic
_will_ need tweaking until it's suitable. So, the only argument you're then
making from my perspective is that you actually don't care about readability,
at which point there's a much bigger elephant in the room than your typing
style.

------
mintplant
> It's very difficult for me to take another programmer seriously when I see
> them using the hunt and peck typing techniques. Like Steve, I've seen this
> far too often.

> But all other things being equal – and they never are – the touch typist
> will have an advantage.

Will they? I type at over 100 WPM compared to the author's 80, and I never
bothered with learning to use the home row, etc, nor did I dedicate any time
to the practice of typing in and of itself.

> The best way to become a [better] typist is through typing, and lots of it.

This I can get behind, at least. And if you have kids, start them with it
early on in life.

~~~
anoonmoose
Do you look at the keyboard or are you just a self-taught touch typist?

------
RcouF1uZ4gsC
Has how fast you could actually type code been the bottleneck on your
development velocity? Have you ever thought (other than for school
assignments), "If I could only type faster, this project would have been done
faster"?

You should be able to type well enough that you don't break your concentration
to hunt and peck. Other than that, you are optimizing the wrong thing.

~~~
mclehman
Agreed, breaking your concentration to type is bad and rather easily
mitigated. However, the time required to break the flow of whatever you happen
to be doing is very small.

Imagine you could type instantly. As soon as you thought of what you wanted to
type, it was there. Moving a block of code or an expression into a REPL and
evaluating it would be immediate. The first bit of boilerplate for a new
project wouldn't get in the way of thinking about what you're actually working
on. None of your time would be spent on the mechanics of transcribing.

Is it a minor optimization? Definitely, especially given the real limits on
human tying speed, but anything that keeps you in the zone is going to add up
over time. In my opinion, it's not that typing is a bottleneck, it's that
breaking concentration for anything is one of several bottlenecks.

Edited to add: As I think about it, I may have failed to draw a clear
distinction between "breaking concentration to type" and "breaking the flow",
and in fact went back and forth on the wording I used to refer to each.

To summarize, I feel that breaking the flow can happen anytime you have to
wait on something, be it physically typing a command or bit of code, waiting
on compilation or evaluation, or glancing up at and thinking about a
notification. Build times are largely out of your hands and people will always
interrupt you (in person if you mute notifications), but physical typing
delays are solely in your own hands and eliminating them can help keep you in
the productive flow.

------
princekolt
Counterargument: I've been coding for around 10 years, and I've never ever had
anything remotely close to RSIs or tendinitis. I don't type extremely fast,
but it doesn't affect my productivity either.

Every single time I've attempted to learn touch typing I get pain in my wrists
before the first 10 minutes. Why would I do that to myself?

~~~
tomsthumb
Without knowing anything else, it would be unlikely to find out that you have
poor touch-typing posture (e.g., you break the wrist upwards/type with the
wrist in extension), or that you have very weak forearms and wrists, and
possibly slouch a lot in the shoulders. Not touch typing likely reduces the
impact of these liabilities, assuming you have them, by putting breaks into
the mechanical demands of typing.

You also might just have an absolutely terrible keyboard. Some people pound on
keys when they don't need to. There are a lot of reasons typing can cause
finger, wrist, and forearm pain.

------
halotrope
I used to think too it does not matter. I was typing reasonably fast. After
putting in the effort and learning to properly touch-type I cannot recommend
it enough. It feels very close to controlling the computer with your mind.
IMHO this is not about typing speed it is about focus and unity with your
tools.

~~~
RyanShook
After realizing how much mental energy I'm using looking down at the keyboard
I've set the goal of becoming proficient in touch typing. Currently,
[https://www.ratatype.com/](https://www.ratatype.com/) has been very helpful.

------
whack
It's ironic that he condescends towards hunt-and-peck typing, while
simultaneously, the wiki he links to makes it clear that hunt-and-peck typists
are just as proficient as touch-typists.

[https://en.wikipedia.org/wiki/Typing#Hunt_and_peck](https://en.wikipedia.org/wiki/Typing#Hunt_and_peck)

 _One study examining 30 subjects, of varying different styles and expertise,
has found minimal difference in typing speed between touch typists and self-
taught hybrid typists.[3] According to the study, "The number of fingers does
not determine typing speed... People using self-taught typing strategies were
found to be as fast as trained typists... instead of the number of fingers,
there are other factors that predict typing speed... fast typists... keep
their hands fixed on one position, instead of moving them over the keyboard,
and more consistently use the same finger to type a certain letter." To quote
doctoral candidate Anna Feit: "We were surprised to observe that people who
took a typing course, performed at similar average speed and accuracy, as
those that taught typing to themselves and only used 6 fingers on average"_

I personally dislocated my wrist during the same time that I was supposed to
learn touch-typing in school. Hence, I never got around to learning it.
However, as someone who spent a lot of time in online discussions, I developed
my own typing style that was just as efficient. I only use ~4 fingers, and
they move all over the place. But my mind has also memorized the keyboard
layout perfectly, and I can type all this without ever looking down at the
keyboard. According to most online typing tests, I can achieve ~70 WPM this
way, which puts me in the same category as a "professional typist". From my
casual observation of others, I also seem to make much fewer typing errors as
compared to other touch typists, and have never suffered from carpel tunnel or
other symptoms, since my hands movements are a lot more dynamic.

Would it be great if I could type at 85 WPM instead of 70? Sure. But I
honestly don't think my mind can even work at those speeds, so I'm not sure
what benefits I would be getting out of this. Besides, I'd rather spend all
that time doing something I enjoy and am passionate about, instead of training
myself to crank up my typing speed further.

~~~
mgrouchy
Im in a similar boat. I am not a touch typist and I can do around ~70-80 WPM,
its never been a problem for me (been coding professionally for like 13 years
and been coding as a hobbiest since I was 10 years old).

At this point I'm not sure what benefit I would get as I spend far less time
typing now.

That being said, I almost want to learn just so I don't have to have this
conversation anymore when this post inevitably pops up every couple of years.

------
mnm1
I couldn't disagree more. I used to touch type very fast like this article
suggests. Now I have RSI and I'm constantly looking for techniques to __type
slower __. I haven 't quite resorted to pecking with two fingers yet, but that
is indeed on the list of options and where I'm headed if I can't find another
solution. Typing hurts and it has ruined my health. All to get some code typed
in just a fraction of a second faster. Now I think more before doing any type
of action on the computer (typing is not the only culprit as you can imagine).
I've tried using voice but because of my accent, it's not accurate enough.

If I could go back to my teenage self, I would not bother to learn typing and
I would try to practice more ergonomic computing and use more ergonomic tools.
Unfortunately, ergonomic keyboards and pointing devices are typically
extremely expensive and not at all widespread. Maybe if they were, I could
agree a little with Jeff here, but even then ... ruining one's health is
definitely not worth it. Perhaps Jeff and others like him should stop judging
others based on a skill that's completely irrelevant to being a good
developer. I've worked with developers who didn't type at all (they could use
voice as they spoke native English).

------
jiveturkey
> _Don 't just type random gibberish as fast as you can on the screen, unless
> you're a Perl programmer._

LOL

~~~
oblib
That got me lol too

------
anotherevan
I learnt to touch type in the mid-80s on a manual typewriter in secondary
school. I knew I was going to work with computers and figured touch typing
would be a worthwhile skill. I was the only boy in the class and copped shit
from my peers for taking the subject. To this day I still think it is the best
thing I learnt at school.

Sadly, they no longer teach typing, at least at my kids' school. I would have
signed them up in a heartbeat.

§

I don't think speed is that important. You don't have to be really fast, just
fast enough for it not to get in the way of your thinking.

------
twodave
I think this line of thought has basic merit but can be dangerous. Often for
me, if I'm programming fast enough that I have to struggle to keep it all "in
my head", it simply means I haven't internalized the problem enough to really
"own" it. That leads to bugs and sloppy code.

Instead, I tend to spend as long as it takes mapping out a problem in my mind
and just mulling it over. I find that for bigger problems exercise (jogging)
and other activities like sleeping and showering to be healthy for this sort
of thing. It's better if I'm not staring at a bunch of crap on the screen.
I'll cycle between thought sessions and research until I've got an answer, but
often the code I have written during that time is minimal (just enough to test
an idea to see if some part of my model would work as I hoped).

At the end of all that, I'll just puke out what's already in my head, but it's
hardly ever so much code that typing speed is all that relevant. Sure, maybe I
save an hour here or there because I'm an excellent typist, but I caution that
if you're typing your knuckles off because you don't want to lose a train of
thought that you may be moving too quickly.

Obviously not everyone has the liberty to chill and seem unproductive until a
moment of inspiration comes, but maybe that too is an indicator of a deeper
problem ;)

------
callahanrts
I've never experienced this with typing, but I can definitely see how the
amount of time it takes to complete a task can cause even more delay. For
example, long page refresh times in development can take so long that I switch
thoughts entirely and end up on hacker news. Using docker-sync with docker for
mac made my page refreshes much faster and has had a very positive impact on
my focus and productivity.

------
bootsz
While I agree, I wonder how relevant this still is today. I could see the
value in stressing this point back when computers weren't an integral part of
daily life and a programmer might only ever use a keyboard when doing actual
programming. But for most of us who grew up with PCs in our homes, using them
daily for gaming, instant messaging, web surfing, etc... It makes me wonder
how anyone could not naturally develop some level of decent typing speed on
their own after 10+ years. Personally I can't say I've ever witnessed another
software dev actually "hunt and peck" at a keyboard on the job. I suppose
there's always room for improvement though and my own typing certainly isn't
100% perfect. I guess I just don't see typing as being a major hurdle for the
newest generation of programmers.

~~~
lanius
I think it's possible that keyboard usage is decreasing at this point. My
nephew's elementary school stopped offering typing classes, however I'm amazed
by how quickly he can type on a touchscreen!

------
nategri
This is precisely as dumb as saying that efficient use of a chalkboard is
important to being a great physicist.

------
tzakrajs
And before being either of those, we are premature optimizers.

------
jarek-foksa
Check out [https://type-fu.com](https://type-fu.com) for a programmer-oriented
typing tutor. It has a built-in keyboard layout editor with presets for
Colemak and Dvorak (and many others). You can also paste your own code
snippets for practice.

------
oblib
Yep, I agree, we are all typist, and this is a fun read.

The line about perl made me laugh out loud because I spent about 3 days this
past week trying to figure out how to write what turned out to be one simple
line of code and that's sometimes why it takes me so long.

I hunted and pecked when I first started, but I had taken a typing class in
the 7th grade and remembered enough to put it to practice. I'm still kind of
lazy though and will find myself copying and pasting and editing a line of
code when it'd be faster to just type it :D

------
justadudeama
Something I really disagree with is suggesting to use Dvorak or Colemak
keyboard for typing speed improvements. From my experience with Dvorak, and
what I think most research shows, changing doesn't make you any faster.

If you have no idea how to touch-type and need to start all over, then maybe
it would be ok to start out with a new keyboard just for something fresh, but
unless you are trying to prevent RSI, I would argue that Dvorak and other
keyboard layouts are pretty useless.

------
mikeash
I’m sure that being good at typing is helpful. But “first”? No way. Just ask
yourself who you’d rather work with: an awesome typist who can’t program for
shit, or a 5 WPM hunt-and-peck typist who slowly produces reliable, fast, and
well designed code?

It’s obviously the second, because the actual programming is obviously more
important.

------
mbauman
I'd like to add 'Epistory' to the list of programs for practicing typing at
the end. I picked it up in a Humble Bundle and was surprised by how much fun
it was. Pretty, too.

------
yzmtf2008
I think if your typing speed is really getting in the way of your development,
you would _know_ it, rather than need to read a blog post to find that out.

------
laythea
yes but people pick up typing skills "on the way". I suppose you could
_refine_ those skills, but then it is like anything in like. Diminishing
returns. So this is actually counter efficient.

------
okolop
I use voice input

------
NiveaGeForce
This mentality is what led to the sorry state of this profession.

~~~
ztbrown
hot take alert

