Friday, April 15, 2011

Why code?

"I advised my sister to avoid software companies. Told her to try consulting companies. She anyways has to do MBA 1-2 years from now. Software companies will make her do coding." - A colleague referring to her younger sister studying at a top-rung NIT.

Another silent jab endured politely. Well, you can't tell someone else to change his/her point of view on such a subjective issue. Like Delhi vs Mumbai debates.

Google, Amazon and the likes now visit campuses at NIT. When I was in undergraduate, such treatment was reserved only for IITs. Seems now IIT students prefer to go to Goldman Sachs and Morgan Stanley rather than Google and Microsoft. Hence these software firms may have revised their recruitment policy to fill in their hiring. Some labor market dynamics this is.

So, why have these firms fallen out of favor? Is it because NPV of salary + bonus benefits of Google India is lesser than that of trading desk of Goldman Sachs? Or is it because it is now perceived on campuses that coding at Google is not as good a work content as that of making presentation decks in IBD of a foreign bank? My sense (stemming from historical observations) would give more credit to former reason.

And here we are not even comparing an Indian software services company vs foreign bank IBD. I am talking about Google, Amazon, Yahoo, Microsoft.

I guess it is more an emotional issue for me than an objective one. I have revered these firms. Why? Because some part of felt God-like to write code. I put some considerable effort to name that experience which satisfies pleasure-reward center in my brain. And answer was made of 2 parts - "problem solving" and being able to afford laziness.

Problem solving would mean getting a kick and satisfaction after finding a robust solution for a problem which can be dissected into logical steps. Even where there is no apparent approach available for dissection into logical steps  (e.g. fuzzy logic), still developing heuristics which give reasonable results statistically. You can model sea-waves, smoke trails, light reflections, inference user intentions --- you can model nature and universe.

Being able to afford laziness is that you can automate tasks which are routine. This frees up time for being lazy or delving more into the core nature of problem rather than going about doing mundane work daily.

While I discovered these 2 aspects intuitively from my own experience, it was a huge satisfaction to see same conclusions coming from uber-Hacker Eric S. Raymond. A sense of validation coursed through me.

But what is so special about this? Can't you model complex financial transactions and be lazy by automating trading? These applications very much exist in real world business and finance software. Yes, they do. And this is where I still am confused. Why would I appreciate coding more for a web-search engine vs modeling Black-Scholes? What is the difference?

Maybe it comes from some deep antagonism towards profit-centered capitalism and vices of money. Do I hate money or don't want it in my life? Definitely not. I have reasonable aspirations and I do enjoy pleasures money can bring. Yet, invariably one starts serving money rather than other way round. Its that spirit of hoarding information and employing greater-fool theory in business transactions which possibly goes completely against the grain of hacker spirit. Like the infamous open letter of Bill Gates to Homebrew Club hobbyists.

And then I have had some lessons learned from Talisma days. Great product, we believed itself. We enthusiastically coded for it. Awesome working environment, freedom etc etc. It went bust. What happened? Did Product Management team failed to see market trends? Did Marketing and Sales goof up? The fact of the matter is that a great engineering product too can fail if business side fails; either by its own doing or failing to ward off excessive force thrown in by competitor (Netscape vs Microsoft, uber example). We all need breads on our tables. We all need to go out on those holidays. We all aspire to have a home with modern amenities. We want to give our kids a bright and secure future. These all can only be bought by money and not by any idealism. But is it required to fool the customers through marketing gimmicks, to wear the smiling-face when facing investors? Sadly, answer is yes. The system that enables movement of capital is so structured that there is no escape for all these pretentious vices of business side of things. Practically, I can only try to keep getting minimally involved in it.

Minimal involvement means not taking up managerial positions. Not being responsible for P&L. They wont let you have that. Maybe you yourself cant have it, when you see peers and juniors moving up to become your superiors. That competitive animal inside you, will it accept this?

Such is the nature of these thoughts that they navigate laterally rather than top-down.


No comments: