Is a trillion dollars' worth of programming lying on the ground? - <AUTHOR> https://blog.cerebralab.com/Is_a_trillion-dollar_worth_of_programming_lying_on_the_ground <comment><USER2> It seems to be missing a very big factor: culture.

If your goal is to implement some code for, say, healthcare, it is a lot easier to explain the business process to someone who is already familiar with how stuff is done on a higher level. Whenever you hire someone from a different culture / country, you need to start from the basics by explaining the very core of your society.

An American programmer might not be too concerned if a body temperature measurement returns 45 degrees Celcius. Similarly, a patient height of 95in probably wouldn't immediately raise alarm bells for a European developer.

Your offshore developer team might be perfectly capable of writing the code once they understand what to write, but getting them to understand it is a hell of a lot more difficult.

Add to that the possibility that English is the second language for both sides, and things get messy pretty quickly. Not to mention a time zone difference making communication even harder.

<comment><USER3> Another aspect of culture: how one-sided the communication is.

Silicon Valley and Scandinavian cultures are very flat, so it is possible for "the man on the floor" to tell management that it doesn't work to put diesel into a gasoline car.

In authoritarian cultures this would be a mistake as it's seen as embarrassing the management by saying they made a mistake. If you want to continue being employed then it is much better to pretend there is no problem.

Catching problems early saves a lot of money in software development, so a non-authoritarian culture can save a lot of time and thus have a lot higher wage.

<comment><USER4> An authoritarian culture, however, can get work done much quicker while staying with a razor-sharp focus. The whole "democratic" decision-making process takes time and leads to a sequence of decisions spread throughout the time domain, which, taken together, might lead to a suboptimal result compared to what might be achieved by following the steps of an "enlightened benevolent dictator".

<comment><USER5> The problem with that is that dictators usually fail to be sufficiently enlightened or benevolent.

<comment><USER6> Somehow China has been an outlier to this norm, so far.

<comment><USER7> I disagree, China seems to fit right into the pattern.

Mao became undisputed leader. His purges were bad enough that the party decided to implement a 10 year term limit.

Xi removed that limit, and now China is swinging slowly towards authoritarianism. We're still in the early years of his rule at this point. Wait till he makes a mistake and his grip starts slipping, then he will see enemies everywhere.

When someone makes themselves ruler for life, it tells you that their character is not suitable for that position, because they lack the humility to hand over their work to a successor. Because they've decided they can't trust other people's motives and competence.

</comment></comment></comment></comment></comment></comment><comment><USER8> I've worked with outsourced programmers before.

Most of them are talented and a joy to work with. However, giving them work is often a form of programming... they will do exactly what you tell them to do, no more and no less.

For example, unless you describe the tests you want them to write, they may not write tests. If they see a possible refactor or optimization, they won't volunteer to do it. One of the frequent side-effects of this is that the project develops more tech debt and slows down with time.

From the perspective of an outsourced programmer, this makes sense. You're optimizing for efficiency. You're in contractor-mode by default because odds are, your career has been heavily contractor work. You haven't been hired to look at the bigger overall picture and you've never been encouraged to develop the agency to make independent decisions.

The most successful teams with outsourced engineering teams have found ways to better integrate them into the team. For example, I know a few startups with engineers domestically in the US whose main purpose is to interact with large teams of engineers in countries like Belarus. This hybrid approach comes with its own challenges but the cost benefits are huge.

<comment><USER9> Tbf, often contractor developers have tried to do the right thing (e.g. write tests) and been bitten ("I didn't pay for a test suite!"). Individual initiative in the contracting world usually goes unrewarded and is often punished, so you quickly learn to do what you are told, no more, no less. And you have gone the extra mile for deadbeat clients that have left you hanging with unpaid invoices, so why bother wasting potential billable hours?

Which is why I avoid contract work full stop, at either end of the table. It actively encourages mediocrity and decentivizes initiative and effort.

<comment><USER10> Boy, if I had a quarter for everytime I've encountered a contractor or offshore team that did something "I didn't pay for" .... I'd be broke because I wouldn't have any quarters! I see you point in theory but in practice, that just does not happen or if it does, it is very rare.

</comment></comment></comment><comment><USER11> > Programming jobs are silly easy to move around and most of them can be done > remotely.

As long as you start with this hypothesis whatever analysis you do will be wrong.

We do have problem coordinate between teams that share the same hall and the same boss, I cannot even imagine what would happen with complete remote team in Vietnam to save money. It would be just better to stop develop software ourselves.

Now with COVID-19 things are changing, but we must wait a full cycles of hires (read 10 years) before we can really tell. At the moment we are all remote, but the conditions are the same of when we left the office. And on-boarding people seems though now...

<comment><USER12> > We do have problem coordinate between teams that share the same hall and the > same boss

So perhaps proximity is not the issue?

<comment><USER11> The reality I see, is that all of us are overworked / with a lot of responsibilities. So it is easy to miss important emails or details.

As long as we are close to each other, very important things don't get lost.

<comment><USER13> Slack (or similar) seems to be filling this void. The tap on the shoulder, "hey, did you notice this?"

The problem is, you can have 10-20 people tapping you on the shoulder all at once.

<comment><USER14> Yes, and unlike Slack, in-person communication implements a Mutex where someone will see that someone else is talking to you and come back later without requiring any explanation or indeed awareness on your part.

<comment><USER15> Hmm, is there a messenger that has this feature?

Just show a "talking to user @X"/"talking in channel @Y" status the same way Discord shows everyone the game you're playing.

Butts in Seats 2.0!

<comment><USER16> This Show HN from earlier today [0] seems like it might end up with that type of functionality, assuming I'm understanding what you wrote correctly.

