Is Dvorak typing appropriate for programming? [closed]

A couple years back when I was starting to feel some pain in my wrists, I decided to learn how to type on a Dvorak layout. (Side note: I found it extremely simple to learn the layout using a qwerty keyboard while looking at an image of a Dvorak keyboard at the bottom of my screen)

The only programming difference primarily was that the square brackets and curly braces swapped positions with the minus and plus buttons above them. Depending on what language you're using and how heavily you're using those keys, that can be annoying; but then again, maybe your IDE will automatically insert those where appropriate. Or, you could use a program like AutoHotkey to map another key combination to those symbols.

Here's the thing with typing in Dvorak: (IMHO) you need to go all Dvorak or all qwerty, particularly if you heavily rely on keyboard shortcuts throughout all of your computing sessions.

My situation is that I use Vim very frequently both at work and at home. At my last job, computers were shared between multiple idiots people, and I could not reasonably expect other users to know how to switch out of Dvorak. I had to "re-learn" the muscle memory for Vim commands.

It's extremely easy for me to switch back and forth on the fly between qwerty and Dvorak for simple text, but (and maybe it's just me) all my known keyboard shortcuts are muscle memory. So a :w in Vim on qwerty ends up as a S,, and a I# to comment a line ends up as C#, instead replacing the whole line with just a pound symbol. And you can just forget about hjkl to navigate in Vim - instead of pressing keys on the homerow, now you have to press the equivalent of jcvp. Oh, you want to copy-cut-paste with one hand? xcv have now moved to bi. instead, so have fun reaching all over the keyboard. New tab in Firefox? You were just typing in Dvorak, so you hit ctrl-t, but the keyboard is actually in qwerty mode, so you just ctrl-k to jump to the web search bar.

One of the other low points of Dvorak is the awkward 30-60 second explanation if a coworker needs to use your computer for a moment.

So I'm very sad to say that after about 4 years of typing primarily in Dvorak, I have to type in qwerty now because it is simply unnecessarily difficult to switch back and forth between modes and retain my muscle memory of my keyboard shortcuts.

On the other hand, there is some Vim work-around support for Dvorak, so maybe today would be a good day for me to get back on the Dvorak wagon. And I suppose if somebody were feeling particularly ambitious, he could set up an AHK script to remap normal/shifted keys from qwerty to Dvorak, but just pass through the qwerty keys when ctrl/alt were held. Seems like it would be a lot of work for very little payoff, though.

To recap:

  • Dvorak is great for RSI
  • Switching between qwerty and Dvorak is easy for typing, horrible for keyboard shortcuts and other muscle memory
  • Dvorak can be a large hassle to use at work, depending on your work environment

I sincerely hope this gives you some more direction on the decision of whether to go Dvorak.


Believe it or not the amount of special characters (such as [], {}, etc) in source code is negligible compared to normal english text.

I wrote a small program that counted the occurrences of every character in the source code of a fairly big project I'm working on (50k lines), these are the results. The language is C++.

    E = 104050
    T = 86887
    I = 62788
    A = 61746
    R = 60438
    S = 58897
    N = 56595
    O = 51640
    L = 45490
    C = 39251
    D = 33776
    U = 30971
    " = 27858
    M = 25925
    , = 25296
    P = 23742
    ( = 21407
    ) = 21391
    F = 21232
    G = 20860
    / = 19745
    H = 19717
    ; = 19226
    _ = 16207
    B = 13576
    = = 12427
    Y = 10498
    0 = 10125
    . = 9842
    K = 9241
    : = 8907
    W = 8509
    V = 7922
    { = 7648
    } = 7639
     = 6626
    % = 6507
    Q = 5896
    1 = 5752
    - = 5382
    X = 5261
    ' = 3877
    \ = 3421
    2 = 3395
    + = 3172
    & = 2702
    [ = 2597
    ] = 2586
    3 = 2174
    Z = 2141
    4 = 1657
    J = 1599
    ! = 1595
    5 = 1560
    # = 1501
    6 = 1367
    | = 1029
    8 = 967
    9 = 953
    7 = 939
    ? = 610
    ` = 367
    ~ = 59
    $ = 47
    @ = 7
    ^ = 6