Code Craft Code Craft
 
 
 

Finding coders on the subcontinent

(October 18th, 2005)

I’ve lived in every continent but Australia and Antarctica, but for the last two years I’ve been coding in the subcontinent of India.  I have loved living here, but up until this point I’ve generally held off on drawing conclusions about outsourced development in general and Indian outsourcing in particular.  I’d like to break from that and describe the very real talent problem that companies will face when choosing to move some or all of their software work to India.  Outsourcing has many difficult aspects but for this article I’d like to focus only on the talent issue.  I do this not as a disgruntled outsourced employee but as an outsourcing believer who has put in enormous effort to make outsourcing work but who has been forced to deal with some very tough realities on the ground.

Before getting in to the analysis let me mention where I stand philosophically so you can get a sense of what prejudices I may harbor.  Overall I view outsourcing as something that helps create economic fairness.  I do not think someone has a right to a job just because they were born in a particular country or have a certain color skin (as some appear to).  From my vantage point if someone in Zaire can do a job as well for half the total cost then they should be allowed to (I acknowledge that in some countries child and prison/slave labor distort these economic principles, but this is not the case in software outsourcing).  I didn’t move to Bangalore because someone made me.  I dropped out of business school and moved to Bangalore with my wife and two kids because I had the opportunity to come and help build a team here and because it was something I wanted to do.

The myth of the cornucopia

The first thing worth knowing about Indian outsourcing is that it is shrouded in myths.  Many of these myths are the results of active promotion by people who make money from outsourcing regardless of whether or not is succeeds.  These include a large number of outsourcing firms but also people who broker deals.  The biggest myth is that India is chock full of highly trained and unemployed engineers that are practically begging to do your work. 

The practical reality is that anyone in India who can spell Java already has a job.  When we were first doing interviews I remember one particular period of time when there were two of us doing interviews continuously for two weeks straight without finding a single candidate worth bringing back for a second round.  Admittedly I can be a tough (and technical) interviewer, but I’ve literally interviewed thousands of people over my 18 years in the industry and I’ve never had a tougher stretch.  It reminded me of the internet boom years when everyone who had ever been a system administrator was suddenly a programmer and when you did find someone really good they wanted 3% of the company and a signing bonus.  The only difference is that the current Indian market is ten times more difficult.

The really sad part was that we weren’t interviewing newly graduated students (freshers) we were interviewing experienced candidates who were currently working as programmers; yet less than one in five could write a loop that counted from one to ten in ANY programming language.  Some of these people may be working on your project as I type.

Ultimately we were forced only to interview people from the elite schools of India (IITs and the former RECs) in order to find a sufficiently high percentage of reasonably solid candidates to be able to wade our way out of the sea of me-too “engineers.”  Even with this approach our hit rate for finding good engineers was much lower than I would have expected.  It’s not that good candidates don’t exist from other schools it’s just that you have to interview too many bad candidates to find the really good ones.

As it turns out my experience is not unique.  Interviews of HR managers in India (Indians) show that most feel that only seventeen out of every hundred new engineering graduates is suitable to hire.  In other countries this number is closer to one out of two.  In addition there are not nearly as many engineers as promoters would have you think.  As it turns out there are almost as many qualified engineers in Germany (population 83 million) as in India (population of about a billion).  This data all comes from McKinsey who would be more than happy to help you outsource to India so if anything the bias is towards making India look better.

A market gone mad

The problem is most emphatically NOT that Indians are bad engineers.  I have hired some truly great (world class) engineers here, but they are very hard to pick out from the sea of less than stellar candidates.

The problem is purely economic.  The demand has outstripped the supply for good engineers and as a result people who have no love for code (or even any like for it) have rushed in to fill the gap.

There are jobs for which almost anyone can be trained and the job will get done well enough.  Writing software is not such a job.  There are also people who can be trained to be reasonably good programmers even without a love for it, but these people are not common.  The market does not care about such considerations.  People can and do fill the demand as salaries go through the roof.  What they do less well is actually fill the need that the job represents.

