Thursday, February 9, 2012

Software development techniques for mere mortals !


Whenever you want to develop a software, one of the common mistakes is to be over ambitious. Aiming to be mother of all designs, trying to address too many aspects of a problem. For example in this current era, when memory and cpu cycles are very  cheap, sometimes there is no point in wasting too many gray cells, trying to put in best possible optimization.

First and foremost, most of us need to realize that, we are here to ship product and deliver value to customers, not to write code. Do not mistake me, I am not implying that we should write a bad code, within shortest possible time.

We need to take a middle road here. For example, you may come up with a nice looking design of classes with multiple inheritances, multi threaded, asynchronous data messaging. But there is no use, if it's very hard to understand for others and implement. Software development does not end with writing a code which does the job. There needs to be enough documentation, so that others can understand, maintain it and enhance it.

Let's be honest here, it's hard to read some one else's code, than writing your own. That's the reason, if you have 5 people in your team, each guy will have his own way of parsing XML file. It's hard to get above said features like multiple inheritance, generic templates and multi threaded frameworks to work with out bugs.  Unless you are a super star programmer, who is able to keep all multiple context information in his head, you are bound to make mistakes which are hard to debug.

So before venturing into software design think about what exactly customer needs, time line, then come up with a simple design which works well and easy to maintain in the long run.

Monday, March 28, 2011

Soichiro Honda – The free spirit


Recently I gave a talk about founder of Honda Motors, as part of speeches in Toastmaster's club in Citrix (my employer) . Written version of that.


                                       Soichiro Honda – The free spirit

Whenever you think of Japanese auto industry, for that matter Japan, first thing that comes to mind is Toyota.  Hundreds of books have been written about manufacturing efficiency, quality control of Toyota and how did they conquer the world. I would like to throw light upon Honda, comparatively young and maverick auto company.

Honda was founded by Soichiro Honda in 1948, right after World War II. During that time, gasoline was strictly rationed, there was not enough fuel. Honda took 50 cc left over engines from Japanese military and fitted them into bicycles. They started selling like hot cakes. Lot of people started criticizing him that it’s outrageous to produce these machines, when country is in fuel shortage. So he went ahead and bought some forest land, and squeezed raisin out of pine trees and mixed in fuel. Getting more out of less, was how Honda survived after War, and the experience deeply influenced his career and his company.

Soichiro Honda – What was he like. He hated reading writing, but he was fascinated by technology. A born engineer – eager, intuitive and self taught and a Mechanical genius.
He never finished college, in a country where university degree is most sought after. He drank to excess and drove recklessly. Because of this kind of background, it was very hard for him to attract customers and convince banks initially.

He had distaste for university degrees. His initial team was full of discards from Toyota, Nissan. Usually people who had very good understanding of mechanical engineering, but not a good fit in mainstream industry because lack of degree from reputed university. He used to brag that he found better and more creative engineers by hiring engineers who are not from prestigious university. He hated executives from Toyota, Nissan etc.  Because for Honda, they represented Japan’s Tokyo university elite and other things he could not stand about Japan’s establishment.

Titles, age and degree were of very little importance to Soichiro Honda, He always followed principle of “ability first”. Young people were given bigger responsibilities and allowed to make mistakes. This was a big influence at Honda motors. At a meeting any subordinate could stand up, and give his opinions. So Honda engineers were a different breed from their counterparts at other Japanese automakers. You could see it in their faces. They were more animated, less guarded and less formal.


So if Toyota succeeded because of excellence in efficiency and quality. Honda motors took the other route and succeeded because of its unorthodoxy, speed and flexibility. While doing so it changed other automakers like Toyota, Nissan in general Japanese industrial establishment.

PS: By the way if you guys are curious about what car I drive, I drive a Honda (Acura)!

Lessons learn t:

You can convert limitation into opportunity.
Do not judge a person based on educational credentials or lifestyle. (Always ability first).
You can achieve quite a lot without godfathers, if you are determined.
Not everyone will be innovative and ground braking from day one.
Innovation does not mean, it has to be disruptive, totally new and path breaking. Hundreds of small improvements can be as effective.

Wednesday, October 20, 2010

What is the aim of a corporation ?


"Maximize the economic returns to the share-holder"  This has been mantra of corporations all across the world. This follows from the argument by Scottish economist Adam Smith that an "invisible hand" guides companies to strive for maximum profits, which in turn benefits society too. While pursuing this aim, should corporations or do they really care about social good / benefit.  To paraphrase this, former Citigroup CEO makes an interesting statement " We want to grow aggressively, but without breaking law". On the other hand GE CEO Immelt states "Its upto GE to be a good citizen. Not only is it a nice thing to do, it's good for business".

Most of the Corporations are assumed to live for perpetuity. So company shareholders and executives should concentrate on long term value creation, rather than trying to make quick bucks or running their own agendas. But for most of executives and shareholders, five years or a decade at most could be long term. This could result in decisions which in fact are myopic when you consider from the perspective of corporation. This is the reason you see instances like Nortel, Sun Microsystems.

When we talk about value creation, it's better we limit our scope to economic returns. Because it's very hard to define terms like social good. At most we can talk about perceived social good in one particular regime and legal framework. For example some thing that's considered legal in china could be illegal in united states. For example as a shareholder of Google, should you oblige to regulations of china ? or should Research in Motion oblige to security concerns of Indian government ? When we limit our aim to economic returns and turn pragmatic then answers to these questions are more clear.