I've worked with outsourcing both to India and Eastern Europe in three passed companies. Your comment of ratios of "good programmers" to not, particularly in India is spot on.
A lot of outsourcing to India started with Enterprise Java applications, MVC/CRUD type stuff that was simple, but also time consuming. So, it made sense to move the tasks that didn't take advantage of your strong programmers overseas to help with the burden. A number of outsourcing firms WiPro, Global Logic, etc. started with this model. Many, even well into the mid/late 2000s worked on these same Apps. It was their domain of "expertise". Teams were generally set up to have a "good programmer" as a lead/architect that was often your main contact and was responsible for one or more junior developers doing the work. Even if you had a strong set of requirements and a good relationship with the lead, implementation could suffer from the "chinese whisper" effect -- what you request gets distorted the further down the chain it goes. For CRUD apps that weren't performance dependent, this was fine.
As the push for outsourcing continued, from my experience, these formerly Java Enterprise app shops were asked to do more diverse projects. The majority of the ones I had to work with were a failure -- if they kept the same team structure -- i.e., remote lead who oversaw remote juniors. The biggest cause wasn't necessarily one of background, it was more turnover and drive. The churn was very high and developers were asked to do something boring or beyond their skill set (or, the still lingering issue of sticking to actual requirements).
One prior startup I was at outsourced non-core monitoring stuff that was a reasonable success. However, a local executive was all hung ho about outsourcing more core technology until a couple of us put our foot down and indicated the unaccounted overhead of the local work needed to fix things. That stopped that angle. At the same time, we had amazing success outsourcing targeted pieces -- an arm assembler optimization of a key piece of crypto code, being one.
The reason for the success? The coupling of a bounded small project that was sent to a team with that relevant skill set. This is the key area where outsourcing is successful. Bounded projects, targeted to a team with the relevant skill set, and good communications between them.
Where outsourcing fails is the generic skill set approach nd overhead that most of the big firms employ. Local management just sees the reduced dollar and doesn't account for the extra time -- to fix, to integrate, and to iterate on deficient deliverables.
This isn't an india / US issue. This is a good approach regardless of the topic. It just happens that India was the envouge outsourcing destination and the majority of US Management solely focused on the assumed reduced cost.
A lot of outsourcing to India started with Enterprise Java applications, MVC/CRUD type stuff that was simple, but also time consuming. So, it made sense to move the tasks that didn't take advantage of your strong programmers overseas to help with the burden. A number of outsourcing firms WiPro, Global Logic, etc. started with this model. Many, even well into the mid/late 2000s worked on these same Apps. It was their domain of "expertise". Teams were generally set up to have a "good programmer" as a lead/architect that was often your main contact and was responsible for one or more junior developers doing the work. Even if you had a strong set of requirements and a good relationship with the lead, implementation could suffer from the "chinese whisper" effect -- what you request gets distorted the further down the chain it goes. For CRUD apps that weren't performance dependent, this was fine.
As the push for outsourcing continued, from my experience, these formerly Java Enterprise app shops were asked to do more diverse projects. The majority of the ones I had to work with were a failure -- if they kept the same team structure -- i.e., remote lead who oversaw remote juniors. The biggest cause wasn't necessarily one of background, it was more turnover and drive. The churn was very high and developers were asked to do something boring or beyond their skill set (or, the still lingering issue of sticking to actual requirements).
One prior startup I was at outsourced non-core monitoring stuff that was a reasonable success. However, a local executive was all hung ho about outsourcing more core technology until a couple of us put our foot down and indicated the unaccounted overhead of the local work needed to fix things. That stopped that angle. At the same time, we had amazing success outsourcing targeted pieces -- an arm assembler optimization of a key piece of crypto code, being one.
The reason for the success? The coupling of a bounded small project that was sent to a team with that relevant skill set. This is the key area where outsourcing is successful. Bounded projects, targeted to a team with the relevant skill set, and good communications between them.
Where outsourcing fails is the generic skill set approach nd overhead that most of the big firms employ. Local management just sees the reduced dollar and doesn't account for the extra time -- to fix, to integrate, and to iterate on deficient deliverables.
This isn't an india / US issue. This is a good approach regardless of the topic. It just happens that India was the envouge outsourcing destination and the majority of US Management solely focused on the assumed reduced cost.