Just one track

One of the other really difficult aspects of finding quality talent is that a very small percentage of senior engineers have chosen to stay technical.  Instead, many choose to move into management in one form or another.  This makes the market for engineers with more than five or six years of experience really-really tight since the “boom” isn’t old enough to have created a large pool of engineers with more experience.  More experienced engineers do exist, especially a fairly sizable group that lived in the US and has returned to India, but the demand curve for the best of these is such that they may get paid as much as ten times what a fresh graduate gets paid.  Pushing salaries almost to the point that they are dollar for dollar comparable to engineers in the US (although still not reaching that level).

This has important implications for teams doing code in that they are very unlikely to be staffed by experienced people but they are very likely to be managed by former coders who may (or may not) still be good at writing code.  This creates some very off team dynamics unless the manager is willing and ABLE to put back on the lead developer/coach hat in that there is no one left to train and mentor the younger team members.

BPO correction

The only really good news for those looking to hire in India is that BPOs and other non-IT professions are starting to attract people back out of the IT ranks.  This is great since these jobs provide alternatives that can make more sense for people who are not really good at software engineering.  This will continue to drive engineering salaries upwards, but that is probably good too as it will act to constrain demand to a reasonable level at some point as companies choose to outsource less development work.

The problem is that while markets are efficient in this way they are far from quick and efficient.  To me, standing where I stand, it looks like it will continue to be a very tough labor market for those wishing to obtain quality engineers in India.

Talent matters

All hiring ultimately includes some degree of luck; even if you pay extra, add a high degree of rigor and work the entire hiring process you will get a range of skills.  The best you can usually do is to increase the proportion of top flight people and greatly reduce the proportion of less talented people.  This matters a lot, and I’ve always felt that the first and most critical aspect in building quality software is having quality people to do the work.  If the pool is badly diluted, however, the cost and time required to find those people can be excessively high.  We were willing and able to do this, but most companies do not take hiring nearly so seriously when they send work abroad.  If you are not willing and able to undergo such a rigorous process then India is a very bad choice in today’s market; consider NOT doing it or perhaps try the Philippines or Hungary where the talent pools (I’m told) are much better.

Remember, just about anyone can write code that just about no one can maintain but almost no one can write code than almost anyone can maintain.

footnote:I updated my thoughts on this in a later post.

