Well as a note regarding outsourcing and Indian IT Bellwethers.

I can tell you that you are likely to hear extreme management bashing in this case. But after personally working in a very famous IT bellwether here in India for 5 years, and now in another famous global web company. I can tell you half the people who crib, complain and whine are basically people who expect to get rich by 'getting lucky'.

The most common complain is They didn't give me good stuff to work on, yet when you ask the same people what exactly stops them from downloading <insert their favorite programming language compiler/tool>, or why they didn't work on their favorite database while all of it is freely available on the internet- The answer is generally a blank stare. Tons of automation opportunities exist in almost all projects that these big companies take, yet most people you are likely to meet still expect work to be given to them. I have seen this attitude among all freshers and even among some very experienced people. The fact is most of these people arrive at a software industry after having the heard 'Get rich quick' stories from the 90's while somebody joined a IT services company, went to an foriegn onsite location for 5-6 years, became a manager in 4 years and made tons of money in the IPO.

In fact most complaints of 'Indian IT sucks' generally smells of 'I could not get rich quick'. With no real desire to make a career in software, and waiting to jump to a management role at the earliest is the hallmark of Indian IT. Getting promotions and holding fancy designations is considered extremely honorable. Let alone most technical leads who managed to win corporate politics race, I know- Can't write a 100 line program. Not getting promoted to managerial role by 27 is considered a sign of incompetence, Not being able to go to a foriegn onsite location is considered a sign of incompetence. Its almost like a blind rush for money, money and only money. I know of many so called Technical leads who boast that they don't write code anymore, trying to imply that people who write code or who are good at tech stuff are generally incompetent people not deserving of progress. How do you expect to make progress or do anything big, with this kind of people stacked from top to down?

After doing a lot of analysis, I have finally realized these people never wanted to be programmers ever. They have 0 interest in learning, building and making stuff. They don't have what it takes to make a career in software. These people just arrive at software companies thinking they will get rich very quickly, when they don't, they find every reason under the sun to justify how worse career options in software are. Those who do get rich by usual promotion->onsite cycles, generally go on to become managers and then ulitimately glorified supervisors, who seem to hold very high opinions about tech without knowing a jack about it. Regional and liguistic politics is too common, being the managers best man and bootlicking helps to get better appraisal ratings, promotions and onsite chances.

Having said all this, I still meet some very good technical people from whom I learned a lot(In the same big companies). I continue to meet such people.

As a last note, the rewards vs efforts system is all messed up and needs immediate fixing. These companies need to bring back meritocracy.