Dvorak: The Betamax Keyboard

I’ve been a Dvorak typist for about five months. It took me three tries to really stick it out through the learning phase, because let me tell you—as a touch typist, any learning curve over one week sucks (and you’re probably not learning Dvorak if you’re a hunt-and-peck-er). There are some things I wish I knew before I switched, so I’m feeding them to Google for others to find. My thoughts reflect only my experience, YMMV, and all that. For me, the short answer is that I’ll probably switch back to QWERTYUpdate: I never actually did, and I’m considering writing a recant to this post.  See the bottom of the post…

How Bad is the Learning Curve?

I suspect this really varies from person to person—I’ve read “Allow for about 1 hour of training for each WPM to regain your old QWERTY speed”. I don’t know my old QWERTY speed, but I was proficient, so let’s say it was 70 WPM. If I “trained” all day, that’s 70 hours / 8 working hours = 8.75 days, almost two weeks. I really type only about a third of the day, so that makes it 8.75×3 = 26.25 days, about five weeks. In reality, it took me about two months to type without thinking. Maybe I was faster at QWERTY than I thought, or maybe I’m a slow learner, but it took me longer to transition than I’d expected.

That may be because I type largely from muscle memory. Instead of mentally spelling out each word, then finding the corresponding keys, I rely on automatic keystroke patterns for common words (I suspect most touch-typists do this). This is especially true for keywords in programming languages: table, div, span; class, public, void, String; select, from, where, join. When I started learing Dvorak, my muscle memory for different languages had to be re-learned. Maybe this made it harder for me to feel comfortable with Dvorak, to really say “ok, I’ve learned it.” HTML was the worst, for some reason. I was re-learning SQL at the time, and didn’t have much SQL muscle memory, so I picked it up much faster.

Living with Dvorak

So now that I’ve arrived, it’s keyboard bliss, right? Almost. I do like it better, and can definitely feel the difference, but there are some real problems with it, which basically boil down to incompatibility. I hate to say it, but like Betamax vs. VHS, the inferior solution wins, by sheer ubiquity.

Keyboard Shortcuts

Of all the issues, this hit me hardest, being something of a power-user. On Windows, a bunch of useful commands are conventionally tied to the same keyboard shortcuts, generally with the Ctrl key. Ctrl+X is cut (like scissors). C is Copy. V is paste (the v points down – “put it down here”). Z is undo (I don’t know why that makes perfect sense to me). A is select All. S is Save. B is Bold text. On QWERTY, those are all left-hand, contiguous keys – mousing with my right hand, I could edit really fast.

All this changed with Dvorak. The left-handed Ctrl shortcuts are now scattered across the board. I don’t want to re-bind them in every app I use, and in some apps, I couldn’t if I wanted to. I got around this by buying a fancy mouse (a Logitech MX400) with extra buttons, and tied them to Copy and Paste. It’s not the same, but it solves 70 or 80% of the problem.

Using Other Computers

This one is bigger than I’d thought. I know, you’re thinking “How often does he use someone else’s computer?” But QWERTY computers are everywhere, and they’re spreading. Most kiosks and embedded devices use QWERTY (the rest use alphabetical order). SmartPhones use QWERTY. The TitleSleuths at Borders bookstores use it. Even my Prius uses it. Lots of devices offer keyboards to talk to them, and they’re not supporting Dvorak. The range of devices that I’ve become incompatible with is only growing.

Other People Using My Computer

This is a minor point. Everytime someone wants to use my computer (pair programming, or whatever), I have to switch it to QWERTY, for each application they use…it’s not global (is this any better on Macs or *nix?). So I launch an app and give them the keys, but they’re only OK until they launch something else. And some apps you need to tell twice, most notably the command line. You tell it “Dvorak”, it says QWERTY. “Dvorak”. QWERTY. “No, dammit, Dvorak!

You can get around this with the excellent Dvorak Assistant, a little System tray tool, whose icon is either a Q or a D key. Instead of mousing around with the Win XP Language Toolbar, you can switch layouts via Ctrl+Shift+F12—much better than WinXP’s default, Ctrl+Left Alt. I used to mash that combo all the time, and sure enough, it’d pop me right into QWERTY. Even better, the Dvorak Assistant affects all apps at once.

Switch back to QWERTY?

Like I said earlier, I’ll probably switch. My slightly-better speed comes at the cost of compatibility with the rest of the world. My Dvorak speed will continue to improve some, and eventually plateau, but the number of QWERTY keyboards around me will only increase. This makes Dvorak a steadily growing liability.

