I'm reminded of a tidbit from an old AskTog[1] article:
"We’ve done a cool $50 million of R & D on the Apple Human Interface. We discovered, among other things, two pertinent facts:
* Test subjects consistently report that keyboarding is faster than mousing.
* The stopwatch consistently proves mousing is faster than keyboarding."
There are probably all sorts of caveats to this (and the research may have changed since then) but I'm reminded of it whenever I see people extolling the virtues of their ascetic, keyboard-centric dev environment. I'm not saying they're wrong, just that in lieu of benchmarks and studies, I'm skeptical.
Interestingly, I don't feel faster with the keyboard. I do, however, feel more comfortable when I stick to one mode (keyboard-only or mouse-only). It's switching that feels awkward. I also don't use Xmonad out of pure Geekiness (though I started that way). I use it because I find it more comfortable. I work at the same time with OSX, and while moving windows with the mouse is probably just as fast, it annoys me.
Now the reason why the keyboard is slower than the mouse may be sub-optimal short-cuts. For example, when editing, one very often needs to change lines, or otherwise navigate the text. A sensible short-cut to support that could be alt + jkli (assuming a Qwerty layout). Then you don't have to leave the home row at all. But if you have to use the actual arrows, it's slower, and that may make the mouse the better choice.
Sure, a mouse is faster if all you're doing is pointing at stuff and pushing one of a few buttons. Studies will confirm this. That's pretty low-level, though.
A keyboard is faster if you want to, say, "jump to the head of the definition of the function body you're currently in and send it to be evaluated", because a mouse just doesn't have enough buttons. With a keyboard, you can name operations. And then name new operations, grouping those names... (Why yes, I do use Emacs.) If I was using a mouse-and-menus for that stuff, the menus would stretch to the moon.
The next time somebody argues that a mouse is faster than a keyboard for programming, I'm going suggest they make their case solely by pointing at things and clicking their tongue.
Sure, editing is one of the exceptions Tog mentions. (I'm an Emacs user, too.) My point was that just because you think or feel that something is faster doesn't mean that it is.
Also, when it comes to programming, the biggest bottleneck for most people isn't typing -- it's thinking.
I agree on both points, actually, but when people mention that study, they tend to use it as a "See! Using the mouse is faster!" handwave-y dismissal, without mentioning the fine print.
I'm not a neurologist, but I wonder how differently the brain's spatial centers and language centers interact with the part(s) that perceive the passage of time.
I think there's more to it than just mouse vs keyboard. The keyboard-centric power interfaces like Emacs, Vim and those tiling window managers have non-intuitive shortcuts and combining sequences that really make things go fast. Compare using a keyboard with Emacs to using a keyboard with Notepad.
The same thing for those mouse-centric applications. Linux window managers have a "shortcut" of holding a modifier combination and dragging anywhere within a window to move it, or dragging the nearest corner to resize it. This makes arranging floating windows fast and fun compared to Apple's more intuitive requirement of having to drag the titlebar, or that tiny little handle at the bottom right of the window.
Some of the mouse-centric visual programming environments you mention, particularly the ones that have many years of use behind them, also contain shortcuts. Autodesk's Flame compositing environment for instance, traditionally driven via a pen and tablet, has a whole bunch of shortcuts to drive the interface without touching the keyboard. You can connect dataflow nodes by "kissing" for instance - dragging them close to each other, allowing you to connect many nodes with a single movement.
For many people, it's the mastery of these shortcuts - keyboard, mouse, pen or touch - that gives them a sense of pleasure and power when they use that piece of software.
Also, when it comes to programming, the biggest bottleneck for most people isn't typing -- it's thinking.
That's so true for me. I'm not pumping out code nonstop where the efficiency of keyboard vs mouse comes into play. Being more efficient with moving around a source file only matters if I actually knew what to do once I get to a particular spot of code and many times I don't. I struggle more often with the high-level design of a program than the details. And when the design is sorted out then everything else falls in place. That's when more efficient navigation may be more important to me.
Mice are better for spatial navigation, but keyboards are potentially much better for structural navigation - whether you're moving by search (regexp find, or whatever) or language elements (navigating via tag stack, etc).
Agreed. Improve your mind and not your tools. Don't spend a couple of hours learning to use a tiled WM instead spend that time reading up on documentation. I believe that will give you the biggest speed gain.
For me, the best part of a tiling window manager is immersion. It's no-nonsense. There's no eye candy to remind me of all the brain candy out there. When your whole screen is nothing but black-and-white text and ugly emacs-colorized source code, it's easy to forget that Facebook and Hacker News are just a few clicks away.
I think the caveat is primarily muscle memory. If an action is in muscle memory it's almost always faster. I don't think about how to switch desktops or save a file so the keyboard is faster. However fancy cursor movement(like skip ahead one word) is pretty much useless for me since I have to think about what I'm doing.
"We’ve done a cool $50 million of R & D on the Apple Human Interface. We discovered, among other things, two pertinent facts:
* Test subjects consistently report that keyboarding is faster than mousing.
* The stopwatch consistently proves mousing is faster than keyboarding."
There are probably all sorts of caveats to this (and the research may have changed since then) but I'm reminded of it whenever I see people extolling the virtues of their ascetic, keyboard-centric dev environment. I'm not saying they're wrong, just that in lieu of benchmarks and studies, I'm skeptical.
[1] http://www.asktog.com/TOI/toi06KeyboardVMouse1.html