Before I begin this part, I have to apologize to all my readers (Mark, Arun, Steven, Nolan, Dilip and a few others) for not completing the series, "Programming Lesson" for which I had promised 7 posts. I did not get enough comments on the last 2, although there were over 5000 hits on each post. But yesterday I got an encouraging email, and hence the next few posts.
Once a mother & her son came to a Spiritual Guru with the complaint of her son that he ate too many sweets. She asked the Guru to tell her son that sweets are bad for his teeth & health. She expected that the Guru would give some solution to this problem. But after the Guru heard her issue, he said, "Please come back after a month and only then can I give you some solution". The mother agreed to the Guru's advice and thought that the Guru needs a month to create some special medicine. She left and came back after exactly a month's time.
After she arrived, the Guru called her son near him and said, "Sweets are good in some quantity, but too much of it will make you a slave of its ill-effects." Before the Guru could continue, the mother got a little perturbed and said, "If this is all you had to say, why did you not say it the other day?" The Guru smiled and said, "I craved for sweets myself and until I controlled that desire, I was not in a position to preach." Listening to these words, the child understood better than any medicine could have cured.
This story has an important lesson for anyone who leads projects or anyone who manages a team. In my experience, it can be rightly applied to the advice which a software architect or project manager will give to his team. Especially programming language choice is one of the sentimental issue that I regularly encounter. I do not consider it to be the most important decision, but for a lot of programmers it becomes an emotional issue. Like the Guru rightly puts it, most of the times we become slaves of a desire of ours and it clouds the correct choice and programming language selection is no different.
As a software architect, when I advise my team or counter-argue on a choice of language, I first make it a point to give an example project in that language. I have programmed pilot projects in over 20 programming languages and designed over 35 projects of varied scale. I consider myself to be a newbie, but I realize that every programming language has its advantage or disadvantage. And hence I make it a point to practice in that language before arguing for/against it. It definitely helps when people around you listen and give inputs. Most of the times after you have practiced it yourself, you are more confident about your own choices. Like they say, "The problem is choice".... Hope this lesson just helps simplify the problem.