Early in 2009, we moved to India for a while after having lived in Malaysia for over 6 years. This was also the first time I really got to work in software development in India (not counting my very first job which I no longer count in my experience).
Now, I worked at a great place and learnt a lot in the year I was there, not to mention many new friends I made. But there was one thing I realized while there that will make me think twice about moving to India again. You see, if you are working in a services company and most of the time you are working for clients in Europe or US, the main reason they are coming to India is to save costs.
What that means for you as a programmer is that there is an upper bound on how much the client will pay for you – be it USD 25, 35 or 50. Past that limit, it does not matter how good you are, your company cannot bill you at a higher rate. The reason being that most of the time, for the client, you are basically a guy with 6 years of experience in technology X (or 8 year or whatever).
Of course, there are developers in India who are getting paid the same as the developers in US. But not in a services company. They are probably working in certain product companies, or through their existing network, or on their own startups. You can get what you believe you are worth only if the client is hiring “You” and not just an “X years of experience” guy. This is something I will have to think really hard about if I ever move to India again.