More than three years ago we worked with a US client who besides outsource some part of their work to us, also employ full-time local American developers. I know these developers personally and I know they are superb - not only the code is awesome, but also they are creative, initiative, and have a strong sense of discipline and responsibility.
We were just starting to work Ruby on Rails for a few months then, and I wonder when and whether our developers can achieve that level, I gather our then few developers and asked them, "How long do you think it'll take for you guys to be on par with American developers?"
Some are confident to say a few weeks, some say a few months, and some pessimistically say a year.
I cant help but think, with all the differences between a developed and developing country, such as standards of living (childhood nutrition, health care), education quality, government support, and culture, can an Indonesian programmer be better (on average) than an American programmer?
To be honest, and it may be obvious, on average a programmer from a developing country cannot match a programmer from a developed country. A fraction of developing-country programmers will be better for sure - but only a fraction.
Over the years we thus devise and keep perfecting a process that will make all of our developers better than not only the average American developers, but also the above-average American developers.
The process involves hiring the best and continuous training (we have currently more than ten training modules ranging from Ruby on Rails to Iphone to HTML to Asterisk), and a format of organizational structure and job procedures that promote superior productivity and quality. An example is close monitoring by Project Managers towards developers in all aspects from code quality to communication and managing expectations.
And thus I am confident enough to say now that within the time-base service we offer our customers, all of our developers are better than or at least on par with the above-average American developers.
After all, that's what matters to client in a time-base project setting. For example, if outsourcing is cheaper by 50% but the project takes 50% longer to complete, then outsourcing does not actually save money for the client - it merely distributes the same project cost over a longer period of time.
***