Going Fast by Going Slow

People always ask about how did you learn this or work so quickly doing that? It's a tough question to answer elegantly. And it's a cop-out to vaguely say I spent my free time looking into that particular topic. It's a socially-acceptable excuse.

But no doubt that this requires time. The time spent learning comes from somewhere, since we all only have 24 hours in a day for this. In our field, there's always time you must dedicate to learning to keep up to date.

To be blunt: there's certain things you can acquire on the job - incremental learnings. But for significant advancements in your thought and tooling, you'll need to allocate a non-trival amount of time for it (hats off to you if your job can offer you that kind of personal investment).

Learning something completely foreign requires significant time to dedicate. It's going to be painfully slow in comparison to what you're familiar with. Learning vim or emacs for the first time will be extremely painful if you haven't tried those editors before. It'll feel like a child trying to walk for the first time. It's going to feel terribly unproductive. And that's OK. There's a valley of learning you need to overcome first before you can regain or surpass your previous productivity.

While I personally believe that emacs and vim improve editing of text for specific use cases (and not generally improved editing). It's mostly a net-loss for just text editing. But it can benefit beyond just those editors.

For example, vim and emacs keybindings are ported to other systems beyond editing source code. There's vim browser extensions that add vim-like navigation to your browser. There's XVim for vim keybindings in Xcode. OS X comes with some emacs keybindings for all native text editing controls (including Xcode).

But this applies to more than just emacs and vim. What about Prolog, Clojure, and Haskell? They all provide different ways of viewing the world.

From the smallest skills to largest theories, they require investment:

  • Typing faster
  • Learning hotkeys / shortcuts
  • Functional programming
  • Distributed systems
  • Testing
  • Databases
  • Using App Code

It's not magical genius inherited ability. Just lots of time. And learning a bit about various topics adds up. Because going faster requires going slow first.