I was asked a question by a veteran of Slashdot - and the only justice I can do is by posting to my journal. The question was, why was I railing against outsourcing while I was a beneficiary of the same outsourcing.
To answer your question, without outsourcing, I'd definitely be in India. No question about that. And I am definitely grateful for the wave that brought me into this country. If not for the US, I would have either gone to the Middle East (the rage in those days) or Australia (many of my colleagues from that era went South). The other possibility is that I would have remained a consultant, traveled all over the region (whether my state, or the country or the Asian region or the world) depending on which company I worked for. So no matter - I would have been a successful IT consultant - just that the location would have been different.
But you have to remember that in the 'bad old days' when I came to the US (mid 80s) the outsourcing was to bring cheap labour INTO the US. That wave continued and enlarged and has now flowed over into the current dilemna that we face: jobs going overseas, while perfectly good technical people are available in the US to do the same work.
It might look paradoxical, might even be thought of as being ungrateful - but the India I left is not the same as the India today. 25 years is along time and most countries show 'progress' of some sort. India has managed to bootstrap itself to become a self-sufficient, thriving, self-sustaining economy, which is not wholly dependent on outsourcing or exports. Of course, exports matter - but it is definitely better to be in the Indian boat than in the Chinese or the Japanese boats - with their outsize dependence on exports, while neglecting the domestic consumer (who either cannot spend, or would prefer to save).
I remember that the dilution of quality had already begun (which is why I was able to come into the US - but I digress ;)). Before 1986, only IIT engineers, IIM MBAs and other engineers could become software engineers. I ws one of the first non-engineers to join my company. Along with me were many others, including a Chartered Accountant!
This dilution has continued unabated. Fast forward to when I was working for a company looking to outsource some of our work to India - we short listed 3 companies and gave them a task, including access to our source code, to see how they would accomplish the goal. Would you believe that 1 out of the 3 could not even give us a workable design? The remaining 2 managed a design, but when it came to producing Perl code that would run, only one of them managed to deliver. And even this team did not use the objects that we had revealed to them and mentioned were needed to adhere to our internal standards (objects to log stuff, to access the database, etc. fairly basic stuff). They were all fantastic at talking. The first team had even set up bi-weekly video conference calls.
Later, when I started looking deeper, I uncovered the following issues:
i) The number of engg colleges in India have skyrocketed Correspondingly, the degree mills have lowered quality of people joining, and the engineers being produced. The people that used to be capable of just BSc in my era, were flaunting engg degrees.
ii) Secondly, salary inflation. Candidates wanted to be junior developers for 6 months, senior developers for another 6 months and then project managers. To this end, they jumped ship, often during the day itself. This has led to minimal business knowledge retention with most people interested in moving on to establish careers. The consequences on client companies in the US have been devastating.
iii) I started to look a little deeper at some of the resumes that were coming my way, and noticed a peculiar phenomenon - lots of degrees and experience, but little to no substance when you talked to the candidates. Technical skills were there - but practical skills, like thinking to solve a problem, were absent. Later I heard (and this is hearsay, but very strong hearsay because the people talking were good acquaintances of mine) that people were being brought in by the boat load, regardless of their qualifications.
iv) Lose H1-B regulations and immigration policies. If you recall, the H-1B quotas used to get oversubscribed until 3-4 years ago. (Side note: My nephew (who studied in the US and got his Masters) was one of the lottery rejects! He had to wait until the next year to get his H-1B). But the CIS (erstwhile INS) seems to have caught onto the shenanigans of the cheaposourcers - who bring in warm bodies to fill reqs. I have heard of people being rejected because at the immigration counter, they fail a (e.g.) Java interview. These days CIS also requires that a person be available at the client site, via a telephone that can be reached through the client switchboard (using a name, instead of a direct dial) that can vouch for a person coming into this country on an H-1B.
You would think that people would learn from their prior mistakes. But the > 90 day blindness persists. My present company has taken over the source code for their software package that provides a service to other like clients. They are thus competing with the people that provided them with the software - but are now offering a service bureau solution. This was in 2005 or thereabouts. Their biggest complaint with the source code is that it was written very poorly because the s/w concern had outsourced pieces of the code to different countries and the various modules didn't talk to each other efficiently. So what are we doing now? You guessed right! The development has been outsourced to an Indian company with an onshore/offshore model. But the key difference is that there is an onshore code review that is done by employees or local consultants no affiliated to the Indian company. This has led to some good changes.
Looks like we are on a 'righter' path now - but the wholesale exporting of IT jobs from the US to other countries MUST be stopped.