15 Responses to “Finding coders on the subcontinent”

  1. Subbu Says:

    You sum it up quite rightly. That’s the best summary I have read about Indian outsourcing, talent pool and the prevailing recruiting scene.

    Another problem with the elite school candidates is they seem to think they are above the “rest” and try to downplay real world problems. Though they are a intellectually above the “rest”, it’s a bad attitude in a team setup. This makes some of them unemployable.

    I have been trying to start a small start-up and was looking for suitable candidates. My internal circles consisting of friends and former colleagues have been a great pool to find a few candidates. I realized this is the best way to recruit. But I still fell short of one coder. That’s when I started getting in touch with a few IISc’s. A couple of them even refused to talk! One of them downplayed the whole idea.

    I was willing to share the start-up’s share with these new candidates. But they seem to lack the entrepreneurship and the foresight.

    So I am back to my internal circles.

  2. Code Craft » Blog Archive » The Indian bubble Says:

    […] Finding coders on the subcontinent […]

  3. Sharninder Says:

    I agree with you completely. But have you ever thought of all this from an “engineer”’s point of view ? There are a lot of good engineers coming out of mediocre institutes who are forced to work as manual testers and QA guys even when they know thats not their calling. I’m not saying QA engineers are bad, I’m one !, but it requires a different mindset which these engineers don’t have. And I’m sure they would be excellent as software developers. Of course, such engineers are equally hard to find and they are more often than not employed by MNCs paying astronomincal salaries … I am one ;)

  4. John Says:

    Finding programmers at any level is a huge task if you dont work for any of the big companies in India. The mindset of a good programmer is that he would want to work for the big companies since that would give him the opportunity to go onsite or work on the so called high visibility projects that would get him/her good exposure.
    Then there is this problem of candidates with fake resumes. Many engineers do some non-descript java courese and believe that they are industry ready.They borrow projects from their friends and prepare their resumes. These candidates would not be able to understand the basic nuances of software engineering since they would not have seen the inside of a software companny.

    One suggestion here would be to have the prospective candidates to take a test(java or whatever) which checks their basic awareness about the subject on which they have to be interviewed. This would weed out the fake candidates. I agree that the candidates would find ingenous ways to cheat and do well in the test.

  5. KnownSense Says:

    I used to work for a large MNC in India. By education, I am a non-technical person. But I had a whole load of hobby coding experience. I ‘ve never thought that I would program for a salary since I didn’t think I was professional enough, although I can write loops :) . Coming back to the point, at this MNC were senior engineers who weren’t able to figure out how to really simple issues, solve problems or make decisions about technology. I used to be amazed that they charge a premium for “solutions”.

    Quite a large part of the problem is because you are faced with salary coders. They will code, pass time, and sit around for a salary, even if there is no work. If you do need to find good passionate coders, it helps to find out what their hobbies are too. Quite a few of the enthusiasts I’ve met have side projects that they have going in their spare time. Have you tried the Indian LUG mailing lists?

    The funny thing is you will never hobbyists and/or code lovers at interviews, because the HR monkeys and recruiters forwarding the resumes to you will immediately weed out the hobby coders because of the uncharacteristic nature of their resumes.

    As an aside, you probably need a resume spam filter. You should see this: http://londonmiddleware.org/chaff/ .
    It’s a resume spam filter based on the CRM 114 (CRM114 - the Controllable Regex Mutilator).

  6. Kevin Barnes Says:

    KnownSense: I agree that the screening process makes it hard for people without a “proper” educational background which is a serious shame. Of the top five coders I’ve ever met one of them has no university background, two are from “top” schools and two are from ordinary schools. Being a good coder is a lot more about where your heart is than where you learned your craft.

  7. Anup Says:

    I believe the problem might be because of your pay package offering and/or work ethics in your firm. My younger brother, he completed his BSc and has been a coder in C and C++ and Assembly since childhood. He tookup java a year back and took the Sun exams scoring 90% after a month prep. After 6 more months although Java sort of become his religion as well, it has been tough getting a good job, one which he deserves. Unless he moves to Bangalore (which ofcourse he may do after few more failures in Bombay) it is not easy to satisfy thirst of writing good codes among better people for best architects. To tell you the truth, the problem is with those who don’t have the talent of ‘picking right people’ rather than with ‘the job seekers’.

    I bet you got one down here.

    Anup
    Java and XSL Coder (few years)

  8. CodeManager Says:

    Good post, Kevin. I have faced similar issues while hiring for my previous and current employer. Its difficult to screen, but not impossible. If you are determined to stick to quality and have patience to do so, you will be rewarded with super people.
    I have seen, everybody (including my distant relatives son) want to jump in Software for money and trip to ‘abroad’. It not wrong, except that these people may not be able to produce quality code. Motive makes lot of difference.
    The problem is compounded by the fact that the biggest software houses in India recruit people en masse. So how are they still going strong?? Every industry needs somewhat dumb people to work at the lowest level and some brighter ones to guide. Brighter ones of those at the lowest level quickly move to the next level.

    If all worker are smart, who would be doing the dumb work (which is in abundance)?

    If you are a smart interviewer, you can smell the passion and enthusiasm then and there. Ask practical problem questions, rather than text book questions. Once you get couple of smart people, put them for interviewing. Most smart people would detect and avoid fakes.

    In the end, India is like a huge warehouse. You WILL get what you want, although you have to give a good rummage. The mantra is to match job with skill and not the other round.

  9. Amin Adatia Says:

    Why would I want a job as a coder? What is wrong with doing the Design?

  10. Anmol_from_USA Says:

    I completely agree with Anup.

    It was my first hand experince when I was in India, even if not in software field, but how difficult it is to get job!

    1.) There is sheer dirth of talent to find right people.

    2.) Plus ‘networking’, if you have ‘proper’ network, a well below average person can get nice well paid job!

  11. Kool Says:

    But I also find the kind of programmers without any drive for doing good programming or minimal skills to do so here in US, and some of them are my colleagues….

  12. Jijo Says:

    I agree with knownsence…

    the HR process screens out a lot of potential candidates:
    1- If you put something odd as your interest such as ( illustration, web design, philosophy)…then
    they will weed you out.
    2- HR people do not understand the technical environment or the skills required and the type of
    personality required for technical position. Most of the time you will find that HR people
    pick socially candidates based on their personality rather than their knowledge and ability to get the job done.

  13. quasi Says:

    Picking up good people is an art. Very underplayed. If you refuse to work with morons, most likely the people who you like to work with will also not really want to work with morons. A little bit of patience and lots of hard looking, you will have a non-moronic group of people. This group can be 10x as productive as compared to the “usual” industry “standards”. But “management” most of the times needs to “scale up” pretty fast, so you end up not looking hard and making compromises and then cribbing about the quality of people.

    sigh

  14. Ramki Srinivasan Says:

    (Simple yet effective spam protection mechanism)

    First of all congratuations on a most excellent blog.As a NRI,these articles have been the most well-thought out articles on the Indian technology scene that I have seen.

    I actually arrived at your blog by googling for “Indian Bubble”.Nobody has yet called it that but India is definitely experiencing a ridiculous exuberance in housing,employment to the detriment to increased/basic standard of living.

    As you mention,the quality of Indian coders on a percentage scale is extremely poor.It is a huge indictment of Corporate America that managers would outsource work to Indian programmers who clearly just take a 3 month course and handle mainframe systems requiring years of experience.

    I currently work with teams of database administrators and coders who still code with 15 years of experience.(My CTO still codes.Although I think it is an aberration for CTO of a 100 million dollar company to code).In India it would be considered almost shameful.I have seen people with very poor communication skills just by virtue of job attrition ,become project managers with 2 years experience.So who is doing all the coding?

    As someone who has degrees from both India and the US,I dont think the education system is too bad.I think it is non-enforcable.It is a lot of rote learning but I was surprised to know the breadth of textbook knowledge we had.As far as practical industry specific knowledge goes,it was useless but the same goes for most US degrees go too.The US degrees impart a level of independent thinking that stands you in good stead.

    On my trips to India,I still get inderculously asked “You still code?” as every 27 year old is a project manager.Another refrain is a sense of superiority how Indians are better coders than Americans and the future belongs to India.I know some extremely bright Indian programmers and some extremely bright American/Eastern European coders and at the end it comes down to personal knowledge,discipline and smarts.

    As with every bubble,if it seems too easy,it is wrong.I definitely want India to succeed but that can only be done by not shooting the golden goose.Unfortunately,I fear too much overconfidence and hubris have already done the deed.

  15. I Am Useful Says:

    I am an unemployed American software engineer whose job was outsourced
    to India almost three years ago. Kevin, I disagree with your very
    premise of ‘equalizing’, no right to job, etc. Part of the meaning of
    patriotism is to participate in and support your local economy. That
    means working locally, hiring locally, and buying locally.

    I wish I could even find work outside my field, but unfortunately, in
    the US one now needs a BA, 5 years of work experience in the restaurant
    and hospitality industry, and 3 professional references just to be able
    to find a job as a DISHWASHER!

    Companies that outsource commit the economic equivalent of high treason.

Leave a Reply