

Bicycle skills - ehamberg
http://www.johndcook.com/blog/2012/08/01/bicycle-skills/

======
unoti
The first bicycle skill I thought of for me when I read this: ZSH. I've seen
people blaze through common tasks using ZSH that I do myself using an unholy
combination of backscroll, mouse cut and paste, and cutting and pasting into
my daily work notes in another window. I've never used zsh because I never
wanted to take the time to learn it.

vi is something I did take the time to learn, and it's paid off hugely over
the last couple of decades.

~~~
aangjie
Am just graduating from a novice to medium level user on vim. Consider myself
a medium/novice user of the Bash shell (i.e: without awk/sed knowledge. but
with find and grep). Is it worth switching to zsh at this point for me or can
i just wait till i pick up awk/sed for text munging and progess on the shell
usage??. I have come across zsh mentioned a few times, and given it a go too,
but haven't been convinced/not understood what makes it better.

~~~
plorkyeran
Personally I found zsh worth switching to even without spending any meaningful
amount of time learning to use it. The better tab completion alone is enough
to make up for the setup time and the occasional bashisms I try that don't
work.

~~~
elithrar
> Personally I found zsh worth switching to even without spending any
> meaningful amount of time learning to use it.

Definitely. Smarter tab completion and smarter word deletion (Ctrl+W) are
probably the two "most used" features for me.

FWIW, after ~6 years using Bash, moving to zsh last week was a revelation. I
swapped to tmux (after dabbling in screen) the week prior. Has been a good
fortnight.

[1] <https://github.com/robbyrussell/oh-my-zsh/> is a great source of zsh
plug-ins and configs. I use the "simple" theme and the git, brew and gem
plugins (amongst others):
<https://github.com/elithrar/dotfiles/blob/master/zshrc>

~~~
devgutt
Ctrl-W works in bash too.

~~~
djeikyb
For this string with cursor at end: "cd /usr/share/gammu"

Bash[1] deletes to the space. Zsh[2] deletes to the slash. I installed Zsh
just now to find this out, and I love that Zsh appears to use ctl-w to delete
words like vim does.

[1]: GNU bash, version 4.2.37(2)-release (i686-pc-linux-gnu)

[2]: zsh 5.0.0 (i686-pc-linux-gnu)

~~~
devgutt
You can use META-<Backspace> (Emacs mode)

------
raganwald
Is this another way of describing what Steven Covey called "Sharpening the
Saw?" You can saw wood all day, and of course in the very short run you're
always more productive sawing than sharpening, but in the medium or long term,
you're better off sharpening the saw before you start cutting.

~~~
Splines
I see "bicycle work" and "real-time work" as basically the same thing. In
other words, you do "bicycle work" so that you can do "real-time work"
successfully later.

In programming terms, this would be like taking the time to learn your
language so that you can effortlessly interact with it and think about it
without _really_ thinking about it. Or learning your editor so you can move
around your document on a subconscious level.

~~~
raganwald
Improving your editing skills (one of my glaring weaknesses) are a near-
perfect example of sharpening the saw. You already use an editor, now you're
learning to use it faster.

I guess if we're going to play with the metaphor, learning to use a bicycle is
not sharpening the saw, it's learning to use a new and better tool.

So if we go with editors, learning to type faster is sharpening the saw, just
like training to walk faster. But switching to Emacs is like learning to ride
a bicycle where you used to run.

------
frankus
I often find myself wondering whether I should take the time to automate some
little part of my daily work routine when it would be many times quicker (but
less fun) to do it manually.

If I do go ahead I often end up saying something like this to my coworkers:

<http://xkcd.com/974/>

------
stephengillie
Many would consider switching from Qwerty to Dvorak a bicycle skill. Typing a
blog post or email can take much longer when you're learning to type in a new
pattern. For some, the enjoyment of learning Dvorak, or the anticipation of
being faster in Dvorak than Qwerty offsets the annoyance at the task's
increased duration. For others, they have no such enjoyment or anticipation,
and so the task is merely annoying.

People will only pick up bicycle skills where their benefit (or perceived
benefit) is greater than the annoyance they deal with.

~~~
agscala
I don't think switching to Dvorak is worthwhile. Most people don't have the
capacity to actually squeeze out the few extra wpm that Dvorak gives you, and
if you do, the benefits aren't extraordinary. Plus if you use Vim, either
you'll have to remember where the original keys were on the keyboard and use
it solely through muscle memory, or relearn.

~~~
jcoder
To me (Dvorak typist for > 2 years), it's not about increased wpm. I'm
actually not a fast typist. It's about greater comfort at the keyboard,
because ~70% of my keypresses are along the home row, compared to ~30% with
QWERTY.

WRT Vim, I made the switch without too much trouble. In fact, I find the j/k
on the left hand and h/l on the right hand useful.