[0] [https://news.ycombinator.com/item?id=23405722](https://news.ycombinator.com/item?id=23405722)

</comment></comment></comment></comment></comment></comment></comment><comment><USER17> To toss in a second-hand anecdote: I once asked someone who worked at/with companies screening Africans for diamonds in the rough, smart guys who could do programming but were being paid peanuts, like $10k/year, and paying them a multiple of that for outsourcing, why it wasn't such a great idea, when Africa seems to have so many under-utilized people. He said that despite expectations, they were not much cheaper to hire than alternatives like American programmers on net. While you would think that it would be impossible to not make a profit paying these smart guys $20k or $30k a year when alternatives are like $200k/year, the economics barely worked because they just wouldn't do the work reliably. They would just not show up some days, leave early, do no work, blow off jobs, half-ass the actual work, and so on. By the time you hired enough non-African managers to oversee them and handhold them, you'd blown through your cost advantage, because good managers aren't cheap either. Most customers found it a lot easier to deal with a reliable non-African contractor who would get the job done when they said they would get it done mostly right the first time and would answer emails.

It reminded me of Gregory Clark's 1987 paper "Why Isn't the Whole World Developed? Lessons from the Cotton Mills" [https://pdfs.semanticscholar.org/6152/0798b9dd2c691872d58db3...](https://pdfs.semanticscholar.org/6152/0798b9dd2c691872d58db3914f87dd165a85.pdf#page=2) where he points out that despite Indian labor being incredibly cheap, Indian cotton mills were still uncompetitive with British (and later, Japanese) cotton mills for basically the same reasons. As the saying goes, "you get what you pay for"... The more something is an o-ring process [https://en.wikipedia.org/wiki/O-ring_theory_of_economic_deve...](https://en.wikipedia.org/wiki/O-ring_theory_of_economic_development) , the more skimping on labor is penny-wise pound-foolish.

<comment><USER18> Assuming all of this is true (which I believe), it exasperates me that this is yet another indicator that raising the baseline education for all should be the most important priority for any country that is seeking economic growth.

<comment><USER19> Education has nothing to do with work ethics and general attitude to your job and it's position in your life. You can be educated all the way, but without sufficient motivation your abilities and skills will be left unused - by you

<comment><USER20> why do you think it is that those that are in dire need of oppertunities blow them with the lack of work ethics while those in first world countries are willing to work long hours to get even richer? Is it really greed and/or keeping up with the joneses? At the expense of free time?

</comment></comment></comment></comment><comment> Yanu-3452 This is an odd analysis, because as it highlights, salaries are strongly correlated with wealth of the country.

So the question really becomes, not why are salaries different, but "why is programming difficult to offshore".

If programming was easy to import and export then either salaries would even out or, more likely, would be relocated to cheaper countries like many kinds of manufacturing.

But software is difficult to outsource even from one department to another let alone between companies or countries.

If you can solve outsourcing, then you've solved the problem of knowing what you want from software.

But if you've done that, you've just become the software engineer.

<comment><USER21> I found it quite difficult to outsource Engineering work to Engineers in another country.

It might be a cultural thing, but issues I've ran into- Slow/low prioritization, no movement unless you follow up often, lack of experience.

Don't get me wrong, I can be lazy too. But when things are outsourced it's really hard to keep positive relations and get stuff done on time with high quality.

<comment><USER22> In my experience the core of the problem, regardless of outsourcing, cultural issues or other considerations, is the good old "if you pay peanuts, you get monkeys". Good software engineers are highly coveted wherever they are. If you attempt to outsource work to a country with much lower wages in order to save money you're not going to get the local rockstars working for you.

Those outsourced teams are also aware of their status as "disposable cheap workforce" and are not super invested in the project. They have very little chance of career growth within the company since their whole reason to be here is to be cheap. They do the bare minimum to meet the objectives and nothing more, and in their place I'd probably do the exact same thing.

</comment></comment></comment><comment><USER23> I am Brazilian, I tried to get jobs in other countries multiple times and many times it failed due to reasons not related to my competency:

1\. Rejected from working in a gamedev in Europe because I am not EU Citizen.

2\. Lots of companies on USA have to follow some crazy tax rules or general regulations that make them not allowed to hire foreigners, don't even need to be military stuff. Noticed some companies won't even hire out of state.

3\. Military, healthcare and many other industries for obvious reasons don't accept foreigners.

4\. Several companies have some for reason or another have all employees working on the same time, meaning they refrain from hiring outside their timezones (thus no California companies for me, and no Europeans either)

5\. A bunch of times had problems because mismatch of required education and how education work in different countries.

<comment><USER24> Assuming your timezone is GMT-3, it's 5 hour difference with California and 4 hours with most of Europe. At least one of them should be manageable (either waking up around 5am or going to bed around 3am).

<comment><USER23> To me it is, but employers don't care for that. They just refuse to hire. (I regularly sleep around 3am, I am total night owl)

</comment></comment></comment><comment><USER25> Embarrassment discount.

The theoretical benefits of offshoring are obvious: get the same thing for less. The same goes for juniorization, find a young guy who can do the same thing for less (this worked out great one time in an HFT I worked for).

Your problem is there's a chance -whether you offshored or not- that not only do you not get the same thing, you get a steaming pile that your boss will not appreciate. And it's not like a 80% working software solution is worth 80% of the money, it's worth maybe 20%.

So how do we compensate? Fall back on crutches like "we only hire Ivy League or Oxbridge grads". Or make sure whoever it is had a roughly similar culture to yourself (comms style, language), is available in a similar time zone, or has done similar work in the past. It's not that these will ensure you have good programmers, it's more that you can say to your boss, "I acted conservatively but even then sometimes you don't get the right hire".

All of which point towards advantaging programmers in the West. Either you have all these qualities (culture, tz, experience), or you have to discount quite a bit.

Naturally this isn't universal. You are gonna find people in Asia who somehow make a Western salary, and good on them.

<comment><USER26> Good point, I touched on that in another comment. Both ends of the spectrum are extremes, but one cannot deny that when you look to reduce costs that dramatically you are gambling. Why is something 80% cheaper?

'Oh it's because their country sucks'

Ah ok, and you found 30 geniuses in this crappy country?

'Yep, these particular guys are all the cream of the crop'

Got it. Okay, let's give it a gamble. I'm not making a real point, so don't beat up my straw man, this is just my gut feeling.

</comment></comment><comment><USER27> I think this misses a possibly very important effect: agglomeration. Programmers in the Bay Area were not all born there, many (most?) chose to move there, some from elsewhere in the US, some from abroad. If those programmers who are more skilled tend to move to this area then the resulting greater productivity could explain higher pay. So why might more skilled programmers move to the Bay Area? Perhaps because other skilled programmers live there, and programming skills are complementary. A highly skilled developer may be worth more to a company with other skilled developers who can work together to create advanced products. Note that local PISA scores are irrelevant if people were not educated in the place that they work.

<comment><USER28> People underestimate the power of human connections and (tech) hubs. The job market is still far from a cold, optimal algorithm.

I was born in a cheap city in southern Europe, and all my life I moved to increasingly bigger and more expensive cities. Why? In my home town job opportunities are very poor. Local jobs are scarce and for full remote positions you are competing globally.

Sure, London is expensive as hell, but there are many more opportunities, so I can progress my career, and drive up my salary. A bigger talent pool attracts more companies, more job opportunities attract more people, and so the snowball goes...

</comment></comment><comment><USER26> Why speculate? Enterprise outsources all the time. Their products aren't great but they offer a certain passable quality level (and to say that quality isn't affected when you start dramatically messing with price is insane).

Part of my team was already very affordable contractors in America. The company found a way to get even cheaper in India. I don't think it's as simple as cost, as in this case I think the company literally looked at the product and concluded 'we don't need this level of quality'. I understand I'm implying the quality will drop due to outsourcing, but it has nothing to do with a prejudice towards off shore work. If you drop prices dramatically the logic behind it is that you are prepared for a quality drop as quality is not the prime concern.

Every year, I spend more and more money on things I value. Sometimes it's just a stupid upgrade on a chair, monitor, clothes, etc. If I fundamentally don't find the value in a good mechanical keyboard, every year I will try to reduce my investment in it. That doesn't mean I'm looking for a bad cheap keyboard, but that I'm okay with something passable since I see no value in a better one. I see more value in getting away with a passable one.

Is there a trillion dollars of untapped savings? Yes, for those seeking it, for those with different values.

</comment><comment><USER29> My take:

1\. Software industry is partially an oligarchy. A few companies make a huge amount of money. A large amount of companies make less but still a sizeable amount of money.

2\. The amount of developers needed in the really wealthy companies is limited. The wealthy companies don't need to compete _that_ much for talent but they also don't need to keep down the salaries that much.

3\. There is a cost associated with diversifying to different countries. If you don't need to, why would you?

The market overall has about medium buying power. A small part of the market has huge buying power. The wealthy companies end up in a few places and don't have a limited interest in diversifying geographically.

<comment><USER30> This is the best explanation I've been able to come up with as well. Other explanations don't seem to explain the massive difference in compensation between the US and e.g. Canada, which has a similar level of development, education, and per-capita wealth. Google[1] doesn't exist at a large enough scale in Canada to shift the market meaningfully. Canadian companies simply aren't profitable enough to even contemplate paying like Google.

[1] Using "Google" here as a proxy for companies that pay like Google.

</comment></comment><comment><USER31> From the conclusion:

> One could argue a huge inefficiency still exists if you assume that offices > are not useful and companies should always work&hire remotely (thus removing > the cost of living from the picture).

> But in that case, I would at least expect office working to go away before > we see any dent in the wage gap. However, a lot of companies seem to be set > on office work. Whether or not this is a good thing, I don't know, I lean > strongly towards "no" but that's a post for another time.

I've been a full-time telecommuter for 6 years: Offices aren't going away anytime soon. So many people _need_ face-to-face communication with their colleagues. Even I need to travel to the office from time to time. I've always had a technical role; when the opportunity came to be a "manager" I rejected it because I just couldn't envision myself as a manager without being physically in the office at least 1-2 times a week.

So, if you ask me, the reason for the salary difference is because we need regular face-to-face contact with our peers.

</comment><comment><USER32> You don't get good software by dumping a bunch of requirements on a low-paid remote team and pressing "blend." You get good software when you have programmers who share your schedule, who share your culture and mission, who don't struggle with language barriers, who care about the needs of their teams and stakeholders because they know them personally, who feel goodwill towards you and the product they're building for you...

<comment> seph-reed > who feel goodwill towards you and the product they're building for you

This is why developers must be paid well. It is extremely hard to focus on a problem you don't care about. Every little bit of lost focus is lost time/money. It's more bugs in the future. It's more churn.

There aren't many jobs that are this dependent on the workers will to do it.

</comment></comment><comment><USER33> > 3\. Most "good" programmers move to the high-income countries

> Again, fairly hard to find data on this

I'm surprised it's hard to find data, but yes, this consistently matches my observation over the past 30 years and four different geographic locations: very few American programmers are American at all. When I did my master's in CS 15 years ago, I was almost always the only person in the room born in the United States, and besides the (either Indian or Chinese-born) professor, the only US citizen as well.

<comment><USER34> This fits. It is called "brain drain", where the smart people leave low-income areas to go somewhere they will be paid more. And why shouldn't they, if a company will pay them so they have more in savings in the rich area than they would have even earned in the poorer area?

<comment><USER35> However this should push down the salaries in the higher income areas and push up the salaries in the lower income areas due to lack of workers. That doesn't seem to happen much.

<comment><USER34> If it was average Joe's moving, sure. It's the cream of the crop though, the opportunity makers. It grows the economy where they go and shrinks it where they leave.

</comment></comment></comment></comment><comment><USER36> imho american programmers are in for a world of hurt. Day of reckoning is coming. Its just not today. So if you say its today, you naturally get the derision and downvotes. But that doesn't mean there is no such day.

Just 2-3 days ago we sent 2 chaps into space. 50 years ago with far more primitive software we sent them to the moon. And you are bitching about how your software profession is so fragile it'll be messed up because of culture, because of time zones, because of skillset, because people "over there" don't look like you think like you talk like you walk like you. How long can you put up with this farce ? For a long time, thats for sure. But not for ever.

This stuff aint particularly hard, people. Yes not everyone can do it. And yet, its also true that wasting the best years of your life trying to design a 10mb facebook page isn't perhaps the best use of your brain cells. Perhaps if you are truly that smart, why not work on something more worthwhile ? Go solve cancer or robotics or self driving or....not this agile webcrap for christs sake. Is this truly what you want to stake your future on , that someone in a different part of the planet can't write javascript as good as the L5 sitting in Menlo Park ? It doesn't even sound good on paper. Next you'll tell me you believe in the tooth fairy.Jesus.

<comment><USER37> The day is closer than most here on HN think.

