As far as I know there’s almost no measurement of productivity of developer tools. Without data, I think there are two main categories in which editor features, including keyboard shortcuts, can make you more productive:
By making difficult tasks medium to easy
By making ~10s tasks take ~1s
An example of the first would be automatically syncing your code to a remote development instance. An example of the first would be adding a comma to the end of several lines at once using a macro. IDEs tend to focus on 1, text editors tend to focus on 2.
In general, I think it’s very likely that the first case makes you more productive. What about the second?
My recollection is that in studies of how humans respond to feedback, there are large differences between even relatively short periods of latency. Something like vim gives you hundreds of these (learning another editor’s keyboard shortcuts very well probably does too.) I can point to dozens of little things that are easier with vim, conversely, nothing is harder because you can always just drop into insert mode.
I agree that this isn’t nearly as convincing as actual studies would be, but constructing a reasonable study on this seems pretty difficult.
My recollection is that in studies of how humans respond to feedback, there are large differences between even relatively short periods of latency.
I would expect using VIM to increase latency. While you are going to press fewer keys you are likely going to take slightly longer to press the keys as using any key is more complex.
I can point to dozens of little things that are easier with vim, conversely, nothing is harder because you can always just drop into insert mode.
There’s the paradox of choice and having more choices to accomplish a task costs mental resources. Vim forces me to spent cognitive resources to chose between different alternatives of how to accomplish a task.
All the professional UX people seem to advocate making interfaces as simple as possible.
There’s the paradox of choice and having more choices to accomplish a task costs mental resources.
As your vocabulary has grown, has your speech slowed down? Is it faster to look at the keyboard and type with one finger, or touch-type with all ten? Have you ever played fighting video games? Is someone who knows more moves at a disadvantage? It might depend on how much they’ve practiced them!
More conscious choices slow me down, it’s true, but once it’s ingrained at the level of habit, you can do it almost as fast as you can think it, just like speaking or typing or playing a fighting game. Learning to do it in the first place is slower, but like learning to touch-type, try to get it right before you try to get it fast.
When I touch-type words, I don’t think in terms of individual letters. I don’t move that way either. There are clusters of keystrokes that happen frequently in English text. My other fingers have already started moving to the next letters before I’ve finished pressing the first one. Vim’s motion commands end up feeling the same way. It’s just like typing words.
New vimmer: I need to swap a line with the next one. I should cut it and paste it after. What was the command for that again? D? Uh. Visual mode! hhhhhhhhhhhhhhhhhv. Um. k? no. j. l. $. d. Down? j. p! What? Uh, undo! u! Up? k! p! Why isn’t this working? u! $! i! Enter. Aw screw it! Backspace! Right-arrow, Enter, p! Backspace! Escape, p! Phew!
Intermediate vimmer: I could select the whole line with V and cut with d or do a cut-motion with ^D. 0D is a little easier to reach than ^D though. Or dd. The dd is easiest. Am I still in insert mode? Escape, Escape. dd! Down? Oh, already there. Paste-below with p. p! Done.
Experience vimmer: swap-linesddpdone.
I’m not even thinking in terms of select-copy-paste steps here.ddp is a muscle macro in its own right, just like a common word or a practiced fighting-game move.
Is it faster to look at the keyboard and type with one finger, or touch-type with all ten?
Touch typing doesn’t increase the amount of choices if you do it properly. If you learn touch typing properly there’s a single finger that’s responsible for a single key.
As your vocabulary has grown, has your speech slowed down?
That’s a bad comparison because as my vocabulary grew I also get better got speaking.
In cross language comparisons more choices, do slow down speakers. Speakers of a language with fewer phomenes are faster at speaking a single phoneme then speakers of a language with more different phonemes.
I would expect using VIM to increase latency. While you are going to press fewer keys you are likely going to take slightly longer to press the keys as using any key is more complex.
This really isn’t my experience. Once you’ve practiced something enough that it becomes a habit, the latency is significantly lower. Anecdotally, I’ve pretty consistently seen people who’re used to vim accomplish text editing tasks much faster than people who aren’t, unless the latter is an expert in keyboard shortcuts of another editor such as emacs.
There’s the paradox of choice and having more choices to accomplish a task costs mental resources. Vim forces me to spent cognitive resources to chose between different alternatives of how to accomplish a task.
All the professional UX people seem to advocate making interfaces as simple as possible.
You want simple interfaces for beginners. Interfaces popular among professionals tend to be pretty complex, see e.g. Bloomberg Terminal or Photoshop or even Microsoft Excel.
This really isn’t my experience. Once you’ve practiced something enough that it becomes a habit, the latency is significantly lower.
How much experience do you have with measuring the latency of things to know what takes 400ms and what takes 700ms?
Anecdotally, I’ve pretty consistently seen people who’re used to vim accomplish text editing tasks much faster than people who aren’t, unless the latter is an expert in keyboard shortcuts of another editor such as emacs.
Even if total time for the task is reduced the latency for starting the task might still be higher.
As far as I know there’s almost no measurement of productivity of developer tools. Without data, I think there are two main categories in which editor features, including keyboard shortcuts, can make you more productive:
By making difficult tasks medium to easy
By making ~10s tasks take ~1s
An example of the first would be automatically syncing your code to a remote development instance. An example of the first would be adding a comma to the end of several lines at once using a macro. IDEs tend to focus on 1, text editors tend to focus on 2.
In general, I think it’s very likely that the first case makes you more productive. What about the second?
My recollection is that in studies of how humans respond to feedback, there are large differences between even relatively short periods of latency. Something like vim gives you hundreds of these (learning another editor’s keyboard shortcuts very well probably does too.) I can point to dozens of little things that are easier with vim, conversely, nothing is harder because you can always just drop into insert mode.
I agree that this isn’t nearly as convincing as actual studies would be, but constructing a reasonable study on this seems pretty difficult.
I would expect using VIM to increase latency. While you are going to press fewer keys you are likely going to take slightly longer to press the keys as using any key is more complex.
There’s the paradox of choice and having more choices to accomplish a task costs mental resources. Vim forces me to spent cognitive resources to chose between different alternatives of how to accomplish a task.
All the professional UX people seem to advocate making interfaces as simple as possible.
As your vocabulary has grown, has your speech slowed down? Is it faster to look at the keyboard and type with one finger, or touch-type with all ten? Have you ever played fighting video games? Is someone who knows more moves at a disadvantage? It might depend on how much they’ve practiced them!
More conscious choices slow me down, it’s true, but once it’s ingrained at the level of habit, you can do it almost as fast as you can think it, just like speaking or typing or playing a fighting game. Learning to do it in the first place is slower, but like learning to touch-type, try to get it right before you try to get it fast.
When I touch-type words, I don’t think in terms of individual letters. I don’t move that way either. There are clusters of keystrokes that happen frequently in English text. My other fingers have already started moving to the next letters before I’ve finished pressing the first one. Vim’s motion commands end up feeling the same way. It’s just like typing words.
New vimmer: I need to swap a line with the next one. I should cut it and paste it after. What was the command for that again? D? Uh. Visual mode!
hhhhhhhhhhhhhhhhhv
. Um.k
? no.j
.l
.$
.d
. Down?j
.p
! What? Uh, undo!u
! Up?k
!p
! Why isn’t this working?u
!$
!i
! Enter. Aw screw it! Backspace! Right-arrow, Enter,p
! Backspace! Escape,p
! Phew!Intermediate vimmer: I could select the whole line with
V
and cut withd
or do a cut-motion with^D
.0D
is a little easier to reach than^D
though. Ordd
. Thedd
is easiest. Am I still in insert mode? Escape, Escape.dd
! Down? Oh, already there. Paste-below withp
.p
! Done.Experience vimmer: swap-lines
ddp
done.I’m not even thinking in terms of select-copy-paste steps here.
ddp
is a muscle macro in its own right, just like a common word or a practiced fighting-game move.Touch typing doesn’t increase the amount of choices if you do it properly. If you learn touch typing properly there’s a single finger that’s responsible for a single key.
That’s a bad comparison because as my vocabulary grew I also get better got speaking.
In cross language comparisons more choices, do slow down speakers. Speakers of a language with fewer phomenes are faster at speaking a single phoneme then speakers of a language with more different phonemes.
This really isn’t my experience. Once you’ve practiced something enough that it becomes a habit, the latency is significantly lower. Anecdotally, I’ve pretty consistently seen people who’re used to vim accomplish text editing tasks much faster than people who aren’t, unless the latter is an expert in keyboard shortcuts of another editor such as emacs.
You want simple interfaces for beginners. Interfaces popular among professionals tend to be pretty complex, see e.g. Bloomberg Terminal or Photoshop or even Microsoft Excel.
How much experience do you have with measuring the latency of things to know what takes 400ms and what takes 700ms?
Even if total time for the task is reduced the latency for starting the task might still be higher.