Wednesday, 10 April 2013

Are we really focused on actual problem?

Sometime when I see people around me in office, I really get curious and puzzled about their approach to problem and their behaviors.  It might sound very specific to the environment which I'm in. may not be true for an environment where people have experienced this issues before and implemented a system where these problems are not so common.

I wrote my first computer program in year 1992. It was in GWBASIC and operating system was DOS. It was a very simple operating system and it was very easy to write/edit programs using simple editor called EDIT.After few years I started working on UNIX platform. When I came to UNIX world, I found that working in UNIX world is bit different and I need to get used to some awkward tools. One such awkward tool was VI editor. I found that learning and using this editor is bit difficult. But very soon realize that if i don’t know how to use this editor, I’m not a good programmer, I’m a junk guyJ. Strange reasoning!!!!

I was not that much sensible  at that time the way I’m trying to sound today, So to prove myself, I put my effort and learned it, but frankly speaking,  I never liked this editor J

There was no personal preference for not liking it.  When I was trying to learn this editor, what I found is that I’m wasting my energy in wrong direction. I have a problem and I want to write code to solve this problem but learning this tool itself is becoming a bottleneck for executing things running in my mind. Then I asked a simple question to myself,” is learning this editor is my goal?”  And answer was Big No. My goal is to solve a problem using computer program and I want to use a tool which is easy to use J

Later on I realized there is more to come. There are not just awkward tools but awkward people and awkward ways of working also.

C is really good programming language but each problem has his own requirement and it is not necessary that C fits for it. I love programming in C but I’m not fanatic about it. But I meet people who were anytime ready to argue how other languages are inferior to C.

Another funny thing was indentation of code in C. I like writing code with opening and closing bracket indented in same column on a new line. This keeps code readable and one can clearly identify different blocks in code. But there is some strange convention of putting opening bracket on same line rather than on newline. This is more to reduce number of lines of code, so that you can see more code at a glance. Each convention has some advantages and disadvantage but funny thing is, if you don’t follow the later convention you are not considered as a good and experienced programmer J!!!

There were people who are wizards of these awkward tools and awkward ways of working and there are people who are following and supporting these people. I was always curious and wanted to know what is running in these peoples mind, what they want, why they enforce this junk to everyone and why they behave like that.

I could figure out certain things, based on that what I have understood is there are few categories.

The real fighters:
The absence of a tool drove this people to invent it and they came up with a working but hard to use tool.  But with time these tools have become their identity and way of their survival. Now they are the real fanatic force insisting use of these tools.

The Followers:
These are the people who are fascinated by the technology, tools and attitude of real fighters. They blindly follow them and there is no reasoning behind it. Even if they have some reasoning it is just to show off that they are one among the real fighters J

The Real user: 
This is the poor guy who really wants to solve a problem and in need of a tool. But once he is stuck with one, he cannot go back because of many business and personal reasons J

We Are part of evolving world and with time we also need to evolve and same is true for the tools also. If a tool is so difficult to use and learn, our focus from actual problem is lost and we end up doing some other work!!!


  1. I would not dare to go to the extent of calling vi a piece of junk. The tool is optimized for productivity "if" you know how to use it. And this is a very big "if".

    Let me give you example of my dad. An old fellow in his 70s he sometimes use my PC to write emails to relatives abroad. He types using a single finger and always struggles with the QWERTY keyboard for finding the correct letters. In line with your argument, his main goal is to type mail to another person and not to learn the awkwardly placed alphabets on the keyboard. Does that mean the QWERTY style of key placement is junk? definitely no, it has been optimized for productivity and speed typing "if" you know where the keys are placed.

    1. All I'm trying to say is that to become a good and productive programmer it is not necessary that you know something like VI. If a tool is so difficult to use and learn and not evolving with time, it create a hurdles to go next step.

      if we talk about productivity, now days programming does not mean, writing some code from scratch. there is lot of existing reusable code which we can use.

      So next thing comes is how good is my tool to help me understand and use this reusable code ? what are the different perspective provided by tools to view the code ?

      As we start dealing with complex problems involving different individuals, it becomes necessary that tools we are using are easy to use.

      Not everyone in a team wants to become master of some hard to use tool.

      its better to have more productive people using common tools and same time focused on actual problem rather than few productive wizards of tools.

    2. Today nobody will be looked down upon for not knowing vi. There are plethora of "easy" editors present even on Unix. However 15 years back when vi and emacs were the only options available it was fully justified, in my humble opinion, to expect that a good programmer would know either one of them really well.

      come to think of it GUI development using X-Motif and XRT libraries was a pain in itself and really simple goals would need complex programming. But you would not be called a good programmer back then if you do not know how to achieve results using the technology available at that time.

    3. there were easy to use editor 15 years back, I'm using source insight since 2000 :) and i have friends who are using it for last 15 years :)

      its only fanatics and followers who resisted. they made vi GOD. Now with time people and business has realized what is needed.

      Unfortunately there are still some places where people have not yet realized.(My current work place) :)

    4. You are comparing apples with oranges. vi is a unix based editor to be launched from command prompt while source insight is Windows based.

      vi is the only capable editor universally available on all unix machines by default and you have to know it even to survive within unix world.

      just to clarify I always preferred emacs over vi, but despite that there were many instances where emacs was not available and I had to use good old vi to achieve my goals.

      I had to use vi couple of months ago after a loong gap of 8 yrs but I could still use the shortcuts fluently. I believe it is like learning bicycle. You wont forget it if you learn it once. Dont blame the bicycle if you cannot learn to maintain your balance. :)

      I agree with your point that vi, or any tool for that matter, cannot be a one stop solution for all personalities. But it definitely deserves due respect in the Unix world just for being available at every single need on a Unix box.

    5. Ok, lets compare apple with another apple. VI vs EMACS :)

      so my question is, why EMACS is not available by default ? why only VI ?

      its like despite of having a motorcycle we are forced to use bicycle :)

  2. Shahid,

    Great Blog.

    You should have tried EMACS. Real Men use EMACS ;-)
    My journey is from EDIT to VI to TurboC back to VI to EMACS.
    My email journey is from ELM to a hack of PINE to Outlook Express back to ELM to PINE to EMACS to Outlook Express to MS Outlook.

    I used whatever tools the company or group used. It never mattered.

    If we were to go with your theory, I fall in a category called "Real User type B". I am not stuck/married with any tool. I take the effort to learn the new tool to solve the problems that make a real difference.

  3. yes ..later on i switched to EMACS and now days I use source insight.Like you I also like to learn to use a new tool if it helps me focusing on actual problem.

    There is no permanent GOD tool. as you said, if we really have to make a difference, we have to stop worshiping them :)

  4. for is the vim which i learned first. so i am comfortable with it. but now if someone asks me to stop using vim and start using emacs, it will be big inertia to me. i will easily install vim and start using vim but i will postpone learning emacs. so i think in my case inertia is the problem.

    1. you comes in real user category and you are stuck with inertia , which is your personal problem. :)