TikTok is doing extremely well and rapidly gaining users. They demonstrate a good knowledge of everything that SV typically does and are based entirely out of China. These arguments about culture are laughable. TikTok is basically the engine of culture now among teens and is playing a big part in the current protests.

Zoom has its engineering based in China. This means two of the fastest growing consumer products today are built by Chinese software engineers.

The Chinese are also at the bleeding edge of Machine Learning and are taking baby steps in building cloud services. With the elimination of Huawei from Western tech ecosystem they will be forced to build an entire stack from Silicon => Pixels and its well within their reach in the next decade.

IntelliJ which everyone here swears by is built entirely out of Russia.

All FANGs are rapidly scaling up their presence outside the US in locations like Europe/Canada to hedge US visa issues which will intensify over time. The only way to employ non US software engineers along with western ones might be to have offices in non US western countries.

<comment><USER30> | IntelliJ ... is built entirely out of Russia.

While they do have offices in Russia, JetBrains is a Czech company.

Overall though, I agree... there are a lot of people with their heads in the sand.

</comment></comment></comment><comment><USER38> To my knowledge - as an US immigrant, who has worked both in India and US - decisions everywhere are made by Managers (Non-Developer Ones) and Executives - they have weird power dynamics that they need to see their subordinates physically to ascertain their power or influence in the company...thats it - that is what is stopping every programmer being remote

</comment><comment><USER39> " Doctors in the US and UK are very expensive, that's not because nobody has noticed there are equally skilled doctors in other countries that charge 1/5th the price (or even algorithms that can do most of it for pennies). It's because practicing medicine in those countries requires to go through a regulatory gauntlet that would make Kafka feel like an unimaginative fraud."

Ouch. Yeah some US/UK doctors are overpaid but the liability is not addressed. Also not sure what algorithms they are referring to. I don't know any even in radiology/pathology that can rival a physician.

From my friends who work with outsourced programmers, this is also an issue in the coding world right? Who's held responsible if something is not working or delivered?

<comment><USER33> > go through a regulatory gauntlet

A lot of people like to point to regulations and licensing as a source of inefficiency, but in reality the lack of any sort of professional licensing around programming drives all sorts of alternate inefficiency: with no objective standard to measure applicants against, employers are stuck trying to make up their own, usually broken standards.

<comment><USER40> The lack of violently enforced standards doesn't mean there are "no objective standards", nor does violently enforcing a standard like they do in medicine make it an objective standard (see: how careless and dogmatic your typical MD is)

<comment><USER39> Agreed. For better or for worse there is a "standard of care" that is a solid legal basis for lawsuits and a lot of decision making stems from it. "It's what's in the textbooks and established, and I can't be sued for doing it."

But the flip side, using newer research, may fix incorrect/suboptimal diagnosis or treatment, but can also fail.

I'm of course sidestepping the "I'm an MD and am right, and you're a layperson and don't know medicine" mentality, but to be fair, there are fewer of these in the newer generation of MD/DO/healthcare providers.

</comment></comment></comment></comment><comment><USER41> The answer is given, immediately in the first paragraph: "If the market is all-knowing and all-optimizing, how can this be?"

This is an assumption we have about the world, and it's a true assumption for competitive markets, where new companies/busiensses can freely enter, where barriers to entry are low. But, with software busineses, barriers to entry are extremely high and this results in businesses that are far less competitive on price and thus price of labor. The result is that many many of the biggest software companies are monopolies. Monopolies don't need to be competitive on the price of their labor.

<comment><USER35> > But, with software busineses, barriers to entry are extremely high and this > results in businesses that are far less competitive on price and thus price > of labor.

Really? I would say it's one of the lowest, where you can start a global company with less than 20 people with very low costs that then increase sub- linearly as your customer base grows.

</comment></comment><comment><USER42> I was a part of a few efforts to offshore some technical support type work across a couple companies. It was highly technical equipment so it wasn't your typical customer service or base level PC support, at the same time there was no reason it shouldn't have worked to offshore.

Every effort failed miserably.

The core of the issue was getting / maintaining talent / a real lack of professionalism in the folks we ended up with / lack of dedication to the job.

If there was any reasonable amount of saving money per workload, you just couldn't get a company to outsource to who actually kept their own workers around long enough to be productive. Anyone who was productive almost immediately proved their worth and left for a better job, or as we suspect the outsourcing companies actually moved them to clients that paid more (in the case of us hiring them directly, we knew they left).

The folks you did get would close cases randomly / played a sort of hardball metrics game where they really just upset customers / state side we'd end up cleaning up the mess. Lots of technically correct solutions / statements that really don't solve the problem... And in the meantime it all ate up a TON of upper and lower management time trying to get things right / set up... meanwhile there was a US, a European, and even in one case a Japan side support team that needed little interaction from management.

Another effort tried to establish a local presence offshore (a few companies already had resources there) ... same results.

The end result was all the effort and costs resulted in it being more expensive to offshore in many cases if you looked at the real numbers.

To be clear I'm sure there are plenty of professional folks out there to be hired (we had plenty of those folks employed FROM those places who were outstanding at their job) I suspect the larger issue was that the savings weren't really that apparent, and what quality / dedication you get for X price isn't always as apparent when someone says "Hey X resource is Y cheaper over there."

Quality and outcomes are hard to calculate / something being cheaper on a spreadsheet doesn't mean it really is.

</comment><comment><USER43> The post is ignoring key ideas of economic geography: benefits of agglomeration, and transport costs.

Agglomeration is the idea that there are a cluster of benfits arising from clustering people doing an activity together. Inter-firm sharing of technologies and practices, in particular. A lot of the transferred knowledge is informal and implicit, and a lot of the transfer happens outside of the formal workplace.

Transport costs: as transport costs decline (and they certainly have done so for information, voice and video communications), then previously negligible differences in costs become significant.

So, paradoxically, cheaper communications increase the relative value of clustering together, and especially the value of being physically near your biggest customers.

This is true even for whiteware manufacturers, let alone high-information services.

</comment><comment><USER44> I'll add one to the list: cultural understanding. There are products that are either not common in a specific culture or unavailable due to socioeconomic factors. It can be difficult to meaningful contribute to a product someone may not understand or have access to.

</comment><comment><USER45> It's very difficult to know the output of an individual, but often straightforward to measure the output of a team. If a team creates some complete mobile app, you can know exactly how much it cost, and roughly how high quality it is.

The most successful outsourcing group I worked with was in India. I did some math at the time and estimated that overall, they were about as productive as the US per dollar spent.

That hints that the market roughly optimized correctly. Of course, there was a huge diversity of productivity between individuals in both groups, but the management had no real idea how to evaluate that (if they had, they would have paid people quite different amounts).

</comment><comment><USER46> Here's my take: Looking at a programmer as a single type of profession is relatively useless - what matters is domain expertise. Example: If you are a decent C++ programmer without any specific domain expertise then your salary in the US is some amount of dollars. If you are a decent C++ programmer with intricate knowledge about how the Google Adwords auction works then your salary is probably at least two times higher. So if you compare programming salaries you really need to look beyond what they are programming in and start looking at what exactly they are programming.

</comment><comment><USER47> To do a good programming job, is "skills" the most important factor? The blog seems to assume so, which leads to the confusion. Scientifically, when conclusion seems confusing or contradicting, challenge your assumption.

I think a very important factor in a good programming job is communication. It takes communication to convey requirement and expectation, it takes communication to understand requirement and expectation, and it takes communication to spot and clarify misunderstanding and confusion. Reviewing my own work, I think I am dealing with clarifying misunderstanding and confusion most of the time. It is rare I gave a code review and the author understand my comment spot on right away. There is always some misunderstanding and cross- talking. I think the issue is so bad that even within the same department where we can freely discuss face to face with a whiteboard, we often ended up avoiding touching controversial code, avoid refactoring, instead embracing add-on orthogonal patches, and only focusing the review on trivial stuff such as white spaces and test failures. Our software sucks because of this communication factor. In fact, I think the OOP prevails because it allows us to sidestep the communication to some extent (at the cost of bad code (but functional) ).

The communication factor dictates that we hire people within the culture, within the location, and within the education background -- regardless of the correlation to skills.

</comment><comment><USER48> This paragraph would lead me to believe that the author may not have tried setting up a company and hiring abroad:

"There's probably some added legal hassle and maybe even accounting-related hassle, but it doesn't seem significant (arguably even less in some situation, since people from other countries can work as contractors rather than employees)."

As programmers we'd like the simplest possible implementation of hiring: I would like to post a job offer for role x at salary y regardless of hiring location.

The reality of implementing that as a business in a compliant manner - involving international payment methods, tax reporting implications across multiple jurisdictions, legal implications, etc do not strike me as trivial -- if you're a small company they're time-consuming and require expensive consulting, and if you're a large company it may be difficult to get your internal tools and processes to align with them.

I'd love to be proven wrong, and would like these systems to be simpler and fairer. They certainly shouldn't be torn down until the positive reasons for their existence are understood and handled.

I feel like many common narratives around 'programmers can work from anywhere' come from a naive point of view and rarely include details about how to compliantly achieve those results, from either the business or individual's point of view.

</comment><comment><USER49> I partially agree with point 3 despite it also not being blanket true. Yes there are good, great, and amazing programmers everywhere. Yet there also does seem to be a positive correlation between pay and ability (gasp!), even between areas, from my personal experience. Sorry I know a lot of people get offended by that.