------
sharkbot
This is a bit similar to the "exploration vs. exploitation" problem [1]. Is it
better to explore new avenues in hopes of higher returns later, or better to
exploit current knowledge of the problem to maximize current returns?

[1] <http://en.wikipedia.org/wiki/Multi-armed_bandit>

------
pdelgallego
The command line is a bicycle skills. Any programmer should learn it.

~~~
stephengillie
Do some people really find the command line so difficult to use? I'm quite the
opposite so I have trouble believing it.

Maybe it's because the default black background makes it feel like we're
throwing our commands into a "magical pit inside the computer", and waiting
for the output, which will be an error unless the commands were perfect. That
perspective is unpleasant.

Maybe it would be helpful to visualize a GUI while using the command line,
where instead of clicking on a menu or button, you have to type its name.

~~~
mechanical_fish
_Do some people really find the command line so difficult to use?_

Yes. Very yes. To the point where, when you say "some people", what you really
mean is "most people".

I don't think the problem is "the command line" so much as it is "the _Unix_
command line". You don't see a lot of people having difficulty with text-
adventure command lines. You demonstrate HELP and GET LAMP and they're off to
the races.

Whereas Unix commands are hard to discover unless you already know their
names, have illogical names, have inconsistent behaviors, have poorly designed
documentation (every command has 27 options and they're often documented _in
alphabetical order_ on man pages, with the obscure corner-case options given
equal weight to the most useful ones), require combinatoric thinking (because
many options can be used at one time), take invisible actions ("gzip foo"
returns no output and modifies a file in your current directory; you need "ls"
to see that it did anything), are context-dependent (you need to know what a
"working directory" is or you won't get past square one), and often require a
working knowledge of pipes and redirection to be useful (and pipes and
redirection aren't intuitive skills).

You need to read a book. Nobody has time to read books. Reading books is a
bicycle activity.

~~~
Splines
It would be interesting to use a command line interface that acted like a text
adventure game.

    
    
      > get file.txt
      YOU PICK UP THE FILE
      > inventory
      YOU ARE HOLDING:
      file.txt
      > gzip file.txt
      FILE.TXT HAS BEEN COMPRESSED
      > inventory
      YOU ARE HOLDING:
      file.txt (compressed)
      > drop file.txt
      YOU CAN'T PUT THAT HERE, THERE IS ALREADY A FILE.TXT HERE
      > rename file.txt file.txt.gz
      FILE.TXT HAS BEEN RENAMED
      > drop file.txt.gz
      YOU PUT DOWN FILE.TXT.GZ
    

Obviously not ideal, but at the very least the idea of inventory-as-clipboard
would be useful on the command line.

~~~
stephengillie
That's a very fun idea you have there :)

~~~
PotatoEngineer
You are in a twisty set of deeply-nested directories.

------
DividesByZero
I've seen some organisations with an complete inability to learn these
'bicycle skills' in the interests of short-term savings because of misaligned
incentives.

Gigantic enterprise software/infrastructure projects with no integration test
automation because it's cheaper/faster to throw on a few temp testers every
time there's a release rather than taking a month to put automation on the
whole stack. Role reshuffling to make a savings for the business unit
quarterly earnings sheet.

I think the other side of the coin to bicycle skills is something akin to
technical debt - call it skill debt, say. Something could be done the right
way straight away and the skill/process learned earlier, but because of a
shortsightedness regarding cost, the cost to learn them actually increases
with time until it's simply not possible without starting all over again.

This is something that can affect organisations as a whole, not just
individuals, and I think it's something technical and project managers in
growing organisations ought to be aware of - get your people, ALL your people,
set up with the requisite bicycle skills that benefit everyone.

------
sterling312
My buddy at Microsoft tells me that in terms of automation, they use the dogma
that if you need to do it once or twice, you just do it by hand. If you need
to do it more than that, you automate it.

~~~
wickedchicken
Dijkstra says it even more succinctly: 'two or more, use a for'.

~~~
crntaylor
That is ever so subtly different.

------
JoeAltmaier
Most skills are bicycle skills - we do a lot of different things every day in
this business. Its tricky to guess what we'll do more than once, that's the
rub.

I learn skills when I want to - not when the job demands it. I actually enjoy
learning things, and do it more often than needed, to improve myself you might
say but actually just because.

------
tsahyt
I think editor skills are a perfect example of bicycle skills. When you're
effectively editing text all day long, learning an editor like vim or emacs
really pays off in the long run, although it might be painful in the
beginning.

Bash scripting is another bicycle skill I think. The power of automating tasks
is obvious but often it's easier to just type stuff in quickly rather than
writing a script and let the machine handle the job.

There are probably many many more, but those just popped into my mind right
after reading the definition of a bicycle skill.

------
ImprovedSilence
In other words... learn vim?

