Hacker News new | ask | show | jobs
by jkscm 4340 days ago
Switching to FP is a bit like switching to Dvorak: the cost of switching are still to high to justify the effort.
3 comments

I went into FP from the perspective of a Python/Javascript/Groovy zealot, considered FP to be a silly academic thing with no real world applications.

Took me about a week to be productive in Scala in a functional style. Haskell is a little more complex, but I found that throwing myself in the deep end, while frustrating, was not overly difficult.

The cost of switching to FP only seems high because people don't want to even bother trying. Once you've gotten over the initial bump, FP is (in my opinion) substantially easier to wrote code in.

The answer is obviously to teach Dvorak and FP from the beginning so you don't have to switch.
Except that Dvorak has been repeatedly proven as an inferior solution to qwerty, especially for programmers (and it's also pretty bad for carpal tunnel syndrome).
[citation needed]. I have a hard time believing that a layout which cuts the travel distance of your fingertips in half is worse for carpal tunnel.

Number of characters in your post: 139

Number of characters on Dvorak home row: 83

Number of characters on QWERTY home row: 41

A solid 1/3d of those are 'a', the homerow letter they have in common. Also, my original motivation in learning Dvorak was to stop myself from touch-typing (I repeatedly tried and failed on QWERTY). It was quite a success in that regard.

Incidentally, I do agree with the earlier post saying that it wasn't worth it. But I also strongly believe that it was an improvement (there's a reason why I don't switch back), just not an improvement large enough to justify the effort (which was much greater than expected).

Dvorak wasn't designed for programming, which includes a lot of non-alphabetical symbols.

Wikipedia says:

"The carefully controlled study failed to show any benefit to the Dvorak keyboard layout in typing or training speed"

http://en.wikipedia.org/wiki/Dvorak_Simplified_Keyboard

Note that this is for English, which means Dvorak fails to deliver even for what it was designed for.

As I mentioned above, Dvorak's performance and strain on your hand is even worse when you are doing something else than typing English (programming, typing another language, writing spreadsheets, etc...).

It's ridiculous to claim that Simplified Dvorak is bad for programming while completely ignoring Programmer's Dvorak. Of course Simplified is worse at typing symbols, which is why anyone who cares about rapidly typing symbols will use Programmer's. But who are these programmers limited by typing speed? I've certainly never met one.

I don't take issue with the tests showing that Dvorak doesn't have speed benefits. My anecdata confirms this claim at the skill level which is relevant to me: my Dvorak typing speed, which I have made no effort to improve, is roughly the same as my QWERTY typing speed, which I also made no effort to improve.

However, Dvorak dramatically (factor of 2-3) decreases the fingertip slew distance which is monotonic in the distance your tendons will have to travel in your carpal tunnels for any given piece of typing. The difference isn't remotely subtle because it's easy to feel the tendons moving in your hand if you pay attention. In practice, it's the difference between tingles and numbness after 5 pages vs 15 pages of typing. So I do take issue with your claim that Dvorak is bad for carpal tunnel.

Your original post mentioned carpal tunnel and did not mention typing speed so I think it's more than fair to ask you to elaborate specifically on your claim regarding carpal tunnel.

My typing speed with Dvorak is around the same as with QWERTY too, perhaps because I've not been using it for as many years. It took me 3 months to get up to speed (contrary to Wikipedia's claim of a year), and it's pretty easy to make the context switch between QWERTY and Dvorak - where I only make mistakes in the first few minutes of switching - and not six to eight weeks as Wikipedia suggests.

I didn't learn Dvorak to increase my typing speed - I learned because I was developing RSI in my right hand and put it down to QWERTY (and the mouse). The benefits of Dvorak are pretty clear when typing up large texts, although pain is still present after a few hours of typing. I found ergonomic keyboards to be a better solution than changing keyboard layout for dealing with RSI though, and I typically use QWERTY these days because configuring application's keybindings for dvorak is too awkward, and the gains are too little.

I've been considering learning Workman or QGMLWY, as their supposed benefits are even greater than Dvorak, and they have CUA-shortcut friendly layouts.

Programmer's Dvorak? This is the first time it's come up in the discussion, we were talking about the regular Dvorak keyboard.

There's hardly any information about Programmer's Dvorak, by the way, not even a Wikipedia page.

Have you ever tried to use the most common shortcuts on Dvorak (Ctrl-C and Ctrl-V)? You will have to use 2 hands, or stretch your (right sided) mouse hand. This killed it for me.
Yeah, it's really awkward to configure every application's keybindings to be dvorak-friendly (if possible). Every application inventing its own keybinding solution is clearly a mis-design of our operating systems, which should have some common daemon/configuration for them.

I live mostly in emacs, so it tends not to be an issue, since I reconfigure nearly every shortcut anyway (default emacs shortcuts are IMO, terrible on modern keyboards). There's extentions to configure for firefox too (because it's a pain to do manually via about:config).

The lack of ability to configure key-bindings explicitly is perhaps one of my biggest gripes with "modern" software design - which has the "do it one way only" philosophy, and forces the user to adapt to the software, rather than adapt it to their needs. Firefox for example, gets worse with every iteration - and it's not like I can revert back to using Opera, since they gimped that too by turning it into another Chrome clone.

Really? Do you know of any research that shows this?
The effort isn't very high at all? What are you talking about?
The effort required is dependant on a bunch of things - your existing familiarity with FP concepts from using 'multi-paradigm' languages, the language you're considering switching to (clojure is probably easier to learn than haskell), your familiarity with tools commonly used in that language's ecosystem (emacs, repls) etc.