There are also different cultural aspects about software that change between countries. Growing up in the US and going to college after big tech was already ascendant, probably the main reason I went into technology is that it seemed the best way for me to make a money (esp. given quality of life, eg not having to do the IB grind). Anecdotally a very large portion of the career/money oriented people I knew growing up and in college also went into the technology industry. I assume the same is true in some countries like China and India and less true in countries like Spain. You can see cultural differences regarding how well-regarded being a software engineer is in Western Europe vs. other countries in titles, how software companies are run (eg by former engineers or "business people"), pay, etc. If I had grown up in Spain and for some reason didn't want to move to Switzerland/US I would probably not have gone into technology.

This also is evidence of/creates a feedback loop where pay->market rate->interest->talent->pay causes regional software markets to diverge.

By all means though, if you think you can get the same work done in another country for less money, do so. I think you'll find that the $20 you're picking up off the ground actually comes with a high interest rate. But you won't believe me until you try it yourself

</comment><comment><USER50> > There must be some justification that's keeping IBM from firing all it's US > staff and cutting costs by 90% + rent by hiring people in Vietnam

Every intervening layer or other impediment between understanding/interpretation of customer requirements and coding reduces efficiency. Language and cultural understanding barriers, whether directly exposed or mitigated by adding an intervening translating layer between the technical team and customers are real problems. And the customers with money to spend are disproportionately in richer countries. So even with equally valuable raw technical skills, programmers in richer countries are legitimately worth more. But the money offered and immigration/non-immigrant worker policies mean that the most valuable workers from poorer countries will, over time, being drawn into the richer countries, exacerbating the divide.

And, in any case, even with neoliberal global trade regimes, there are additional transaction costs to overseas outsourcing, even with programming and other information/intellectual work. So, of course the law of one price that applies in idealized integrated markets doesn't apply.

</comment><comment><USER51> This article is badly informed and badly reasoned.

Adam Smith - An Inquiry into the Nature and Causes of the Wealth of Nations

" It is not, accordingly, in the richest countries, but in the most thriving, or in those which are growing rich the fastest, that the wages of labour are highest."

In those places, you are willing to pay the most since it will make you the most.

Brooke's Law

Wikipedia " Communication overhead increases as the number of people increases. Due to combinatorial explosion, the number of different communication channels increases rapidly with the number of people.[3] Everyone working on the same task needs to keep in sync, so as more people are added they spend more time trying to find out what everyone else is doing."

You want to cluster people together since distributing people creates communications overhead.

Adam Smith also explains why innovation tends to cluster. It is because communication lets learning and innovation occur more rapidly.

Lastly, labor moves to where there are the highest wages.

You saw all this the last 10 years. Facebook willing to pay top dollar. Companies growing their offices bigger and bigger. People moving to Silicon Valley for the money. Silicon Valley companies copying best practices in the blink of an eye.

It also explains why Zoom has such good margins. Their engineering wasn't distributed. It was in China. Labor arbitrage but with a minimization of communications overhead.

Companies don't attack all markets at once. They attack them one at a time (usually local market first).

It is in fact in an efficient market that you have disparities in wages.

<comment><USER52> The desire to cluster makes sense, but why cluster where the salaries are most expensive? If you want to start a software company, why start it in the Valley and not some town that has lots of programming talent but way lower pay? We see so many startups that are paying top dollar for San Francisco office space and a dozen six digit programmers, but the same company in suburban Georgia would cost only a tiny fraction of that, and putting it in the country George would cost only a small fraction of that yet again.

<comment><USER51> You already see that happening but not Georgia as much as far as I can tell. Also there is labor movement. If the labor can get better salaries elsewhere why should they move to your smaller, less wealthy location? Salaries there would need to rise.

The bigger the cluster the bigger the network effect in the cluster.

My opinion is that there are probably less than 10 viable clusters in North America. If it is too small or the culture is against it, then it fails. There have been such attempts, a few succeeded, most failed.

It shall be interesting which (new) clusters grow. My bet is on Toronto. AI talent. Large cosmopolitan city. Good universities.

</comment></comment></comment><comment><USER53> I work with teams around the world - it's a real challenge, as there's no single time that everyone is online. Should run that analysis by time zone + education. Also, software development is not as fungible as you might think. Some specific disciplines (e.g. marketing, finance) require a lot of domain knowledge, which had been built up in a pool of workers in specific areas over many years.

</comment><comment><USER54> A lot of people have pointed of culture and language, and this has been two of the most important things for me when I've had to make the choice between programmers.

Most of the time, as long as the hire is above a certain skill level, the bottleneck is absolutely the communication bandwidth between you and them. If they don't completely understand things or you don't understand them, the number of round trips increases. Add to a general sheepishness when presented with American English and slang, as well as certain cultural tendencies, and you encounter a lot of hires who will say yes (especially from India and Vietnam) when they don't understand. This is a big problem.

I've also seen the efficient market at work, but on a level up from the programmers themselves. In a lot of cases, programmers from developing countries are hired out by agencies who will charge a lot closer to market while paying them less. This might cause a lot of the disparities in the data looked at by the author, and in any data where salaries are compared directly.

</comment><comment><USER55> Isn't open source proof that you don't need buts in seats in the same office? If open source projects can do it, why can't most businesses? What's the limiting factor in business? Is it communication? Is it antiquated management practices?

Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure.

— Melvin E. Conway

<comment><USER56> Open source's organizational issue is that maintainers tend to prefer what's fun to work on, and often boring administrative work or difficult bugs go unfixed, especially if they have cut through multiple levels module ownership. Maintainers often start to resent the project ("burn out") because they're not paid but are expected to do these things that just aren't fun.

The real power of open source is that there are enough up and coming people who haven't learned this, and so if maintainers aren't supported it doesn't matter, there will be a new library to migrate to in the future by a new college grad, and this is one reason why things tend to be so unstable and short-lived.

The most successful open source projects have large corporate backing, like Kubernetes or Linux. And even Linux is a weird case, as a lot of architectural decisions and feature development are wonky because you often can't get the e.g. IO and Network subsystem guys to agree to the same idea.

</comment></comment><comment><USER57> Five or so years ago a major oil company around here outsourced to India.

Shortly after someone from India turned off the power to an entire refinery.

In another story that I experienced myself first hand a huge customer we had had outsourced their IT department.

At some point a critical system went down in the middle of the night putting lives and hundreds of millons of dollars of equipment at increased risk not to mention violating regulations.

These things happens from time to time in large systems, but there is a huge difference between calling a guy or gal who knows it versus calling IT support, hear them tell that they will create an emergency ticket, and then get a call back 4 hours later from a smiling technician that wants to help me.

Long story short: by then we had already got someone on the site to break a handful of rules to get it working again.

I have more of these.

People in other countries are equally smart, often smarter than me, but having a bit of mechanical sympathy and a bit of knowledge of what you are supporting, knowing how to recognize an emergency when communicated from a person from another culture, all those things matter.

</comment><comment><USER58> > Being smart and being _thought_ how to be a programmer seems to be the main > prerequisite of being a good programmer.

I assume that's a typo for "taught" but maybe it's one of those Freudian slips. I'd say being at least medium-clever and being thought of as a programmer is the prerequisite for getting paid loads of money as a "good" programmer.

</comment><comment><USER59> I think one of the failures in thinking around project cost and outcome is that not enough people realize that the effort around a project scales logarithmically, not linearly. This really means that small projects don't "scale down" as much as you think they do. Some for instances - You are not really going to spend only 1% of the time in meetings for a $10K project compared to a $1M project. There might well be 100X the code but it's neither going to be 100X as complex nor take 100X the the man-hours to write. A couple of the "Challenging" features might be substantially more challenging in the $1M project, but not 100X so, nor will there be 100X as many. Most importantly, is that in the $10K project the expectation isn't that you'll get 1% of the quality... but that's exactly what often gets sacrificed in order to make a $10K project cost ~ $10K.

</comment><comment><USER60> It is difficult to align worker-incentives in large off-shore contractors with the client's needs.

Someone mentioned that contractors don't write tests unless you explicitly tell them which ones to write. Well, even if they did, are you going to be able to promote them? That dev's manager is probably hyper-focused on spec completion and billable hours. Even if you paid more for test coverage you start paying for things like assert sum(1,1) == 2.

High quality code often comes from people coding for "the job they want" not the job they currently have. In-house work usually has this carrot of a senior role that can be attained by taking initiative and thinking outside the spec for the missing pieces. This is a form of compensation and incentive missing in low end contracting work.

</comment><comment><USER61> Communication is the most important skill for a programmer.

If you do not speak the same language at the same level of fluency of the organization, you're not a good fit for the organization.

It's also far easier to communicate when you 1) occupy the same space or at least 2) occupy roughly similar time zones.

While we'd all love the ideal "everything is written down and ultra clear", the fact is that rarely happens, and taking the time to do so takes a lot of effort that could be better spent on development.

Small differences in communication disparities can lead to large differences in outcome. You've probably noticed this in your own work - somebody missed a tiny requirement but it has a huge impact on the scope of work.

</comment><comment><USER62> >3\. Most "good" programmers move to the high-income countries

