Code from these outsourcing shops is never particularly good. They sell on name, trust and client relationships - the product just has to work, and it usually does. They can't attract and keep top devs, who don't want to work on boring client projects, and won't pay to get them anyway.
They're inevitably junior-heavy, supervised by 2 or 3 year seniors, who do a reasonable job of keeping things in line but there's only so much you can do. The code ticks all the boxes for testing, etc, but is far from inspired and usually built with the present, not the future, in mind. There are uncomfortable organisational incentives to not over-deliver in quality - wouldn't want changes and maintenance to be too easy, and it's not like the client is tech-savvy or they wouldn't be hiring a "name" shop in the first place.
Most really good programmers who know their value (that I know, anyway) are working for product companies, where quality is visible, valued, and rewarded, or are highly-paid consultants/freelancers.
They're inevitably junior-heavy, supervised by 2 or 3 year seniors, who do a reasonable job of keeping things in line but there's only so much you can do. The code ticks all the boxes for testing, etc, but is far from inspired and usually built with the present, not the future, in mind. There are uncomfortable organisational incentives to not over-deliver in quality - wouldn't want changes and maintenance to be too easy, and it's not like the client is tech-savvy or they wouldn't be hiring a "name" shop in the first place.
Most really good programmers who know their value (that I know, anyway) are working for product companies, where quality is visible, valued, and rewarded, or are highly-paid consultants/freelancers.