Thursday, February 04, 2010

The Last Freedom Struggle

There are various routes from your house to your office. You are free to choose one of the routes. But you mostly come in one particular route. You choose that because you are habituated with it or due to some reason. You do have a free choice from several options – and you make your free choice.

You are free to choose your route. Nobody forced you. Nobody forced you but how many free choices you have?

You are indeed free within the limited options that are provided by your perceptions, the information you have and even your expectations.

Rakhi Sawant recently did a swayambar. Out of 92K candidates she was free to choose any one but she had only 92K options. What if she didn’t like even the last candidate? She had no choice, but to accept. She was indeed free, but only within a range of options available to her.

Freedom simply means that you are not forced to act in certain way or to make a certain choice. You are free to act as you wish. But hold on – you are not really free to choose, if you have not really seen the choice. The bottom line is: you are not really “free” unless you can see a wide range of options from which to choose.

Coming to your workplace, as a developer how much freedom you really enjoy? Let say, you are given a module to design and build. You have always many choices in each stage. Choices come from various directions. A similar module in some other project, an open source, a competitor’s way of handling behaviors, your clients’ specification, a standard to look-out, your managers ego, your BUs working methodologies blah blah. Which path you choose?

And how often you have exercised your freedom and done it “your way”?

How often you look for alternatives? How often you are not satisfied with that “working formula”? You love your “last working build” – you hardly take the risk of screwing it up. Isn’t it?

There are better data structures to choose for but you end up choosing “linked list” perhaps because you are comfortable with it. You never tried other alternatives, because you have really never studied them or you don’t want to study either because lack of time or because your ego gets hurt (!). “Ten years in this industry man, you want me to read text books??!!”. Sounds familiar – isn’t it?

A customer seating behind you or a customer is waiting for a fix. You are running late. Do you have the time/freedom to think? All you do is, you give a hot-fix. Don’t you?

You know that there are serious flaws in some design. You wish to rectify it but your lead is hell bent on the way he/she proposed. All your arguments are futile. Do you have any choice but not to accept and implement it?

Your design is as good as the knowledge you possess. You choose only those algorithms which you know. If you are stuck, you refer to your boss. Your boss proposes the best in his/her knowledge domain and seldom beyond it. Your choices are often limited by those knowledge boundaries.

Sometimes you are forced. You are not free – I agree, but not every time. You always have better options or the chance to look out for better options. How often you have exercised it?

Many a times, it’s your perception that holds you back from exercising your freedom. Few of your perceptions come from personal experience. A majority come from education. They come from previous implementations, your organizations’ standard practices, implementation guide/hand books, reference frameworks etc. Perception originated by legacy is more dangerous. Perception is real even when it is not reality. If your perception is fault, then your answer will be rubbish even if your logic is perfect.

Once your perceptions are formed, you see the world through those perceptions. We only see those things that support your perceptions and ignore what does not. Problem is often you do not notice or see them at all.

Your range of perception is severely restricted by your limited perceptions. If you can see things in one way, then you are not free to choose between options.

What we need is, to develop perceptual skill and the skill of possibilities.

Having a lot of information is one way. It gives you confidence. Next is “change of perception”. How about design? You can analyze the past but you have to design for the future. How do you achieve it?

The answer is “Thinking”. De Bono defines four aspects of thinking — perceptual, constructive, creative and design thinking. Thinking out-of-box as he calls it helps in widening your range of choices or decisions. Remember, ignorance or limited thinking is worse than “force” because you are not aware of it. You may be fully aware of force, but you may be ignorant of your ignorance.

So folks, Think!

Think beyond. You will always end up getting more options.

Think beyond “linked-lists”. Give your boss a plethora of options to choose from. If you are customer is demanding — may be you can tell him the possible issues/dangers with the hot-fixes you are giving. About using legacy code, if you truly observe; nobody really forced you to reuse the legacy code. Perhaps you used it to maintain the legacy! You didn’t think creative enough that time.

It’s time to think.

How about hanging a pen in rest-rooms?

~Swarup
- Inspired by the book “The Free Mind, A lateral thinking approach” by Edward De Bono.

- Few sentences hacked. And of course this article is based on all my own perceptions.