This is the usual ebb and flow of offshoring in the tech industry that's been going on since the 90s.
There has never been a scalable arbitrage for tech talent by going over to another geo, and there won't be one in the foreseeable future. What US HCoL talent gets paid is unfortunately the fair and natural market rate for that caliber of talent, at least if you need to hire more than like 10 people.
Companies in high income areas have two options for outsourcing:
1. Just go for the cheapest salary, quantity over quality style.
2. Find a replacement that has a comparable level of skill, experience and knowledge to the local talent they have or would need.
Now for (1), there is almost no floor. You can get devs for five bucks an hour. For some people, it's the only way they can make any money, so they take it.
For (2), people will gravitate towards earning 10-30 % less than a local equivalent developer. Low prices drive up demand, and since there isn't that much supply of strong candidates, that drives up their fees. At the same time, the employer pays a bit of a tax in terms of time zone, proximity and cultural differences, which introduces overhead, so it can't quite reach the local salaries. But it can get pretty close.
A lot of the outsourcing horror stories are (1). A lot of the actual success with outsourcing is, in my experience, (2).
I believe (1) is primarily responsible for these ebbs and flows you mention. The feedback loop for software development (in terms of whether it pays off economically) are _long_. That seems to force history to repeat all the time, because decision makers rarely see the consequences of their actions. The incoming generation of leadership did though. And then the generation after that didn't.
1. One $unit of $resource from supplier A is cheaper than from supplier B.
2. The price difference is sufficient to allocate a certain amount to dealing with quality issues (from lower efficiency to lawsuits).
3. If it turns out the quality issues are higher than expected, switch to supplier B.
The thing is, this doesn't work with software development. (2) has that pesky long feedback cycle. (3) typically is about equivalent to starting over from scratch.
First, my experience with devs at mid level companies is that the average dev ranges from competent (as in, can work within an existing framework to accomplish tasks), to incompetent (cannot do the same consistently), with there being a top 10-20% who are truly good (able to deliver complex high quality software from a blank sheet, capable of working on complex existing systems meaningfully etc.). This applies to all companies (including ones in the US).
Second, at high level companies, there's lots of European talent (usually in West Europe) - these people are as good as their US peers (by definition, and usually has been my experience), but make less than what you would take home in a mid level US company.
>Second, at high level companies, there's lots of European talent
Lots is subjective. The problem is the scale. You can easily hire 100 great devs in London over some period of time. 10000? Maybe not. It would take you too long to pick them up.
There is friction in turning fresh graduates into experienced developers. There is friction in hiring people in a region where you are not operating already. There is friction in using additional middlemen. There is friction in learning to do business in a new situation or in a new culture. But the friction can be overcome – in the long term and when the scale is large enough.
In no small part because if you look at that talent you’ll notice that… they’re mostly not natives to those areas. i.e. the highly paid in San Francisco are mostly immigrants from LCOL countries. Generous immigration policies ensure it. If immigration policies do change, you might start to find tech top talent in other geos but for the most part the people they really wanted to outsource to in the first place have already moved next door.