How do you justify this blanket statement?
How do you justify this blanket statement?
Because talented engineers don't want to work on the typical things that get outsourced, such as maintenance of legacy applications, helpdesks, implementation of dull ERP projects and so on. Therefore on average the quality of programmer at an outsourcing company is lower than at a real product company, and this would be the same at any outsourcing company in any country. It just so happens that some locations are cheap enough to make hiring large numbers of low quality engineers seem more attractive than fewer, high quality engineers payed sufficient salaries to attract them.
another assumption without substantiating evidence.
See the comment from @pavanred for some context.
There's a lot of implicit requirements that need to be taken into account when writing code: maintainability, security, performance, user experience, accessibility etc. It's better if everything is explicitly stated, but we don't live in a perfect world unfortunately. (My experience here shows that those implicit requirements are often not well executed, particularly when it comes to front-end code, due to a mix of: lacking experience, time pressure, different UX sensibilities).
Obviously, YMMV.
The Indian firm wanted requirements so detailed that I had to tell them where to put the for loops and while loops. It was faster to just write the code myself than explain such easy details.
The job of a programmer is to map the vague notion of what the software should do, which is reflected in the spec, into a concrete, internally consistent set of instructions to the computer.
Eventually I convinced management that even if we had to pay 2-3x for a competent developer stateside, it was worth the money because of the hidden costs of trying to outsource. The work we were doing required someone to be invested in learning the business and the problems we were trying to solve.