Your example of Germany and Switzerland in this case is less illustrative than say India and US - the poorest places automatically lose the best talent because the standard of living is not comparable even if you were earning the same remotely and had 1/10 living expenses. And then you factor in the quality of education available, projects available, etc. Juniors have a hard time getting remote jobs - so they are limited to local job market - and if most projects in your country are low end outsourcing jobs you get experienced in those vs. more demanding work.

<comment><USER63> There is also visa issues, not wanting to be away from family, liking the life/culture of your home country...

Surely it's easy from Germany to Switzerland or Canada to the US, when you're moving to a different continent it's a whole different experience.

<comment><USER62> Consider the opportunities for your children growing up in a developed country with an above average income vs. staying back home. It's the same networking effects you would benefit from by moving, but multiplied since they get them from the start.

<comment><USER64> Germany isn't developed?

<comment><USER62> I'm talking about the more extreme cases like India and US, but if you want to take it there I'd say compared to the US the opportunities for you and your children will be better when you're in the top income bracket.

<comment><USER64> Yeah, looks like a great place lately you're totally right

<comment><USER65> I used to talk to my wife about moving to the US. It would be good for my career I'm sure.

Then there was a school shooting. And my wife said "We are not moving to the US". And I didn't really have anything to say in response. And then there was another shooting, and another one. And each time she said the same thing, and each time I couldn't really manage a response.

Eventually, I stopped talking about moving to the US. And now, when there is a mass shooting in the US, my wife doesn't say "We are not moving to the US" any more.

