The more problems you face, the more you learn


Yesterday was one of those days when a lot of things went wrong. An investigation into the exact cause of what caused the trobule taught me a lot of things I was not aware of earlier.

Often when things run the way they are supposed to, no one is bothered about how they run.
When you flick a light switch you expect the room to be lit. No even thinks at that moment the number of things in the background that need to be just right for it to turn on.
You need to have power-supply. There needs to be a particular minimum voltage. Your bulb needs to have a proper filment… if you really want to think more… the bulb needs to have an inert gas in it and all..Do we even have the time to think of all this every time we put on a switch?!

You know what the problem with problems is?! Some people learn from their problems, some people just don’t. You can solve your problems yourself. Or you can look for an easy way out. Lets take the same example: The bulb in your room does not turn on. You would probably check your power supply(I am assuming any human would do this basic check before accepting that the bulb does not work). Now you have a choice, you can find why there is no power… or you can take the easy way out; just call an electrician, and he will do it for you. If you call an electrician you learn nothing. Then there are those times when you are left without much of a choice, like my case. When the electrician is just not available. You could live without the bulb, which would be really messy. Or you could call it a bad day and get down to solving your own problems. In the process you learn what an electrician does.

Learning from other problems is like studying history. Its really good to know it… I don’t dispute that. But it is so damn boring. But solving your problems… your own way; is fun! It feels great when you pull yourself out of a mess. Now historians will tell you, you could have stayed out of the mess in the first place. But when you goof around, you put yourself in a bigger mess… you learn more. The bigger a mess you are able to pull yourself out of, the better you feel.

Be goofy! Learn more!!

Crazy code


Programming, as I understand it, is something that needs one to solve problems by analytical thinking. But one thing that I have noticed recently reviewing code is that a lot of people code in a pretty haphazard, “just finish it” kind of way. What happens due to this is that, you end up with a lot of crazy code. Crazy code?! Oh, this is not code that won’t work. It will work all right… cause that was the objective from the start right? to get it working. What makes it crazy is that, it present to you the work created by a shut-out mind. Sometimes it feels like the person was almost brain dead or highly doped. Yup! I find no traces of the logical work by a thinking mind.

There will always be those who are no good at programming. Who are just doing a job with no love for the programming and logic that goes behind it. I can’t seem to find a way to help them, but what was more shocking was that, a lot of good programmers too wrote crazy code.  Why?! One thing that totally kills the thinking mind are deadlines set by a non thinking mind. When you work in a services company, and have clients who always want the code ready before they thought of developing it you get mindless deadlines. Yes, you can argue; you can get extentions… But whenever there is a deadline, that leave no scope for a programmer to sit there, think about the situation and decide the best solution, you are bound to find crazy code.

Who pays for it?! Before we talk about who pays, lets see what all costs we are talking about here. I have found that you spend more time writing crazy code that writing well thought out code. Yes it may appear that you are just scribbling on paper when you should be programming… but that saves time. So the first cost comes in extra time spent by programmers. The code is inefficient, so system performance is degraded. User experience will be bad and you are bound to loose value. This code is difficult to understand, debug, modify, fix, maintain… they all add to a lot of extra cost. In the end you will hire more programmers, tighten the deadline, mess up the code even more, and come up with a crappy product. Losses losses losses….

If you are a programmer who wants to avoid writing crazy code, I suggest writing a small plan on paper, needn’t be a complex flow chart or something, but just a few lines of step by step documentation of how you plan to solve the problem at hand. Before this is ready, don’t even start coding. You are bound to miss out a lot of things. This plan is not foolproof, but avoid a lot of logical errors.

If you are someone who sets deadlines…. GIVE YOUR PROGRAMMERS TIME TO THINK!

Some explanations…


This blog has not had any posts for sometime now.

Where was I? No where far, a bit busy yes.

Didn’t I have any time to write? I did have some time, but I was trying to do something, rather than just blabber for a change.

Did I come up with something cool?! Not everything works out the way you want it. Somethings don’t workout, some take longer than expected… Some just need a little more thought. 

Vague! Keep reading… this place will have more answers. 

Code phata!!


