z3bra, the stripes apart

The Hard way

— 9 August, 2013

As you will notice, I am fond of learning things "The Hard Way".
I'm going to tell you why, but before that, here is my background, so that you'll understand how I came to that opinion:

I have alway tried to put myself in difficulties, to challenge myself and learn new things. During this period, I have searched plenty of tools matching the Unix Philosophy, by Ken Thompson:

Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface.

This is the reason why I prefer using CLI based tools rather than GUI based ones. I've come to the point where grabbing the mouse to click on a button is a real pain.
But let's go back to the hard way.

What is that ? Can I eat it ?

Learning stuff the hard way is (talking about computers), starting using tools or learning stuff, without a formation, any piece of help, or any hack to make it more simple to use/learn.
Being put in front of a difficulty will force you to search how something works, how do this or that, and you will know what not to do after you did it.
Basically, by learning tstuff his way you will learn from your mistakes, and understand what you are doing.

To illustrate this, I will use my own experience with a hard to master tool: Vim.

Vim, is an extremly powerful modal text editor. Modal means here that there are multiple modes, each one made to do different tasks. We see here that it is totally different from the standard text editor everyone knows (I'm looking at you notepad...).
Vim is hard to approach, and difficult to master, because of your good ol' reflexes. So it is an excellent tool to learn how to learn the hard way!
Here are the basic steps:

  1. Use it as your main editor, stop using every other alternatives
  2. Use it before starting to configure it
  3. Do not use any plugin at all
  4. Don't give up !

Using Vim this way (at least, at the beginning), will help you mastering the tool faster than learning progressively. Of course, you could still use the mouse, until you are ready to stop using it, use the arrow keys to move within the buffer, delete by selecting your text in visual mode, and pressing <SUPPR>.
But, WHEN will you be ready ? WHEN will you force yourself not to do that ? WHY not doing this now?

I forced myself to use it this way, and after a week or two, I was putting ":wqjk{wB" in every other text editor, because I were finally comfortable with, and used to Vim.


I see you raising the I can't have a productivity loss at my work card, and you are right. This method is not shipped with only advantages, and sometimes, you should avoid it. If you think that you can't handle a productivity loss, postpone the learning for when you will have the time. But don't do that to much, because you have to be aware that you will have a productivity loss. So I will ask a single question:
Before being ultra-productive, would you rather be totally unproductive for one week, or almost productive for one month ?
Actually, I have never suffered from that 'bad productivity' the hard way implies. And believe me, it's worth the pain!

This is all about choice. Everybody has his learning curve, find yours!
If you're not convinced about this. Please try it. You will, at least, have your own opinion, which is great.
After that, you will be more pleased to tell if the tool is made for you or not, and if you want to make your life easier. (Show me one Vim user that has choosen to enable the mouse because it enhance his productivity... I dare you ;) ).


There are a lot of place in the UNIX domain where the hard way can be applied, here are a few examples:

I hope I conviced you, at least, to try it. It might be hard at first, But that's the point.