Search This Blog

Monday, January 05, 2009

I search

Hi all, I know most of my friends are used to my statements like - "I have taken leave and sitting at home in search of truth" or "I am reading something and think that it is helping me in my search for truth". I know many of you find it funny, sometimes I think same. Is not it funny to search for truth?

Why do we have to search for things which are within us like truth, happiness, love? Are these things external? or is it the thing that we have lost them in search of comfort and short cuts to success .

I remember my old good engineering days when I used to think quite a lot about engineering fundamentals. My ideas of engineering design and analysis were quite different. I used to think that I want to get the real knowledge of the subject and to achieve this I used to buy 5-10 reference books for the fundoo subjects like Mechanical Design, Strength of materials, Theory of machines, Thermodynamics and so on. On today's date unfortunately (or rather fortunately) I am working in software development and when I look at Mechanical engineering, sometimes I am able to find the design intent very easily. Now I do think that it was not wrong to read 5-10 reference books for the subject, wrong thing was reading 5-10 books without completely understanding one.

After wards when my journey started in software engineering, I did not repeat my past mistake I took only one book at the time. First one was Denis Ritchie for C programming. When I started with COM and failed to understand it I took Bjarne Stroustrup, but this was strong dose for me and could not understand this book, so decided to learn Thinking in C++ volume one, this was quite helpful and after this fortunately the language in Bjarne Stroustrup was quite understandable, and after Bjarne Stroustrup's book COM books were quite understandable.
When I did some reading of COM books like Don Box and Dale Roggerson (these are names of Authors - books are Essential COM and Inside COM) I thought that I am expert but then I got opportunity to meet Dr. Gokhale and he made me rethink about it. The truth was - "I was practically almost 0". So sir (Dr. Vijay Gokhale) suggested me simple thing - solve all the problems in C++ FAQ book, without looking at a single solution and this worked quite well. Before solving these FAQ questions I failed in 2-3 interviews (this was shock to me earlier I never failed in interview) and after solving the FAQ book (only about 25% to 35%) I gave 3 interviews and was successful in all of them. So I was not wrong in reading but I lagged in the practical side of the study. After that I did same kind of study of subject called "Data structues" studied it from Tanenbaum and then without referring the book wrote code for all (almost) kinds of lists, stacks, ques and little bit for trees and performance in interviews went to great from good.

I think in this C++/ software engineering learning journey the experience I gained is more important in the aspect that "how should we learn?".

Is not the same kind of mistakes we do in our daily life. We buy book like "How to win friends and influence people" and so on and so forth and at the end we understand that what I am doing something superficial and then get towards the books like "7 habits of highly effective people" which talks about paradigm shift and the basics that we should accomplish first. And then after 1-2 years we realize that I have read it but how much am I following out of those learnings? Sometimes we even hate those books thinking that I wasted my time reading it. We think so because we failed to practice it.
I think the reason we think negative is sometimes we go ahead with assumptions which are far away from reality and we ignore the truth about those assumptions because we want success at any cost and the hunger for success makes us ignore the reality and when we face reality then we become helpless and go into negative mode.

So what should be the answer to minimize the entropy (disorder) in life -
1. We should do the things, understanding the whats/ whys and hows about it.
I will give here simple example - when I was new in software development and I used to work on any development I used to find a way to do it, Once I get some way of doing it I used to say that my work is done. Then TL used to tell me from his experience that why should I do the same things some other way (I used to wonder why). As the time passed I started understanding that to be a good developer one has to answer these questions
i. "What am I doing?" is important because if I do something other than "what" I was supposed to then what is the use of doing it (unless i have done something next to Newton or Einstein). If I keep my focus on what then it is obvious that I am going to get the expected (because I am doing what was expected - required)
ii. Why is sometimes more important than what. Sometimes we keep on doing something and then this why comes - I have done this development to get this result - but "why" do I did it in the way I did? Was there any good alternative? "Why" I did not thought of that alternative if it was better?.
Sometimes the answer of why can be even more useful when - "Why am I doing it when somebody else has already done it - why not to use it as it is or with modification - why to duplicate?"
iii. How am I doing something is sometimes very important in long term. Many a times this how is ignored in the inertia or doing things faster but time comes and we understand that what was working is not extensible. The Architecture is very rigid and do not allow us any flexibility in making design changes. The reason is we failed to answer the Hows in while doing it.
So to be a good developer I need to continuously keep my eyes open to answer these Hows - it is not just what I do but also important that How I do it?

2. We should do the things when we are quite confident that I love what I am doing
I used to work in mechanical industry earlier and was quite good in work (off course because I used to love my work and understand it too) when I came to software industry and was struggling in the initial days I understood that it is not important how much money you get from this profession it is also important that "Do you love what you are doing". Fortunately after getting my basics clear I definitely love the job of software developer - it gives me opportunity to think in the shoes of God - since as a developer I am something similar to God for the product I design.

3. Don't do things for others - do it for yourself
Many times I hear complaints from friends that "I have to sit in office - because my manager do not leave office earlier", I think sitting long hours in office is wrong if you are doing it to please somebody else. It is not important to please somebody else. Our life is really quite short and it is practically almost impossible to keep pleasing everybody - accept this in case of boss as well. Doing your work with your best is important. We get paid to do the job not to please managers/ bosses. Fortunately in my last company and current company I got the bosses who care about work and not about the timings.
I do not say that stay late- stay there if you want to do so. I remember I used to sit in office for complete night when I started with software job. My problem was I wanted to develop software as good as I used to design mechanical engineering products, so to learn things fast I used to go to office on Saturday morning and then studying the code till I feel sleepy I used to return on Sunday afternoon at home, I never felt tired by doing so - the reason was simple "I was doing it for me" not for anybody else.

I think I am speaking only about work - but is the personal life really very different?
Let me find can these 3 points help me equally in personal life

1. What Why and How
- Yes I should understand what am I doing about the things which matter to my family/ myself
- Why is equally important - I go for outings with family because it makes me and them happy. If it does not then I should not go.
- How - How I spend time with family is equally important, How much is the quality of that time, spending time with family will really be great if your actions and words come from within.

2. Do things only when you love doing them -
To have long term and strong relationships it is important that I love the people/ myself - if I don't then the relations cant be really strong and long termed.

3. Do it for yourself, don't do it for others - -
When we think that "I am doing it for somebody else" then we are thinking that I have to do it and it is responsibility and there is no alternative and so on. Doing so does not every time make you happy, rather it can make you run away. Doing it understanding the importance of it in my life makes me do it for the future I have seen with these actions.

I will write again on this. I know it is not complete but I am happy that I wrote it.

1 comment:

Ketan said...

Really good analysis...
do it for yourself...and to make yourself happy...without hurting others...should be the funda of life.... :)