Typing Instructors for coding

May 25, 2015

I’ve been thinking a lot about typing lately. I skipped typing class in high school because… well mostly because it was in between me and programming class, and I wanted to program, damn it! The principle of the school was convinced: I’d had a 286 or better since I was in elementary school, that seemed legit. I could type fast enough, wasn’t looking that often, and I’d get enough practice while coding anyway, right? So I skipped two semesters of pre-reqs and jumped into the deep end.

I was half-right. Typing didn’t keep me from graduating with great grades, or getting great jobs. But 15 years later, I was at that same plateau. I could mostly touch-type in email and chat, but when programming, sometimes typos meant I couldn’t quite get into flow. I’d hit hiccups on number signs, symbols, and more involved vim commands (Is anyone out there touch-typing commands like this?

:10,$s/\.oldClass/.newClass/gc

Whatever tools you use… master them.

My intern host at Google told me once “whatever tools you use… master them.” This conversation was about text editors, but the keyboard is an even more basic tool. Long story short, I developed a new-found appreciation for the fundamentals.

So I went looking for the ideal programming typing instructor. This is subjective, obviously, but my ideal would be fun, relaxing, self-paced, effective at teaching me, and it would weight symbols like these more heavily:

< > [ ] { } . ; $ ^ && || # @ = + - " '

Here’s what I came up with, roughly in order of how much I’ve used them and how much I can vouch for them:

Z-Type: The uber-relaxing typing game

http://phoboslab.org/ztype/

This fits most of the bill. It’s not self-paced, and it doesn’t do symbols, but it’s so fun and relaxing, I actually wanted to play. When’s the last time you really enjoyed a typing instructor? If you could use some brushing up on your basics, come back here from time to time.

GNU Typist: Console-based typing instructor

macbook-console> brew install gtypist

GTypist works right from the console on any linux system, and has several courses to choose from, all of which feel super logical. I guess you’d expect all that from the people at GNU! You can choose from a simply QWERTY overview, to detailed courses (symbols!) and even DVORAK and international options.

If you’re early on, go for the “Q” courses (Quick Qwerty). If you’re more advanced, skip straight to “T” courses (Touch Typing). They all show the keys they add in, so you can jump right to the symbols you want to practice.

Keybr: Online typing instructor with an AI twist

http://www.keybr.com/#!game

Keybr just launched on ProductHunt last week. What I like about Keybr is that it starts simple at your own pace with just the homerow. Then it never ends. You just start typing, and the “AI” notices how well you’re doing. If you’re speeding along typo-free, it’ll add a new key to the mix. If you need some work, it gives you the time to master what you’ve got before moving on.

You can also log in to save your progress and pick up where you left off. No need to install anything, just a browser, and you’ll pick up right where you left off.

Typing.io

https://typing.io/

Probably the least fun or relaxing of the group. But the most realistic for programming. You select snippets of code (real open source code!) in your choice of languages, and that’s what you type.

This is the “jump into the deep end” option – you get thrown in with all possible characters. But you do type real code, without the usual pauses to stop and think interrupting you. So if you just want practice real life coding (complete with semi-colons, brackets, and terrible variable names) then this is for you. You can upload your own code samples as well, in the paid version.

Some things I wish existed (maybe they do)!

  • * A typing instructor for vim. Maybe a “Guitar Hero” style interface where hjkl movement keys are falling down the screen, along with things like w, ^, d3d, /searches, and :commands.
  • * A more relaxing typing instructor that never ends. Z-Type above is great, but it’s set up like an arcade game. It starts at boring, gradually gets harder until pushes you to your limit, then you fail, then you start back at “boring”. I’d love something that combines elements of Z-Type and Keybr to give me something I’d continuously love to play. Maybe elements of calm.com for epic relaxation.
  • * Something that could tell me if I’m using the right fingers, not just hitting the right keys (this would need to account for how * the typical typing instruction is broken for the left hand). Not sure this is possible with software alone. Webcam? Special gloves? This one’s a long-shot.
  • * “Quantified self” for typing. I’d love to track, over time, how much I’m fixing my bad habits during the rest of the day, not just while I’m in a typing instructor. This could be a background task running on my machine that checks for WPM or typos. Ideally it would combine with tracking which fingers I use for which keys.