Sundarrajk's Weblog

Archive for the ‘IT’ Category

To read what will happen to the big Indian IT companies read What happened at Yahoo?, The same thing that happened to Yahoo is going to happen to the Indian IT companies sooner or later. The time period seems stretched than it was for Yahoo. The only reason for this timeline being so long is that India has been the only company to give people for software development at a cheap rate. Other countries are yet to reach the levels of the rate offered by Indian IT companies and they undercut each other.
The revenue of the Indian IT companies grows because of the quantity of mediocre people that they can supply and not because of the superior quality of the people. That is why most India IT CEOs are talking of linear growth and non-linear growth. They have been in the linear growth mode for so long and company that has tried to shift to the non-linear growth has failed.
The mindset in such companies is such that one should get immediate results and one should get it with inexperienced programs. The concept of promoting, what the article calls, “Hacker Culture” is completely missing in these IT companies. And for the consequences of this, see the paragraph below.
See the paragraph “In technology, once you have bad programmers, you’re doomed. I can’t think of an instance where a company has sunk into technical mediocrity and recovered. Good programmers want to work with other good programmers. So once the quality of programmers at your company starts to drop, you enter a death spiral from which there is no recovery.”. And if any company in the Indian IT industry wants to refute this, it is doomsday for that company.
See the paragraph “So which companies need to have a hacker-centric culture? Which companies are “in the software business” in this respect? As Yahoo discovered, the area covered by this rule is bigger than most people realize. The answer is: any company that needs to have good software.”
So can any of Indian IT company claim to be producing good software on their own. The answer is a big NO.
So how do these companies propose to exist a few years down the line. They are only hoping that the trend of the big MNCs giving them work to code will continue long enough for them to survive and probably thrive. Does India progress in any way because of this. Monetarily yes, but knowledge wise it is in no way benefitting.

The last para of the article sums up the entire premise “Why would great programmers want to work for a company that didn’t have a hacker-centric culture, as long as there were others that did? I can imagine two reasons: if they were paid a huge amount, or if the domain was interesting and none of the companies in it were hacker-centric. Otherwise you can’t attract good programmers to work in a suit-centric culture. And without good programmers you won’t get good software, no matter how many people you put on a task, or how many procedures you establish to ensure “quality.””
No matter what ISO certification one has, no matter what CMM level one is at, no matter how many PMP certified Project Managers you have, no matter how many ITIL certified people you have, no matter how many other IT certified people you have one cannot establish Quality.
To survive and thrive, the Indian IT companies need to come out of this complacency and need to take drastic steps to reverse this “Death Spiral” that they are into.

Martin Fowler in the Book Refactoring has to say the following:

“Any fool can write code that a computer can understand. Good Programmers write code that humans can understand”

Wonderful statement. I wish this is made part of our academics (in India specifically) and this fact should be drilled into the heads ot students who are expected to write programs in their careers.

“Computer Science is a discipline that believes all problems can be solved with one more layer of indirection”. This statement was made by Dennis De Bruier.

The problem with flexible solutions is that flexibility costs. Flexible solutions are more complex than simple ones. The resulting software is more difficult to maintain in general, although it is easier to flex in the direction I had in mind. Even there, however you have to understand how to flex the system.

How right and and one hopes that one’s clients understand this fact.

In the book the authors talk about presence of bad code to bad smells and give details of how to identify bad code equating to bad smell. One statement that they make stands out. “Watch out for comments”. It is not that the authors are against comments, it is just that presence of comments indicates a high possibility of bad code. This is what the authors have to say about comments in code.

 “We are not saying that people should not write comments. In our olfactory analogy , comments are not bad smell; indeed they are a sweet smell. The reason we mention comments here is that comments often are used as a deodorant. Its surprising how often when you look at a thickly commented code and notice that comments are there because the code is bad.

Comments lead us to bad code that has all the rotten whiffs we’ve discovered. If we refactor the comments will most likely become redundant.

If you need a comment to explain what a block of code does, try Extract Method. If the method is already extracted and you still need a comment to explain what it does, use Rename Method. If you need to state some rules about the require state of the system use Introduce Assertion.

A good time to use Comment is when you do not know what to do. In addition to describing what is going on, comments can indicate areas in which you are not sure. A comment is good place to say why you did something. This kind of information helps future modifiers, especially the forgetful ones.”

Absolutely brilliant summary about comments.

Read the book