Where have all the Indian developers gone?

There are thousands of job openings in Indian software companies, yet there are ten times that many unemployed qualified Indians out there. So how come they aren’t being recruited? The answer is pretty simple – they are just not good enough! Everyone just blindly opts for a Computer Science under-graduate degree, without bothering to think if they are suitable for that sort of thing, whether they have the proper aptitude for it, or even if they are actually interested enough!

But then, India must have some good developers, mustn’t she? Yep, there are thousands of really high quality developers in India. But none (or very few) of them are available for a job-change because they are all well-placed and are happy with their jobs. Most of them would have moved to the US, UK or Canada for a higher pay-level and standard of living, while others are paid obscene levels of money to keep them in India. In fact, even those developers who have less than 2 years of professional experience will only work for companies that will send them to the US on on-site project work, that way the extra USD they get will add up to their Indian salaries (which are considerably lower).

So how do small Indian companies get good developers to work for them? Well, most of them don’t, and have to settle for second-best which is usually not such a good experience for the company. The others just give up, or keep looking endlessly for that elusive quality candidate. My cousin works for a German company’s India office and just last night, he was bitterly complaining how it’s so hard to get a good candidate. I told him to double the pay offer and to offer a joining bonus, and if he is really lucky, they might get one decent candidate.

So, if you are an Indian coder and you are any good, chances are good that you are either in the US or UK, or earning a near US salary in India! And if you are an American company looking to outsource work to India, be aware that, unless you pay at least 40-60% of a regular US-salary, you are not going to get the best among Indian coders. Of course, if you just need a dozen VB6 people to drag/drop a few forms, then it’s alright. But if you are looking for the really good guys, you know what to do.

I thought I’d make this post because of all the posts I see on online forums where westerners generalize all Indians as crappy programmers who get jobs because they come cheap. Truth is that the outsourcing units just get the cheapest Indians, because they cannot afford the good ones or because the good ones are all on H1Bs or Green Cards in the USA.

Just remember that programming is something some can do and some cannot! It’s not dependent on your country of origin, your race, blood group, sexual preference or anything like that. Good coders are good coders, wherever they come from. Don Box would have been just as good a coder if he had been Dileep Box or Don Chang, wouldn’t he? Or hey, take me for instance, I’d be just as annoying a brat had I been Chinese or Canadian or Mexican, wouldn’t I? And you’d all still have to put up with my crazy postings 😉


Something to watch out for when using for each

Look at the following code :

int main()
    array<String^>^ strarr = gcnew array<String^>(5);
    int count = 0;
    for each(String^ s in strarr)
        s = gcnew String(count++.ToString());
    for each(String^ s in strarr)
    return 0;

If you expect it to output 0, 1, 2, 3 and 4 on separate lines, you are going to be disappointed, because it simply prints 5 blank strings. So what happened?

Look at this specific line : for each(String^ s in strarr). s is a local handle that is a copy of the current iterated element in strarr. The operative word there is “copy”. Thus, when you gcnew the String, you are assigning it to this local handle and not to the array element.

The right way to write that for each loop is :

for each(String^% s in strarr)

Note that you don’t have to do this for the second loop since you are only reading the array.

VC++ 2005 and the confusion over its .NET nature

Every day, every single day, somebody asks on the Microsoft NGs and the Code Project forums whether she can use VC++ 2005 to write native applications that do not use the .NET Framework. It’s amazing how the confusing naming used by the previous versions, where VC++ 2002 was called VC++.NET 7 and VC++ 2003 was called VC++.NET 7.1, had a telling effect on the minds of people.

Anyway, to anyone who’s still in doubt, the answer is, yes, you can write purely native applications with VC++ 2005, and those can be Win32 API applications, MFC/ATL applications, WTL applications and just about anything native really. The Express edition does not include MFC and ATL, which means that you are restricted to creating Win32 API-only applications (other than the managed project options which you are not interested in).

I think the marketing folks at Redmond who work on marketing VC++ 2005 need to start a serious campaign in trying to put the message out that VC++ can create native applications and is not a .NET only tool like C# or VB.NET. Too much stress is put on portraying VC++ as a mixed-mode programming engine, that the fact that it can still be used as a native coding environment is often overlooked. Oh well, maybe they intended it that way. :hmmm: