To anyone who has lived through various attempts to 'outsource' software development to various countries over the past two decades this is a sad joke. There is a reason most (possibly all?) of these projects fail. For quite a while the people who were capable of performing the work ended up migrating to a few locations; now that they are spreading out a bit in a post-COVID world we are likely to see more work move out of specific geographic locations, but the work is still going to be done by the same people. There may be a small bit of price competition from lower COL areas, but those same coders will also be able to compete for a wider range of available work so that will maintain the higher price for labor.
You'd think that outsourcing would be all companies would be doing by now if there were indeed legions of capable software engineers willing to do just as good a job for a fraction of the price. That still appears to not be the case, despite remote (and so international) work becoming more commonplace with COVID.
The failure of software outsourcing is really quite interesting, especially since telework is working decently well. That seems to eliminate the “remote work doesn’t work” objection.
It was not for lack of trying. The management class pushed it very hard. There are still many firms trying but it’s not really panning out.
From what I have seen the answer is that good software engineers are globally scarce and the good ones in India or Eastern Europe make enough that outsourcing isn’t that profitable once all overhead is included.
“Insourcing” is becoming a bit of a thing. You can get some salary benefits outsourcing to lower cost domestic places like Nebraska or Kentucky and not dealing with language, time zone, international currency exchange, legal differences, or other headaches. These folks can also travel to your office for an in person meeting in hours not days. Oh and their power grid and broadband are reliable too.
The jobs that have been most successfully outsourced are low to moderate skill manual jobs where basically what is needed is huge numbers of cheap hands.
The fundamental issue isn't that outsourcing doesn't work, it's that outsourcing is seen as a way to get cheap labour. And cheap labour isn't high quality labour.
Software development talent is highly mobile, and thus the best people are expensive everywhere in the world.
If you go to a cheap outsourcing company in India who can't afford talented staff, then why are you surprised when they produce poor quality code ?
Let's look at a market where local outsourcing works well: Web development. A huge amount of web development work in outsourced to small web development shops, both by large companies and small companies, and by and large the companies that outsource are happy. Because companies aren't outsourcing to cut costs, they're outsourcing because they don't have the in-house talent and therefore are willing to pay for expensive outsourcing options.
If they decided to go for a cheap local web development outsourcing option (plenty on gumtree/craigslist), they'd get worse quality and be unhappy about it.
Countries like India and China may well have separate issues due to cultural or language barriers, but they'd matter a lot less if the people being employed were talented in the first place.
They could do outsourcing today, yesterday, and 10 years ago just as well. Nothing changed, structurally or technologically (covid is neither), for outsourcing to work better now than it used to be so far.
There will always be companies who need to learn on their own how $20K developers are different from $200K developers and what investing in either means 10 years down the road.
By the way, good developers with good English and good communication skills can easily earn MUCH more than $20K even today by working remotely. Already today in most countries there are almost no barriers to earning multiples of their national averages other than one's own skills and attitude. And yet dev salaries in America are as high as ever.
The industry seems to be growing faster than the labour force even despite globalization, and I don't think that trend will reverse anytime soon. We're still shoving software into more places, industries, and processes, and making it all more complicated.
Overall I agree with you, and my experience has been similar, but I think the comparison with outsourcing is not correct.
I would argue that outsourcing failed primarily due to companies trying to farm out the coding to uninterested entities whose incentives did not align well. Not necessarily because the foreign workers doing the coding were bad.
Back to the guy in Argentina -- I imagine that he/she is actually in a reasonably good position as the amount of remote work increases. Indians not so much, because they are 12.5 hours ahead (of Pacific time). Argentina is only 4 hours ahead, which makes for a lot more overlap.
So I think the field has leveled a little bit in that sense, because if you have a remote developer in another state, they are not very different than one in another country who happens to be in a similar time zone. The other big barrier IMO is communication, so someone in Argentina who is not merely fluent in English but speaks it very clearly could be in a really strong position.
I think that on the contrary, History has proven over the past few decades that wide outsourcing doesn't work. Companies tried it in the 90's and it was a disaster. This is why software devs in the US can command a salary of $100k+
Outsourcing stories are interesting to me for a couple reasons.
(1) Why do people think subpar programming from outsourcing companies will always hold true? The more business/experience these shops acquire the more likely the engineers develop better software practices. The developers writing crappy code have an opportunity to learn how and why it is bad. Over a long enough period the environment will eventually produce excellent developers I would argue.
(2) What happens to the displaced talent? If big corp decides to slash its talent and compete in the software world with the equivalent of a zerg rush (many outsourced engineers versus one onshore engineer), what if they are really sowing the seeds of their own destruction? If amazing engineer with business domain knowledge and enough to comfortably live on savings for 6-12 months is laid off, perhaps they decide to join a competitor or even start their own competing software?
It's said that more than half of all software projects fail, in that they're canceled, fail hard, or severely under-preform/under-deliver but victory must be declared. Many organizations can get by for years mostly failing in software development.
For a while I've wondered if the true attraction of this sort of outsourcing is that it's a cheaper way to fail.
For every outsourcing success story it seems there are two horror stories. I know at my prior employer we hired a development team in India for a year and it was a complete disaster. Not only was the work shoddy and buggy, we ended up paying more than what we would have had we just hired a good local developer. They ended up charging us 300k for the year. We were supposed to get a 25 developer team for that 300k but the work they turned out could have been easily done by two decent experienced State-side engineer and done a lot better too. I had to spend 6 months rewriting large chunks of their code, it was just terrible.
From my experience it seems really hard to get good talent overseas. And if you do find good talent, they usually want almost as much a good local talent.
Corporations consistently try to outsource everyone’s position. It’s an ongoing process.
Meanwhile I just replaced a software vendor in China with one from the US. 70% more expensive, but also cheaper in terms of rework, code quality, deep understanding of the subject matter and care. Oh, and meetings during sane working hours are understated.
Who cares? Outsourcing has been a big stick waved by management to scare employees for decades now, but its had pretty mixed results. The reality is, at least for programmers, there isn't enough local talent to go around. There's plenty to be found overseas, but companies are still clearly hesitant to go after it. There are cultural, language, governmental, and time-based issues that can't be ignored. Perhaps someday we get to a point where companies are willing to ignore all of that and ship everything overseas, but I doubt it, and in the mean time, there is absolutely no reason to not call their bluff.
This. I've outsourced to India, Uruguay, Poland and I think Ukraine. Every single line of code from outsourcing has been thrown away. That was from finding a dev shop and them leasing one of their "devs" for x per hour (x was never under $20).
When I learnt my lesson, I thought about it and removed the indirection. Since 2011 I've only hired directly, but still remotely. I explain exactly what quality level is expected and that it's not a rush to finish.
The countries I've hired from still aren't high wages countries and the initial wages paid were the same as in my unsuccessful attempts. The quality output is far higher, and it's been worthwhile re-writing problem code rather than giving up and trashing it.
I don't think it's the country or the wages that are the problem, I think it's the indirection of another manager, plus the use of another company who often stacks (cheap) junior devs up and their only measure of success is whether their clock hours are full at the end of the month. You just can't expect that company's business goals to align with yours, especially when other companies using their services are often very inconsiderate about dropping the contracts with virtually no warning, that makes their planning really hard.
This is exactly why the outsourcing craze fizzled out for the most part. I remember when I was in school for CS in 2002/2003 there were people who would tell me that I was earning a useless degree, as all programming jobs would end up overseas.
The bottom line is that outsourcing looks great on paper but then just murders you with hidden costs. Delays to market, code maintainability, number of bugs, etc all go the wrong way once you outsource, but none of that is quantified on any C-level report.
I think most companies that try offshoring dev work (and there have been many) reverse course fairly quickly, for a variety of reasons. However, there were a lot of devs being paid to do things that just didn't need doing, either because it was 10 companies trying to do the same thing, or because it was trying to look good for an IPO rather than solving someone's real problem.
There is still lots of real, useful programming work out there to do, but it will take some time for the industry to pivot back towards working on real problems.
And the quality of that code is usually crap, so you get what you paid for as the more talented of these offshore workers will go to the US or another country with high salaries. This quality may be "acceptable" in enterprise contexts, but in small business or selling direct to the customer it's still much better to hire local devs.
There is also a project management overhead cost to outsourcing that must not be ignored and is prohibitive for smaller companies.
If we want to get anecdotal, across many different companies the only place I've seen outsourcing work is in a huge enterprise and only with several expensive and highly trained local devs cleaning up the crap. Otherwise it's just not worth it. AI will take our jobs long before outsourcing does.
From all anecdotal reports of 'not working' I noticed all think of outsourcing as something they contract a middleman foreign company for, rather than hire individual remote developers. That company then hires locally. Then they wonder why it doesn't work. That's because no good local dev wants to work for an outsourcing company like that.
But this isn't so bad: outsourcing used to be merely arbitrage (you made a profit just because you was here and your customer was there, buying on one market and selling on the other - 'free money' in the sense that it didn't require much talent or ability to withstand competition to make).
Now it's just a business just like any other: there is about as much chance to turn a profit operating a U.S. local software development shop or an offshore one. Prices you can charge and your costs will be still somewhat lower, because of all aforementioned factors like time zones, cultural and language barrier, and many offshore locations being legal grey zones where you can't really procesute anyone for say, stealing your secrets or violating your NDA.
Every source of free money ends one day because too many people will try to get it, and this moment has arrived for offshore outsourcing, but it doesn't spell its death.
I've seen the same thing with eastern eu/west asia outsourcing, where arguably they have fairly strong programmers overall, and can put out great projects, but the outsourced ones just suck. I believe it comes down to the same thing as in asia, if you don't really understand the problem and don't think you're gonna be maintaining the code you have no incentive to make it nice.
btw, I've seen the same thing with code in the US that is done by an outside team, it's just not as good as the stuff that you're gonna see internally.
reply