<comment><USER64> There are good things there of course, first and foremost the salaries and the nice suburban houses. It's a good place to consume things I guess. But there are many illnesses as well, what's happening now could be just a preview if things go sour economically. Also you will work more and probably experience more stress for that money than you would in Europe. On average North Europe is way happier than the U.S but not as many people wanna move there (can be partly explained by the language barriers but I think it's simply people thinking that more money = more happiness).

<comment><USER65> > There are good things there of course, first and foremost the salaries and > the nice suburban houses

Australia has lots of nice suburban houses too. But they are expensive, and you'll struggle to get paid enough to afford one. One advantage the US has over Australia – while it has really expensive areas like the Bay Area or Manhattan, it also has lots of medium-sized cities with affordable housing and plenty of jobs – Australia's population distribution is much more lopsided, and the parts of the country with affordable housing tend to have quite limited employment opportunities, especially in fields like IT. (Remote work can help there, but Australian corporate culture is behind the US in acceptance of remote work, although COVID is helping to change that.)

> On average North Europe is way happier than the U.S but not as many people > wanna move there (can be partly explained by the language barriers but I > think it's simply people thinking that more money = more happiness).

I wonder if the weather is also a factor? The US – even just counting the 48 states – offers a wide variety in climates – Michigan in winter is colder than Copenhagen, Florida's winter is quite pleasant. Not everyone likes snow.

<comment><USER66> Minimal wage in Australia is way higher tha in US. A regular Joe lives a better life in AU than in US.

<comment><USER65> At the lower end of income, pay is definitely better in AU than US. (At higher ends of income, it tends to be the other way around.)

Housing affordability is on the whole a lot worse. The majority of the US population lives in areas with relatively affordable housing. In Australia, the majority of the population lives in areas with low housing affordability. There are a number of contributing factors – US had a big real estate crash in 2008, Australian property prices only experienced modest falls. I think one of the factors behind the more modest crash is that in US most residential mortgages are no-recourse, in Australia full-recourse is the norm, so it is much easier for US homeowners to walk away if their asset is underwater. US foreclosure laws tend to be much more borrower-friendly than Australian laws as well. Differences in population distribution (Australia's population is much more centralised than the US's) is another factor. Yet another factor is that Australia has mortgage interest tax deductions for property investors but not for owner-occupiers (unlike the US where owner-occupiers get mortgage interest deductions) – which I think changes the occupier-vs-investor balance in property ownership in a way which disadvantages the asset-poor majority of the population (while benefiting the asset-rich minority) – and also contributes to the heated Australian property market.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER67> Absolutely no swiss programmer is going to Germany, I can tell you that much. The demand is just that much higher than the supply.

<comment><USER64> I'm sure that's a false statement, there's tons of reasons for people to move out of their country to try something else. Especially considering the amount of opportunity Germany provides compared to Switzerland. Let's say you really wanna find a Haskell job, how easy is that to do in Switzerland?

<comment><USER67> My comment was mainly aimed at the example in the article, 'bad' developers aren't driven out of the country and since they make a lot more money in Switzerland they have no reason to leave. Yes, it's not literally no one and of course there are always personal reasons or 'that one job' which makes a move worth it.

</comment></comment></comment><comment><USER68> I think the issue is the false premise that programming is just one occupation akin to chain factory working the same everywhere for everyone. You cannot compare a coder in an outsourced shop doing "plumbing" implementing some enterprise UML specification and engineers in the Silicon Valley that are pretty much defining the business in a close loop with product design. At that point why are we not comparing salaries of consultants, salespeople, or pretty much asking why are salaries lower in certain countries and why are not companies outsourcing all their positions there?

</comment><comment><USER69> I think a large driver is hyothesis 3: in low income countries lots of people become programmers not because they like programming but to get away and/or earn lots of money.

The reason this doesn't show up in the data is that hypothesis 3 assumes that people want to do remote work from their country. What I actually observe is lots of programmers from the Middle East and Asia coming to Germany, the US and probably other high income countries. Obviously emigration is easier for more capable programmers, lowering the average skill of those left behind.

</comment><comment><USER70> This ignores obvious regulations around freedom of movement. There is not actually one global market for programmers.

1\. Even remote-first companies are likely to want to all gather together once in a while.

2\. It's easy to run afowl of things like American crypto export restrictions when doing work in a foreign country

3\. Startups are going to want to prefer working with local people because you can simply get more done working in a room with someone than via slack / zoom / etc. Moreover, hiring a single employee gives you more leverage than hiring an outsourcing firm.

4\. Remote, foreign employees are going to be independent contractors, because actually complying with 50 different employment laws is really really hard.

5\. Even if an employee is hired in a foreign country, that country's laws may lower the salary. For example, taxes vary by country. Payroll tax is higher in Europe than America, thus companies may be spending the same amount, but the employee receiving less. Similarly, in countries like India (and some in Europe too), there are much stricter requirements on when you can fire employees, whereas in many US states, like California, employment is at-will. This would also be expected to lower salaries in areas where more employees could easily become a liability.

</comment><comment><USER71> Could the working culture also affect the average salary?

For example, an average US employee will on average work 30% more hours per year than a German employee [1].

Working in the Netherlands, I also know that a lot of engineers will deliberately choose to work part time (e.g. 30h/week) even if it ends up with a lower annual income.

[1] [https://data.oecd.org/emp/hours- worked.htm](https://data.oecd.org/emp/hours-worked.htm)

<comment><USER64> I think not. In Indonesia or even Spain they work plenty hours. It's too bad the author didn't talk about the amount of VC money per capita, I think that's the main factor really.

</comment></comment><comment><USER72> Out of all the hypothesis outlined, "Management location dictates office location" seems most accurate to me. The highest programming salaries are at big tech companies in SF/NYC because those companies make so much money per employee that they don't blink an eye at $500k/yr comp packages.

Meanwhile no bootstrapped founder in their right mind would try to hire in SF to build an MVP unless they've got VC investors with deep pockets adamant on it. The smarter move would be to hire remotely, vastly opening up the talent pool and getting significantly more bang for your buck.

If you're a U.S. citizen, you can always move to SF/NYC and make those high salaries. You just might choose not to because you don't want to move there. If you're Swiss, there are plenty of high paying jobs, not just in IT but other fields.

If you're a Ukrainian citizen, you don't have the option to make $500k+/yr at <insert big tech company> (unless you're willing and able to go through the immigration process into the U.S., which is difficult). Naturally that leads to less bargaining power.

Ultimately wages are just a negotiation.

</comment><comment><USER73> " _I 'd expect an inverse correlation between % of the population employed in ICT and salary, instead, I find the opposite. In the better-paid countries, a lot of people are working IT, whilst in the worst-paid countries, it's much fewer._"

I am not sure how that is not a simple corollary of economics behaving more or less how it usually does.

" _Moving on from the right to the left of the economic axis we have a maximally corrupt market, which serves only to funnel money to the richest people at the expenses of the poorer at all levels and thus global inequality in anything (including salaries) should be correlated with how rich a country already is._

" _How do we identify a "rich oppressive country"? Hard to tell._

" _Is PPP per capita as good and indicator as any? Probably. Since I don 't know how recent the Bloomberg data is, I will go ahead and use the GDP data from 2012, since that's when my PISA data is from._"

High GDP indicates high inequality?

" _Programmer salaries are very strongly correlated with how wealthy a country is._

" _Programmer salaries are strongly correlated with how well-educated a country is._

" _Programmer salaries are relatively well correlated with how well a certain country speaks English._

" _Programmer salaries are inversely correlated with % of the population working in IT._

" _But since all of those 4 things are strongly correlated to each other._ "

Ok, I'll buy that. But I'm still not sure what this has to do with the question asked by the title.

</comment><comment><USER74> The price gaps depend on currency exchange rates, and the exchange rates can change rapidly.

I worked in NZ, and I was paid in NZD, but the company sold their products in USD. This meant the profit fluctuated. Dramatically.

The exchange rate has moved from ~0.4 USD/NZD to ~0.85USD/NZD.

Right now, it's sitting about 0.65, but you can see the problem. If you price something at 40c, it goes to 85c, you've got a problem. Even a 25% swing should be expected.

A lot of these cost savings can be valid short term, but setting up a team (rather than a project) is a multi-year thing. Don't forget the currency risks.

I have specific experience with this, where they attempted to outsource the engineering team to India. However, the exchange rate shifted, and the ROI disappeared. Two years of distraction and training our replacements gone.

This can work well, it's why the Lord of the Rings movies were made. You have to know where your risks are, or you could find the developers that you thought were cheap all of a sudden aren't. Generally, it means you need to do it for some reason other than price.

</comment><comment><USER75> My explanation is that the free market doesn't exist, and nobody really wants it.

In a perfectly competitive free market, wages (and capital gains, too) should correspond to subsistence wages. However, this poses a problem. If all that additional value is created by firms, to whom is it all divided, if everybody gets just subsistence?

In my view, simply, this situation cannot happen. Instead, in the real world, the markets are always full of oligopolies which were intentionally created by all market participants (including employees) to split up all the created value, somehow.

In practice it takes many forms. It is likely that company employees unconsciously form coalitions that sabotage lot of outsourcing. Some of the coalitions correspond to nation states. In fact, should they fail to do it, they will have less income, and will be less relevant, because they will make less spending decisions.

So the result is somewhat random, it is result of dynamic evolutionary pressures that create market friction, and cannot be explained away by forces of free market rationality.

<comment><USER76> > _In a perfectly competitive free market, wages (and capital gains, too) > should correspond to subsistence wages._

Wait, why? You might want to support that claim a little better before you build a whole theory on it. Mainstream theory suggests that in the long run _profit_ will converge to zero, but that doesn't mean that _wages_ , which are the prices set in the labor market, will all converge on the same value. Frankly it doesn't even mean it's not possible to profit while running a business, because the cost of capital is counted against profit when it's claimed that profit converges to zero.

<comment><USER75> According to classical theory, just like with capital, the cost of labor should converge to the marginal cost that was needed to produce it (i.e. to zero profit for the employee). Of course it doesn't mean that everybody has to have to the same wage (for example, if your job requires more education, that's additional cost).

But if profit (value) is created in the economy as a whole (that is the reason to have it in the first place), and yet every unit in it converges to have zero profit (marginal revenue = marginal cost), what happens with all the extra money?

Or ask the other way around. Under neoclassical theory, the price of all commodities should converge to their costs. If labor is just another commodity, it should be true for labor as well. What is different for labor, from the perspective of the neoclassical theory, that it wouldn't behave like that?

I think the neoclassical theory is inconsistent, and the assumption, that because all these can converge to zero profit independently, they also can converge altogether, is simply wrong. Therefore, there will always be an area in the economy, which doesn't operate according to neoclassical theory, where the profits are close to zero, that is, there will a component of income that cannot be explained away by costs (which is what the article is trying to do).

</comment></comment></comment><comment><USER77> Other anecdote was: "if there is $20 on the ground in Grand Central, don't bother picking it up because if it was real someone would already take it".

Taxes and regulations are complicated, it is not "just hire a contractor", market is not all knowing and all optimizing because there is no global market, each country has its own market, because of taxes, regulations, visas. You still have to have trusted contractor otherwise you risk money. Good luck chasing someone from the other part of globe if something goes really bad.

For setting up branch office, that costs a lot of money and time. If you have medium business and you are a company owner you don't have time to manage an office 1k miles away. You have to spend time getting customers and selling, again you don't want to waste time on learning tax code in some other country. I bet also most people would rather earn money locally and spend time with their family. There is a huge opportunity cost.

</comment><comment><USER78> Offshoring anything requires more efficiency from the start because a company's management problems will be amplified by offshoring.

Of course if a company is remote first it will already be at advantage, but most companies I know are not known by it's management efficiency.

So a trillion dollars are lying on the ground, but its buried deep and you require the tools to dig.

</comment><comment><USER79> I think the main factor is literally the stupidity of managers and the fact that real intelligence has almost no value in our modern economy. Managers don't get hired because of their intelligence - They get hired because they have connections to capital (the right friends). It doesn't matter what these managers do because most of the economy is founded on oligopolies which are themselves founded on fiat money printed out of nothing. Western economic power is an illusion at this stage. The numbers look bigger in the west but they're way more fragile and collectively people have less freedom in how they spend their money - This is why all VCs just copy each other instead of actually thinking about their investments, they know that the system is too fragile to allow them to actually think.

I have a suspicion that investors in developing countries invest in a broader range of companies and it's more like a free market than in the west.

</comment><comment><USER80> What a weird analysis.

1) A lot of correlation can be meaningful only if you can extract independent variables and have a big enough N.

Given the complexity of human society, we would need 100000 countries to meaningful correlations.

2) "rich oppressive country" is extremely correlated to wealth and "English skills". Silicon Valley is an excellent example.

</comment><comment><USER81> Interesting switzerland is mentioned, there does seem to be a shortage of programmers here, our company recruits a sizeable chunk from abroad. Also, if you search in a local language, especially german, there are a lot of open positions, where fluent command of the local language is required.

<comment><USER64> I considered immigrating to Switzerland at some point but the heavy emphasis on local languages (even in programming jobs) put me off. It's much more relaxed in the Netherlands.

<comment><USER34> Depends what kind of programming job. A manufacturing setup which hires a lot of trade-school labor, sure. A startup, less so.

Also, learning the local language helps integrating once you arrive.

<comment><USER64> Take a look at the Rails jobs in Switzerland, which is mostly a startup stack:

[https://www.linkedin.com/jobs/search/?currentJobId=189170609...](https://www.linkedin.com/jobs/search/?currentJobId=1891706097&geoId=106693272&keywords=rails&location=Switzerland)

Quite a few job descriptions are in German / French. In others the description could be in English but they will ask for basic/middle level of German. And then there are the few (hard to estimate how many) that don't care for language at all. But when you consider that to begin with the Swiss job market is small, this means it's much harder to find a job there than a place like Germany / Netherlands / UK for an immigrant. Now sure, some people will happily jump through hoops because Switzerland is undeniable a high salary, low tax, high quality of life country. I guess I'm not one of those people :p)

</comment></comment></comment></comment><comment><USER82> Is it just me, or does the link lead to a different article, "Imaginary Problems Are the Root of Bad Software" sometimes? I tried opening the link and it sometimes goes to the one titled like this post, sometimes to the other one - for the same URL.

This seems like a very ironic problem when considering the content of the "alternate" article being presented... Example of an excerpt: "The problem is that you thought you requested a core product with a couple of extra features, if they were easy enough to implement. Meanwhile, the dev team heard something else. They heard about some exciting challenges they could tackle… and a slew of boring, basic features they couldn't be bothered to test properly or care about."

<comment><USER33> I saw the same thing.

</comment></comment><comment><USER83> The Gini coefficient would be a much better proxy for economic inequality/oppression than GDP per capita:

[https://en.wikipedia.org/wiki/Gini_coefficient](https://en.wikipedia.org/wiki/Gini_coefficient)

</comment><comment><USER84> I find it hilarious that people continue to undervalue the skill requirement for programming. Thoughts of Oh I'll just hire someone off shore and make a fortune. Good luck finding someone naive & intelligent enough to write code in poorly developed areas around the globe and have them programming for you while you make a fortune. People expect a decent quality of life, specifically if they're making anything of value for someone else and that requires being around similar peers living an okay lifestyle. Otherwise they will burnout or worse and after maybe a year you will have code that needs rewritten.

</comment><comment><USER85> Another hypothesis: HR at software companies is, most of the time, done not with the goal of increasing the organization's aggregate productivity, but rather with the goal of increasing the organization's _saleable assets_ (or something that shakes out to the same thing, e.g. middle-management acquiring local power relative to their rivals by "hoarding" talented employees through loyalty-building.)

Assume for a moment that acquiring companies don't understand what organizational practices/structures make the companies they're acquiring productive. (If they did, they'd just build an internal team that does things that way.) Assume that, instead, "acquisitions" are basically a feudal transfer of power: a different knight is now collecting the taxes from the serfs, but neither the new nor the old knight understands how wheat is grown. The serfs are a black box, and a fragile one. If they want to continue to bring in taxed wheat, they have to mostly leave the black box to its business, rather than poking around inside it trying to change things they don't understand.

Under this paradigm, you can sell a co-located team to an acquirer, and it'll retain most of its productive value, because it's very easy to just "leave the serfs to their work": you just keep the same people working together in the same office. But you can't _really_ sell a team with mostly-independent foreign subsidiaries to an acquirer, since the process of absorbing those subsidiaries into the corporate structure will naturally (for legal + political reasons) tend to force restructurings of such subsidiaries. The black box would have to be taken apart—and since the acquirer doesn't trust their ability to put it back together in working condition, they just don't want to buy it at all.

As well, a colocated team _can_ be acquihired for the purpose of pilfering specific members of that team for ones' own org, while discarding the rest. This possible use increases the saleable-asset value of such teams. A foreign- subsidiary team cannot really be pilfered in such a way, unless the acquirer happens to also have a foreign subsidiary of their own in the same country, which they'd benefit from transferring the acquired employees into.

</comment><comment><USER86> Don't forget that it's not just "programmers" that are building a product. You'd need designers and product managers in the mix too, and you're probably not going to offshore those people to Vietnam or Ukraine. It's pretty hard to have those people in one country and your "programmers" in another since they need to be in such close contact with each other. Personally, I communicate much more with designers and product managers than I do with other engineers on my team.

But also, you don't want to hire "programmers," you want to hire engineers—people who are capable of making large systems work together.

</comment><comment><USER87> Do the author really believe programmers earn only 12-16k USD yearly in Poland?

<comment><USER88> Good point. In Eastern Europe a decent programmer earns 35-45K after tax. I know it because I work with developers from Eastern Europe. 12-16K is more a fresh grad level, really junior.

<comment><USER61> Just for clarity, US salaries are usually discussed before tax. If you're taking home 35-45k, you're basically at US salary levels. Remember than even here, Silicon Valley salaries are way above salaries elsewhere in the US. Increased competition for the best / closest programmers increases wages.

<comment> b-team The Silicon Valley premium is not that large. Every programmer I know in North Carolina earns six figures. I earned 95 as a programmer with moderate experience in South Carolina a decade ago before I changed career paths.

<comment><USER61> There's a big difference between making 95k and making 350k total comp as a senior dev at FAANG.

</comment></comment></comment></comment></comment><comment><USER89> My working hypothesis for why programmer-employees in the Bay Area and New York City get paid more is that so many of them have a credible alternative to being an employee, namely becoming a startup founder, which I imagine has helped them in salary negotiations.

This map near the start of the OP makes me wonder whether, similar to the markets in the Bay Area and New York, the markets in Switzerland and Norway give programmers some credible alternative (not available in for example Ukraine or Vietnam) that can be resorted to by a large fraction of programmer- employees.

<comment><USER34> Cost of living in these locations is incredibly high. I think as an employee it is easier to negotiate a salary as a multiple of fixed costs of living (rent, food, transport, entertainment).

</comment></comment><comment><USER90> Just one idea here not mentioned: software is essentially just business logic run by computer.

In that sense, you need customers for software, and wealthy countries have it.

Silicon Valley might skew more toward global software products, but I'd take a wild guess that most software is actually more local in scope.

That banking or insurance software you wrote in Indianapolis might not work at all for non-US companies, or it is perhaps internal and company-specific.

So, in that way my unscientific guess is that the USA has a huge number of corporations that need internal software or locality-specific software.

<comment><USER91> Even for global products, they are usually created first for the domestic market and then extended for international use once they have taken off domestically rather than targeting the whole world from the start.

</comment></comment><comment><USER92> As an example, Finland has a population of 5.5M, US has a population of 328M. If you would outsource 10.000 coding jobs to Finland, it would equal outsourcing 10.000 coding jobs to Minnesota. So it does not make sense to compare country vs. country.

If you outsource talent pool from Finland, the cost is not so much different on paying salary in US.

I do think, that in future it is the norm to have a remote community in all companies to control cost and to access best talent. It will be an accepted fact that people are paid differently based by location.

</comment><comment><USER93> > 3\. Most "good" programmers move to the high-income countries

It might be interesting to look at the `N_programmers * AVG_salary` for various countries. Maybe no explanation is needed for disparities if most programmers aren't affected by them because they've all moved to where the high salaries are. Though I doubt this is an explanation.

Also, let's check back on this a year and two and three from now, when we've fully absorbed the impact of covid-19 shutdowns on the knowledge industry.

</comment><comment><USER94> This blog seems to make the same mistake that all programmer management does- that programmers are interchangeable and domain knowledge doesnt matter.

Sorry, but I know developers with _way_ more natural talent than I have but without context to what they want to accomplish it means little. Can those developers learn what I know and then be 10x what I am? sure. But there are few domains where there isnt a learning curve. That creates inefficient markets. That creates disparity between salaries.

<comment><USER95> So for you the key is specialization? I came here to say the opposite, that the blog also fails to mention: the salaries are similarly low or high depending on what country you look at... _for every profesion, not specifically programmers_.

In some countries you can earn more waiting tables than a programmer in others. Much more than a waiter in others. Do you think PISA scores matter for that? Or that a waiter is three times more productive in rich countries?

The explanation (for general blue collar jobs) that I've read and was convincing enough is the lack of solid industrial jobs. If you can work in a factory for 2, you are not going to accept another same-effort job for 1, or a more challeging job for 2.

Of course in programming hot spots there's plain shortage so it's just an auction.

</comment></comment><comment><USER96> With all of the talk about companies going remote lately, I worry that the logical next step to this might be management saying "well, we are already hiring remote developers, why don't we just outsource to cheaper countries while we're at it?".

Sure, they tried and failed at this in the 90's and early 2000's but heck, people forget quickly.

One of the things that I like about working in an office is that the non- engineers see me there and get a better appreciation of what I do.

</comment><comment><USER97> When people collaborate the work-product is 10 IQ points higher than max(IQ1, IQ2) than when people work alone. Therefore remote work is likely less productive as there are less face-to-face interactions and serendipitous interactions, and co authoring is harder. Also today USA software engineers are greatly rewarded for self-initiative vs other countries. These initiatives might be culturally more difficult to gain from foreign born workers.

</comment><comment><USER98> Outsourcing has more problems than it solves. The language problem. The timezone problem. Communication rate issues. Import/export issues. Currency issues. Culture issues (will a contractor contradict the boss if they are wrong? etc).

It goes on and on. Hard enough to manage a remote worker when that's the single issue; compounded with the rest it becomes a hard sell. So the price has to be low, to make it worth the effort.

</comment><comment><USER99> Engineering is super cheap! If you go to the grocery store to buy beer, one beer cost $1, another $5 and it taste slightly better you get the one for $5 then if you go to a restaurant, you pay $10 for the same beer. If you go into a restaurant and they ask $30 for the beer, that's expensive, but still you wont leave. Now if they did charge $300 for one beer you would walk out and buy it from Asia.

</comment><comment><USER100> Proposal for a better title: Non scientific article that doesn't find any evidence why salaries of programmers vary based on country.

</comment><comment><USER101> Colleges and Universities with good CS departments that graduate a lot of undergrads are also a huge factor (quality and quantity). The students in that country has the most immediate access, and it is also a big draw of talent from other countries. In 2019 13% of US CS bachelors were awarded to "Nonresident Alien" students, 65% of Masters, and 60% PhD.

</comment><comment><USER102> This seems to be a fully general argument, in some sense - I know programming jobs are easier to do remotely, but surely that is also true of some accounting work and other white collar jobs. Why hasn't a larger chunk of the white collar economy transitioned? I think answering that question will answer the question for programming specifically.

</comment><comment><USER103> This seems like it has a anti engineering bias written by a product manager who views himself as visionary and others as less. As if to say miscommunication is one sided. Nevermind the business over expecting and over selling, under paying, changing its mind radically, not respecting recommendations and just in general shitting on engineers.

</comment><comment><USER104> Interesting analysis, but IMO using Europe as an example makes it fundamentally flawed.

Immigration dynamics within Europe are way too peculiar and can't be extrapolated to a global level. And immigration (visa/bureaucratic hassles mainly) is probably the #1 fact that needs to be considered when analyzing the payment gap problem.

</comment><comment><USER105> Missing hypothesis:

Culture, trust and autonomy.

Having someone that identifies with a project, someone whose reputation in a city is connected with a project's execution, someone who builds relationships and creates a sense of ownership, is much more valuable than an engineer whose only relationship with a project is a monitor and Slack.

</comment><comment><USER106> It really boils down to how wealthy the country is and how stratified the wealth is. In the US we have higher averages because we have higher salaries on the high end, but that does not carry all the way through for the entire country.

The idea that most good programmers move to rich countries is just asinine.

</comment><comment><USER107> Google for example has large offices in Europe. Like in London or Warsaw. They pay significantly less there and find no difficulty hiring people. What i don't understand is why Google still have majority of their engineers in US. Why not hire more in abroad? Makes zero financial sense to me.

</comment><comment><USER108> "enter image description here"

With all the talk about Google abusing its monopoly to force sites to reduce their load time and whatnot, I have to admit I am eagerly waiting fot the day (it will never come, but why not be hopeful) when Google starts to penalize insufficient or missing accessibility.

</comment><comment><USER109> Absolutely not. Offshore labor is worth objectively less because of different people who are in the game there. Market is absurdly efficient, there is no arbitrage. Some kinds of work is better outsourced - repeatable maintenance work, some better done locally such as product development.

</comment><comment><USER110> There is allot more to building software than writing code. Those other parts are harder to outsource. At my company, the jobs that are 100% coding are 90% offshore. But the jobs that are 0%-50% coding are 90% in the US.

</comment><comment><USER111> Really interesting article! I agree with the thesis 'wage gap with skill + tax irregularities + immigration = gap' but wonder if more remote working will impact this.

</comment><comment><USER112> Any takes on what will happen to silicon valley tech salaries ? Will salaries even out with other regions in the US as the workforce moves to a work anyhwhere model?

</comment><comment><USER113> This is one of those sneaky ones where you think they've left New Zealand off the map again, but upon closer inspection, its actually there.

</comment><comment><USER114> In Europe programming is considered a blue collar job. From friends over there I hear that it's something you are sent to do if you could not make it in other disciplines. In America it's like being a doctor. Why? Because this is a rich country. It's as simple as that. We have a lot of money to spend, and we have a lot of smart people (in the long-tail). There is no ceiling in America. There is a ceiling in other countries, because after you get to a certain level, you can always come to America.

</comment><comment> b-team The analysis in this post is all over the place with no guardrails. The advice from the physicist in the comments is spot on.

</comment><comment> b-team A lot of answers here. But no clear question. The advice in the comments from the physicist is spot on.

</comment><comment><USER115> I used to work as an out source, getting a salary of $18,000. Then I got a visa and relocated and my salary increased by 611%. My culture, education, language skills and work ethics did not change. This is not fair.

</comment><comment><USER116> Title is misleading.

<comment><USER117> Yeah, I was expecting this to be about untapped market opportunities; i.e. software is eating the world, but not fast enough, and there is a lot of money to be made in applying software to various industries.

</comment></comment><comment><USER118> author is using the wage data from last decade or less it seems. It s an overinvested market and I don't think programming value is correlated with pay at all , at least judging for the overall bad quality and incredible bloat of software coming from america in the past decade , as compared to 1 or 2 decades ago.

And obviously the money thrown in programming is at an all time high. As other markets like biotech begin to make big profits the monetary value of programming will equalize and go down everywhere.

</comment><comment><USER119> That's not how your spell "Sweden"

</comment><comment><USER116> Isnt the old rule, if a title is a question, the answer is 'no'.

</comment><comment><USER97> This very very poorly written article is the number one reason why universities assign advisors to PhD students!

If this guy would just talk to one single person who knew something about silicon valley then they wouldn't throw out all these useless theories into a vacuum.

You can just look at America for your answers. If you look at the history of silicon valley in the 1970s it was Chip companies in the 1980s it was PC hardware companies in the 1990s it was networking companies and the 2000s it was internet companies and in the 2010s it is transportation companies. The chip cpu companies have been ejected from silicon valley (vlsi design happens in oregon and austin). The PC hardware companies have been ejected from silicon valley (motherboard design and I/o design in Asia and oregon). Cisco is struggling to hang on but they are being ejected from silicon valley. People are packed into cubicles like sardines there.

The fact is if you have a lot of money silicon valley is the nicest place to live in the richest (overall) country in the world. in these fields you are 100% mobile and the work can be done anywhere so people choose to live with their peers in a place with more recreational and cultural opportunities than anyplace else on earth. And yes they struggle to afford it. Yes there is an underclass with lesser skills who might be well-served by moving to a lower income city or state but they are a fraction - maybe 20% of silicon valley.

People leave silicon valley for Boulder or Seattle most often. more land, less housing pressure, and almost as many recreational opportunities!

if a guy like this wants to know the answer he should talk to my friend who started a 20 million dollar software company in Chicago and then moved to Prague to try to repeat it and he knows exactly why software engineering doesn't scale in Eastern European countries! He is back in the USA running an organic foods company!

another possibility is another friend of mine who went to MIT lives in Taiwan and comes to USA gathers software design projects takes it back home writes this back and has his local programmers implement the system. I am certain he has a world of understanding of why software engineering is not uniformly spread worldwide.

End these other places like Vancouver where I worked as a professor it would have been better for me to get a job as a bus driver I would have been able to buy real estate sooner that way. The economics of deferred gratification just doesn't work in many foreign countries.

There is another answer which is probably the same as why don't other countries have professional football teams like the USA. there are feeder programs that start for talented software engineers as age as young as five years old (I interviewed someone yesterday whose mom began teaching him logo at age 5, after she herself took a class in it).

It's that easy - just freaking talk to someone who knows - don't generate ideas in a vacuum!

<comment><USER120> > my friend who started a 20 million dollar software company in Chicago and > then moved to Prague to try to repeat it and he knows exactly why software > engineering doesn't scale in Eastern European countries

I'm curious, why doesn't it? What went wrong with your friend's enterprise in Prague?

</comment></comment><comment><USER121> Labor costs, labor costs, labor costs. They dictate everything. Companies will find ways to drive them down. All this remote stuff, the first thought you have should be "labor costs". Same with "learn to code"

</comment><comment><USER122> TL&DR: re-invents the idea of off-shoring, sans discussion of attempts to do it in the past.</comment>


The Forbes 50 Hottest Startups of 2015 – Ranked by Growth Score - <AUTHOR> http://mattermark.com/the-forbes-hottest-startups-of-2015-ranked-by-growth-score/ <comment><USER2> You have to create an account to see the full list. I'm good with just the first ten.</comment>


70$ for a LIFETIME vps with 2gb ram and 40gb ssd - <AUTHOR> https://www.facebook.com/cloudatcost/photos/a.161035984104546.1073741826.161000270774784/240826499458827/?type=1 Got my first VPS with CaC in December 2013. No problems reported for me. <comment><USER2> There is no such thing as lifetime-service with one-time payment friend.

<comment><USER3> What do you think this is then?

<comment><AUTHOR> afaik it's a launch offer

</comment></comment></comment><comment><USER4> Got one, seems legit...

</comment><comment><USER4> Is it legit?

<comment><AUTHOR> It's an effective way to start an iaas business. Plus it's backed by a major company. Was worried last December when i bought one, now i'm happy with it (they fixed network problems a long time ago).

Ah, i'm not related to them.</comment></comment>


What are some oddball coding jobs in industries one might not expect? - <AUTHOR>

<comment><USER2> There's a language called SIMPL+ I think, where you program touchpanels for integrated audiovisual automation systems, where you have a motorized projector screen drop out of the cieling and a projector come online & a few video routers switch to certain I/O presets & maybe some table mics with feedback eliminator presets come online via I/O interfaces.

The predominant manufacturer for these systems is Crestron, but another is called AMX, and these guys make AV automation systems for uber high end home theater & corporate conferencing systems. These are also used in corporate NOC (Network Operation Command) rooms, where you have video walls & rows & rows of PC interfaces with control systems managing which PC desktops get which way onto the video walls.

I installed a few of these in the dot-com boom, for the likes of Sun Microsystems & other such dotcom industry leaders way back when, but haven't been into it for years.</comment>


Is Time Running Out For CNET And Its 2,600 Employees? - <AUTHOR> http://www.techcrunch.com/2008/01/07/is-time-running-out-for-cnet/ <comment><USER2> Why in the world does CNET need 2600 employees? Talk about Payroll bloat.</comment>


In Programming, One is the Loneliest Number - <AUTHOR> http://www.codinghorror.com/blog/archives/000890.html <comment><USER2> True, there's no one to keep you in line if you work alone, but there are _some_ people who are disciplined enough to keep themselves in line.

I think the real disadvantage of working alone is that you have no one to bounce ideas off.

<comment><USER3> As someone working alone, I find that not being able to bounce ideas off of a parter is not that much of a problem once you have users. You can evaluate ideas based on what users are saying or doing, or just try them out and see what happens. The real disadvantage is that it just isn't as much fun as working together.

<comment><USER4> But there are two categories of ideas: features to release to users, and decisions about how to write/structure code. Of course users are the best people to bounce features off of (although an initial 'partner filter' is often valuable), but they most likely have nothing to say about actually writing code, or for that matter almost any other business decision.

<comment><USER3> Bouncing code-related ideas off each other may be important for some. I'm a good enough coder that if I had someone to bounce ideas off of, I would be doing it more for fun than for any tangible business advantage. Not that my code is perfect, but I'm experienced enough now not to create any messes that will be a nightmare to clean up.

</comment></comment></comment></comment><comment><USER5> It's easy to find yourself justifying bad decisions that were made for the wrong reasons. A good partner can be a great reality check, in a way no one else could. This is probably the biggest single advantage for me because I can be dangerously stubborn on occasion.

</comment><comment><USER6> If you work alone you can never be sure you don't fall foul of the Dunning- Kruger effect <http://en.wikipedia.org/wiki/Dunning-Kruger_effect> :-) (This was on reddit today which is how I know about it!)

Seriously though. I basically code alone for 8 hours a day but I bounce my ideas of off anyone that will listen and I freely give up half my coding time to do this when the opportunity is there. There is nothing like a second opinion.</comment>


Kevin Mitnick points out the problem with Web 2.0/Cloud computing - <AUTHOR> http://www.alleyinsider.com/2008/8/uber-hacker-kevin-mitnick-web-2-0-is-making-hacking-easier-than-ever

<comment><USER2> that had nothing at all to do with cloud computing

</comment><comment><USER3> is is a very short article and he only got one question on web2.0/Cloud Computing.

He should be questioned more about this. Will certainly be fun to know more.</comment>


Data Rights We Must Demand from Companies - <AUTHOR> http://www.readwriteweb.com/cloud/2011/04/quantified-self-data-portabili.php?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+readwriteweb+%28ReadWriteWeb%29

<comment><USER2> This article needs an editor. I enjoyed it and agree with the points the author makes, but it's a bit hilarious that the first "data right" is labeled:

Give Us Access Our Data

Oops!

<comment><USER3> Why don't you make your critique on RRW, instead of just complaining here?</comment></comment>