It’ll take a bit to re-train my muscle memory, but I believe it’ll be much faster than learning Dvorak. Back on QWERTY, I’ll be able to use any keyboard that crosses my path, and I’ll get all those keyboard shortcuts back. I’ll have to make those extra mouse buttons do something else.


2007-02-23 So I still haven’t switched back to QWERTY. I’ve tried a few times, and it doesn’t seem like it’ll be too hard to do, but I’m lazy, and busy doing other things. On the other hand, if it’s easy enough to switch to QWERTY, I might opt instead to stay on Dvorak, and just periodically practice QWERTY. That way, I’ll have the best of both worlds.

Also, someone found this article by searching for Vista + Dvorak. I’ll try to test the Dvorak Assistant on Vista, and will let everyone know how it goes, unless someone posts with a more specific question.

UPDATE (again)

2009-01-24 Somewhere in the two years since I last updated this, I decided to stay on Dvorak.  Reading over my reasons for switching back to QWERTY, they boil down to three: crappy Windows support, other people and computers, and hot-keys.

Crappy Windows support is 100% solved by the still-excellent Dvorak Assistant — I carry a copy on my thumbdrive, and it’s on every machine I regularly use.  If I could pay for it, I would.  It works flawlessly on Vista.

Other people and computers is still an issue, but only a minor one.  I can comfortably hunt-and-peck QWERTY, so using any other machine (kiosk, TitleSleuth, or my Prius) is simple enough.  Even since I started pair-programming all the time at my new job, it hasn’t been a problem — the Dvorak Assistant lets me switch my machine when we’re at my desk, and I can find my way around QWERTY easily enough at other people’s machines.

Hot-keys have become less of an issue as I’ve gotten more used to life with Dvorak.  I’m used to using hot-keys where they are in Dvorak (Ctrl-S looks like Ctrl-semi-colon), because when I type them, I still think in terms of letters: “S for Save”, and for me, it’s still an S.


Trying some agility

I had an interesting conversation with a co-worker recently. We got to discussing a small project we were on back in January ’05, that basically involved creating a small dynamic questioner. You configure the interview by creating questions, and each possible answer to the question leads to either another question, or an outcome. We modelled the interview as a directed acyclic graph (I know, you already knew about DAGs — the link is for the other readers). We built a test tool that traversed the DAG, and reported all possible paths. We even (this was pretty cool) built an importer that created interviews from FreeMind mind maps…basically made FreeMind our GUI. We did all this in about 3 weeks (Java and XSL, if anyone’s wondering). We had fun, and both our management and our customers loved it. It’s loads easier to change the questions now than it would’ve been if the questions were just hard-coded, the way everyone expected it to be done. I think we even beat the estimate for that approach.

Anyway. We realized the other day that our approach for that mini-project could be called agile. On the project, we tackled as much of the problem as we could understand, just trying to make things better. Dozens of special-case rules for which question is asked when? Let’s make that generic, and configure the questions. Redundant branches in that hierarchical question tree? Let’s optimize it into a DAG. Hard to write all that XML? Let’s use FreeMind for its nodes-to-XML interface, and transform it. Hard to test all 30,000-odd paths through this mess? Automatic tester. Build a little, see a little further, build a little more.

Now, I’m on a much larger, higher-profile project: replace our hand-grown portal (pretty cheesy) with a commercial portal product. How we implement the portal product will impact a lot of future development, since a number of other teams will be building for the portal, and learning from or building on our work. [This is what I’m hearing, anyway.] No one on the project has any experience with this portal product (horray!). After spinning my wheels a bit, I realized the only way we could get anything done was to start building, and find our way as we go. We need experience with this tool, we need scabs on our knees from falling down with it. So our approach this time will be more agile — more intentionally agile.

This makes my project manager a tad nervous, and with good reason, I think — agile isn’t what you’d call popular around the shop. Not that it’s been proven as a bad idea, it’s just that (I suspect) all these methods that emphasize coding and doing things without lots of up-front planning sound completely irresponsible to upper management. I think if I talked to some IT execs and said I had no concrete plan for implementing this portal product, they’d respond like my mom did when I said I had no concrete plan for getting through college.

But all that aside, we’re doing it anyway. It seems to me like the only real solution. I was encouraged when my manager (an ex-architect) said he’d be nervous if we weren’t doing it this way. What most surprised me about all this, though, was how easy it was to get everyone to agree. My PM is new to the company, my manager loves a good skunk-works project, the other developers on the project were interested — like all the stars aligned, or something. And to emphasize that effect, right after everyone agreed to it, I saw Raganwald’s post Just do it.