Let me first warn you, before you get started with this post, there is going to be quite a bit of rant in here. But I believe it’s going to have some merit and is not just going to be meaningless. There are numerous blog posts/articles and what not about issues faced by numerous companies throughout the world, because of outsourcing to various companies in India. They also rant about millions of dollars lost due to that. This post is going to attempt to look at both the sides – the US companies that outsource and Indian companies that works on these projects.
Failed projects, millions of dollars lost
Let me first begin with somebody that outsourced a project. You’ve lost millions of dollars, yes, that’s bad and it is unacceptable. But was that millions of dollars lost in a day? Probably not. These projects are not going to be something that could be done in a few days and will definitely span over the course of a number of months. In that case what sort of management was performed by the managers in the company that outsourced them? If a company blindly trusts some entity like that, irrespective of the country outsourced to (India, China, Russia whatever), you just cannot expect perfect results or just place the blame on the erring party.
Once a project is outsourced it is totally up to the company that outsourced it to keep tabs over predetermined intervals. There has to be regular discussion between the teams when the requirements are drafted and you have to make sure their understanding is complete. One option to do that is to have brown bags on core topics by various people on the team to verify their understanding. It’s important to involve the QA team also in these sessions, needless to say!
During the coding phase you could have code reviews and/or peer programming for ensuring quality code. Since the most number of complaints I have seen regarding outsourced projects is quality of code, I wonder if they ever had code review sessions. If they did, bad quality code should have been minimal or non-existent. I am pretty divided over code review sessions at times because they tend to get offending at times. Of course, you are criticizing the code and not the person, but still, I would advise to keep it civil without involving in mocking the person who wrote the code.
Apart from the things listed above, it is really important for somebody to pay a visit to offshore team, since that will give them a sense of being considered an integral part of the team. Combined with this words of encouragement will do a world of good! The same goes to letting people from the outsourced to come to your company and spend a few weeks understanding how things work, since that will definitely clear the air and improve the confidence of them ten fold!
There is more, wait! When you outsource a project it is really important how you screen the people that will be on the team. I do understand this may not be feasible for extremely large projects. But it is still possible to have one-to-one meetings set up to identify people who may not be a good fit for the project. During these meetings if you identify people who does not seem to be performing up to your expectations, steps should be taken to make sure they improvise and this should be evaluated. If they do not seem to improvise, you’ve got to cut the slack and ask them to replace them. I do not think that you are going to be worried that they are going to be offended right? Of course not! Millions of dollars are involved in these projects!!
Overall, my main point is the blame has to be both the side rather than just the people the projects were outsourced to.
Now let me move on to looking at this problem from the other side – companies & people that work on these outsourced projects.
Categories of Indian programmers
It is very important to understand the education & family structure of India before you start commenting about the quality of Indian software engineers. In India software engineers are the ones that’s paid the most – at this point I am only referring to entry level to middle level positions. Top level positions are an entirely different level of a ball game of politics intertwined with ego and what not. So let’s not go there!
In India, parents play an important part in deciding what we have to study! Because of this a computer science or an information technology degree is pushed down on students when they are in the process of picking a discipline. Even if we take some other discipline of engineering (like, say mechanical, electrical), after graduation we are still pushed to find a job in software. Even if this is not the case, since the pay is so good, students tend to get in to the software industry. Based on all these facts, I would categorize Indian developers in to the following categories! Mind you, the intelligence I am referring to in the points below is NOT based on the scores they have, it’s just their intelligence level on programming.
* Category 1 – Intelligent students choosing software engineering as a career because it’s their passion
* Category 2 – Intelligent students but choosing software engineering just because of the fancy pay scale
* Category 3 – Clueless/uninterested about software engineering, but still get in to it because of various reasons like social pressure, fancy pay scale or just because they could!
If you find a lot of developers who are not up to the mark, you are just meeting somebody from category 3. In India IT is a fashionable and lucrative job. So a lot of people are going to be expecting to get in to these jobs. You don’t have to be a technical genius to land an IT job, you just have to know how to memorize stuff or present yourselves better!
Whereas in the US, you get in to programming if and only if you are interested in it. Thus if you calculate the ratio India is going to have an extremely higher percentage of programmers. Because of this the possibility of you finding good programmers is going to decrease. How to take care of this issue then? Just go back to the first section, you have the answers!
Motivation & Innovation
You might have read this in a number of posts/articles about the lack of motivation. I feel that’s true. But, those who are not motivated are the ones in category 3 in the above list. Category 2, it would be pretty easy to get them motivated with just a little push. Category 1, do I have to even say?
I am NOT saying that there is no motivation or innovation at all. If you go back a few years before this statement would have been true. But not anymore! I do see a number of open source contributions by Indian software engineers! I am impressed by the number of start ups I see nowadays in India and as a wannabe entrepreneur myself, it’s encouraging!
Getting back to the discussion, the main question in most of our minds is/ will be, why should I be innovative? As far as I do my job, I will get my paycheck. So what else do I have to do? That’s the thought that goes through the minds of most of the people in India. Those who are motivated or trying to be innovative are doing it through open source project and start-ups. Its exciting to see all the start-ups springing up and more impressive is the fact that there are venture capitalists and angel investors in India ready to fund these start-ups!
With that said, it is extremely important for us Indians to step up and start being innovative. I believe the first step to innovation is contributing stuff – it does not have to be path breaking, it should just be useful!
Let’s take a moment to discuss about the hiring practices in Indian IT companies. The shorter version of it is, in most of the cases its an absolute hogwash – the first round consists of meaningless puzzles or verbal aptitude tests or basic math. I could kind of accept basic math based tests, but I just cannot figure out other type of questions involved in these interviews. Only a handful of companies have something that resembles a technical interview. If your communication skills are good, you more or less get a direct pass for a job. If doesn’t matter if you are technically a big zero – because in India you easily move on to higher designations which alienate you from development making you a “manager”. I have personally seen cases where the recruitment managers have selected based on emotions! I am not really interested in expanding on the avenue of decisions by emotions though.
Another pet peeve of mine is regarding the way programming is taught in colleges. Most of the course work is still based on C! Not even C++! If at all they are forced to use C++, it will just C with “cout”! This wouldn’t be half bad if they use pointers and other advanced concepts in C. But they don’t. For the record, Indians dread pointers! So most of the project work done will most likely be bought from somebody or else hacked together with the help of friends who could actually code!
Why this post?
It hurts to see posts about outsourcing woes, without explanations about the background. If something goes wrong the blame goes straight away to the Indian software companies as if its only their fault. There has to be collective responsibility in terms of failures. If the company that outsourced the project(s) does not have the ability to use resources that are not able to draw out the expected results, aren’t they part of the problem? As I said before, whether it is good or bad, with respect to software projects, it does not happen in a day.
Of course, there are projects which are initially set to fail based on flawed requirements or technical design. That’s out of scope for this post. The ones I am referring to are the ones that are well thought out, but still fail due to issues during the development and the testing phase.
Whatever I have said is purely based on what I think. At no point do I claim that I am an expert in something. I could be wrong, so feel free to point it out. Nobody is always right!!
I guess I’ve said enough. If you have any thoughts on this do let me know by posting your comments.
If you would like to know who I am, what I do, check it out here! Feel free to skip it though!!
If at all there are comments and questions asking if I am perfect, obviously not. Everybody is flawed. The difference is whether they are able to accept that and work towards changing their flaws/issues! I do and I always work towards fixing them!!