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!!!
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".
ReplyDeleteLet 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.
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.
Deleteif 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.
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.
Deletecome 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.
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 :)
Deleteits 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) :)
You are comparing apples with oranges. vi is a unix based editor to be launched from command prompt while source insight is Windows based.
Deletevi 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.
Ok, lets compare apple with another apple. VI vs EMACS :)
Deleteso 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 :)
Shahid,
ReplyDeleteGreat 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.
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.
ReplyDeleteThere is no permanent GOD tool. as you said, if we really have to make a difference, we have to stop worshiping them :)
for me...it 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.
ReplyDeleteyou comes in real user category and you are stuck with inertia , which is your personal problem. :)
Delete