I don’t know where and when this phrase originated, or how it came to be part of the indian IT scene. But a very comman phrase that many must have heard of was “code phata”.. Phata is a hindi word, that literally means tear. Now we all know that compueter programs are not written on paper, and it cannot in the normal sense tear. So when does the Indian IT engineer use it?! It is used when the program crashes or throws exceptions. So when someone yells “code phata”, they have found a bug; that causes an application to crash

When I heard it for the first time, I thought it was something that just my programming team used… one of those phrases that a team develops when the work together for a long time, but later I learned that they all had picked it up from previous work places. Being a little inquisitive, I spoke about this to college friends who are now in IT too. And they all had heard it at their workplaces too.I have not been able to trace down the origins of this phrase, but if you are an Indian IT engineer, chances are very high that you have heard it.

Why am I writing about it?! Well, it is not popular enough yet to be included in a dictionary yet… lets say the dictionary of Indian IT slang! But who knows, one day it may just make it. I guess this is how language develops, borrowing from other languages where there is a confluence  of cultures; coined by groups who need new words and phrases to communicate cause the language does not offer simple alternatives. To catch a jargon in the making would be quite cool, isn’t it!

To all you programmers out there, hope you keeping writing great code, and that you don’t hear ppl yelling “code phata”, around you.

What you cannot do yourself isn’t easy!


If you can’t do something yourself… then it is not easy. And you have to no right to call it an easy or simple task. Does this happen only to me, or do you too find people who call certain task easy? Tasks they know nothing about, and have no means of completing or at times even attempting. I can’t get the logic! If you have never attempted something, how can you know it is easy?

If you are tempted to call a certain task easy, attempt it once by yourself. If you can finish it of quickly and without much effort; then go ahead and call it easy. Before you say, a plumber has it easy, try fixing your own taps. Before you say, a housewife has a great time just sitting at home, try doing all the chores yourself once. If you fail, appreciate the skill of someone who makes a difficult task seem easy.

I have been amazed by all the different skills that humans can achieve. Skilled people make the most difficult tasks seem like an effortlessly natural act. That doesn’t reduce the complexity of the job one bit, but it does give a testimonial to their having mastered the job. To walk up to a person whose job you don’t understand, and to tell him that he has it easy in life; is an insult to that persons’ skill. But worse than that; it shows how stupid the person passing the remark is.

The next time you are tempted to call as task easy, think if you can manage it all by yourself.

Living your dreams


It does not do to dwell on dreams and forget to live” – Albus Dumbledore to Harry Potter, in “The Sorcerer’s Stone“. How very true! I am sure you will agree. But dreams are not all that bad. Just remember that the real world is very different. Remember that you have to live here. Dreams may make you happy, but they can never get you satisfaction. True happiness is what you get out of a sense of achievement; a feeling that you have beaten the odds, beaten reality to make your dreams come true. It is when the line between dreams and reality vanishes; probably that true one may find true happiness.

Paulo Coelho is a remarkable author. If there is one thing that he tries to convince his readers, it is to follow their dreams. He says that we like to believe that we never had the opportunity to follow our dreams. When we do get the chance to pursue many don’t. We just like to believe that life could be much better, but rarely are ready to run the risks to fulfill that dream. Why do we love this dream world so much?

Probably because the dream world does not show the whole picture. We see things the way we want. I recently watched the “Matrix”. It is my favorite movie. Many people never wanted to come out of the dream world. When we dream we do not see the challenges and difficulties along the way. You have thought of all the difficulties? Well I am sure not. Why? Because real life does not go as you want. Something or someone will perform some action that will hinder your plan. You see yourself doing things rightly and succeeding. But this does not always happen. You may have overseen a small detail. Someone may foolishly do something that hampers your job. If you dream of going somewhere, you may see yourself parking your vehicle at the destination. You rarely see that you get caught up in traffic, the parking lot is full, and that someone moves in from the wrong direction and takes the last place available. I am not saying all, but something like this may occur. At this moment although nothing much has changed in your dream, you start feeling that life is not as good as you would like it to be.

But look carefully and you will realize that you did make it to your destination, and there is no reason to feel bad about. Just look back a little, you will find a hundred things that you thought of and managed to do. So rather than holding onto memories of defeats, hold on to memories of deeds that you performed. It will make you feel a lot better.

I am lazy


