August 15, 2022

How I Learned Dvorak in 3 Weeks

...and built aoeu: a TUI Dvorak trainer for developers.

#The Case for Dvorak

The Dvorak Simplified Keyboard is an ergonomic alternative to the traditional QWERTY layout. Despite the similar spelling, it's unrelated to composer Antonín Dvořák.

Over a winter break during college, I set a personal challenge: become proficient in a new keyboard layout within three weeks—just in time for the spring semester. While layouts like Colemak are closer to QWERTY and arguably easier to learn, I chose Dvorak. Why?

Dvorak and QWERTY share only four key positions: ~, \\, a, and m. While this makes the transition more drastic, it also minimizes cognitive interference between the two layouts.

My primary motivation was ergonomics—not speed. Having previously dealt with minor RSI symptoms, I wanted a layout that emphasized finger travel efficiency. Based on multiple studies and personal research, Dvorak consistently ranked highly in this regard without being completely obscure.

After watching Penguify's "How I went from 10 to 130 WPM in 3 months" (focused on Colemak), I noticed that many users reported temporary loss of QWERTY proficiency due to layout similarity. Dvorak, being dramatically different, avoids this overlap. During my initial transition, I retained my QWERTY speed despite barely using it.

#My Learning Process

1. Fundamentals with TypingClub

I began with TypingClub to internalize the Dvorak key positions. I was meticulous about finger placement and never looked at my hands. I repeated lessons until I could slowly touch-type without visual aids.

2. Accuracy First with Monkeytype

Next, I practiced short quotes on Monkeytype, prioritizing over 96% accuracy over speed. At first, typing was mentally exhausting; even hitting 20 WPM felt like a milestone. But once I reached ~30 WPM, I began incorporating freeform writing.

3. Writing vs Reading

Typing from memory (i.e., writing) was noticeably harder than typing from a screen. After two challenging weeks, I averaged 60 WPM and shifted focus to developer-oriented content.

4. Typing Code with Speedtyper

I switched to speedtyper.dev, which provides programming-specific practice (like Typeracer, but with code snippets). Typing syntax-heavy strings required an entirely different muscle memory, but it accelerated my comfort with the layout.

5. Relearning Vim

The final hurdle was retraining in Vim. Although remapping keys is common, I opted to re-learn the default bindings. I ran through vimtutor dozens of times until I regained proficiency. By the time classes resumed, I was comfortably using Dvorak for both writing and development tasks.

#Key Takeaways

  • Take frequent breaks. Like physical training, motor memory is built during rest—not just practice. Don't expect progress within a single session.
  • Prioritize accuracy. Speed comes later. Hitting backspace isn't efficient or ergonomic.
  • Know when to move on. Don't grind early fundamentals past the point of diminishing returns. Advance once you've reached consistent competency.
  • Enjoy the process. This is a long-term investment in comfort and efficiency—frustration is normal, but burnout isn't productive.

#Aoeu: Typing for Developers

To aid my learning, I built aoeu, a terminal-based typing trainer for programmers. Unlike most typing platforms that emphasize quotes or prose, aoeu focuses on code-relevant content—shell commands, language keywords, syntax symbols, and more.

Each lesson targets a narrow scope (e.g., brackets, if/else blocks, or Bash pipelines), allowing focused muscle memory development. The name "aoeu" comes from the Dvorak home row.

Technical Details

The original version was written in Python using the curses library, but it suffered from terminal resizing issues. I later rewrote it in Go, using tui-go for a more robust UI. The application enforces correctness by requiring users to type each word accurately before moving on.