I am really lazy… you too should be!
I am really lazy… and who knows, one day civilization may progress due to me!

Did that sound stupid to you? Think again! Those who are not lazy, usually go about doing the same routine tasks daily. And most of them even feel proud about that. It is us lazy ones who bring about change, invent new ways to make our lives easier, and that is how civilization has progressed.

We need to be very clear about one thing here: we all usually have some work that has to be done. There are those “non-lazy” types, who will start right away and slog like a beast of burden till they have it done. But most work is repetitive; the most apparent way may not be the easiest. If you have to move a group of boulders, starting to push them right-away is not the best solution. The lazy types like me spend some time to find a couple of logs that you can roll under them.

Mechanical or routine jobs are meant for machines and should be entrusted to them. If you do the same thing everyday, there sure must be a way to make a machine do it. Of course in the real world this may not always be feasible… but when it comes to computers, you can automate all routine work. That is when it helps to know programming. No I am not evangelizing that you learn programming (it is always good to know it though), I am just saying that, any job needs some thought before you start of. That brings me to the, “I didn’t know” types. Oh, putting logs under that boulder would make it so easy to move it, I just didn’t know. You didn’t think. You didn’t even bother to find out the various possibilities. There are so many innovations taking place every day, you need to be looking out if you want to save yourself of some trouble. There are sufficient lazy people around the world trying to make life easier. Someone may have found a better way to do your tasks.

Ignorance is a crime. Laziness is not. Not to have the want to learn something, not to try out new methods to doing things is to get stuck back in time. But most of the “non-lazy” fellow beings seem to resist any change introduced to them. They love the routine. I simply hate it. I need things to keep changing. That is what makes life lively, worth living. A very common belief is that lazy people don’t change a thing, but it they who make most of the changes that matter.

Now what do you think!! Would you still look down upon laziness? I hope not!!

So, go ahead; be a less ignorant and more lazy and make your life worth living.

Avoiding technical jargons


I work in the IT industry. So for most of the workday I am surrounded by people who work with computers and often do a lot of programming. And you can’t help but to notice the use of words, metaphors and even jokes; that a non-programmer would not be able to understand. There are cases, like when you are discussing a technical issue, where the use of technical words becomes unavoidable. I believe every profession has a jargon that only fellow professionals will understand. Then why am I so vehement to avoid technical jargons?!

But this becomes a habit and people use jargons even with non-programmers who would not know them. Using jargons hampers communication. The best method of communication is to stick to a simple language. It needs conscious effort to keep your language understandable to all. Isn’t it good that everyone should be able to understand you?! The more people understand you, the more you exchange ideas. You will find several problems that you can solve that way. Language generates a gap between those who face problems and those who can solve them.

When I formally learnt communication at college we were taught that you have to always keep your audience in mind. Audience is every person who listens to what you say. Not just when you are giving an important presentation. When unsure of the background of your audience simple short words are what you need. Yes that communication barrier that you heard about can exist even with people you know, and programmers more than others seem to be falling prey to it.


Avoid Jargons! Communicate better! Live smarter!!

Where should I work?


Interestingly, the use of a technical test in interviews can
actually work both ways. In my recent hunt for a new job I
automatically turned down any vacancy where I was *not* given a
technical test. My reasoning behind that is that I know *I* can
program, but do I want to work with *other* programmers who haven’t
been tested?

The harder the test I was given, the more excited I was about the vacancy.

If anyone out there is looking for a new job I urge you to bear that in mind.
James on February 27, 2007 02:46 AM

I found this in the user comment on coding horror. Just something to take note off. Lately a lot of ppl have been asking me where should they look to work. I found this as good advice. I don’t know who the author James is… as there was no link… the name is included here just so that one day I might find out.

Undereducated software developers


I was just reading
More Trouble with Programming
The second part of our interview with Bjarne Stroustrup, the inventor of C++.

When I came this line…

Indeed, one serious problem is that currently, too many software developers are undereducated and undertrained.

and I couldn’t agree more. Holding a degree from any college hardly makes one a software developer… Colleges here in India are churning out “software professionals” who know nothing about software. I have millions of examples to support that. It is a grim situation cause the bad code written by them becomes part of many software systems. This introduces flaws in architecture and design, that not only cost a lot to fix, but may go undetected for months or years together.