TBH, I don't see why living in the midwest should drop the salary a company owes you that much. If you are a good developer, you should command a salary comparable to the value you add plus a profit margin for the business.
The only two explanations I can see is that, collectively, software engineers in the midwest are simply not negotiating for the salaries they deserve because given the cost of living they don't feel like they have to negotiate for better or that they are on average of much lower quality in the midwest that there is no room in the salary range there for being an outlier commanding a salary outside that range (i.e. no room for a unicorn in a stable full of horses).
If I worked remotely from Timbuktu, I would laugh at any employer that offered me less based on the cost of living in Timbuktu. It should be no different working in the midwest. Our world is flat.
If I move back to Memphis, TN, I can make approximately half of what I make now in the DC area to live as comfortably as I do. Does that mean I'm worth half as much? No. Does it mean I should expect to make half as much? Pretty much, yeah.
Beyond meeting my basic needs (rent, food, whatever) then it's just a matter of how much expendable income does that salary leave me. I don't know if 'percentage of salary' is the best way to measure it, but it factors in.
Paying me 'market rate' in a place where a 3 bedroom 3 bath house can be had for $150k is a vastly different proposal when that same house is $450k in a different place. That is the 'cost-of-living' difference. Sure, I might add the same x amount of dollars of value to the company in both locations, but if I can't live comfortably in my market, then it doesn't matter.
Note, this argument ignores the competitiveness of the markets as well. There are naturally more potential developers in silicon valley than there are in Bumfuck, Nowhere. Supply and demand does factor here.
Lastly, except in situations of outsourcing, you're generally not paid based on where YOU are, but based on where the company (or the location you report to) is. If you're working remotely from Timbuktu while reporting to an office in Silicon Valley, you should expect SV (or near-to) rates. If you're telecommuting to the midwest, you should expect midwest pay.
The big difference there is in what it costs to replace you. If you're Linus Torvalds, that cost probably goes way up. If you're like most of us, that cost is probably a close approximation to 'whatever they can hire a local developer for', assuming there are local developers in the area with the skills you possess.
A radiologist makes $350k whether he's in Manhattan or Memphis. A hedge fund analyst makes comparable, whether he's in LA or Louisville. A BIGLAWyer makes comparable, whether he's in Chicago or Charlestown. They are paid for the value of services rendered, and the doctors, bankers, and lawyers I know seem perfectly content to maximize their income while minimizing their expenses. Only the programmers seem interested in making as little money as possible.
Put differently: a radiologist thinks about moving from Manhattan to Memphis and says "Boy, that $350k will let me live like a king down there!" Meanwhile, a programmer says "Boy, I only have to make $75k down there to live like I'm living up here for $150k!"
/facepalm
I just did some (admittedly) anecdotal job searches for radiology, and there's a $150k price difference between New York and Indiana.
I knew a few attorneys that have moved into the DC area to raise their rates (and one who commutes two hours in to DC because otherwise, his billable rate is halved.)
The positions people are paid also depend on the cost of living in the area. If the median income for an area is $28k vs. $50k, they're simply not able to afford legal services that cost twice the market. This might mean that lawyers in rural areas only work half as much at the same rate, but that means that without some clever accounting, their yearly income is still (approximately) halved.
I'm not saying that no such positions exist, but I know that doctors, lawyers and the like ARE subject to cost of living variance. I don't know of any position in any field that isn't at least somewhat affected by the median income of the municipality in which they operate.
Choice quote: "As in Medscape's 2011 survey, the highest-earning physicians practice in the North Central region, comprising Iowa, Missouri, Kansas, Nebraska, and South and North Dakota; the mean income of physicians there is $234,000. The next-highest earners were doctors in the Great Lakes region ($228,000). Physicians in the Northeast earned the least, at a mean of $204,000."
As for attorneys, I said BIGLAW. Not "get local joe bob out of jail." (But law does have a bifurcated career path, i.e. T14 or bust these days.)
I note your silence about hedge fund analysts.
Here are the people who are paid in accordance with COL: labor. Programmers seem to think of themselves as laborers, despite having the intellectual caliber to be professionals. Or maybe I am overestimating my tribe. Perhaps we just anemic right hemispheres in our brain, leading to savant-like abilities in the left, leading to the warm embrace of pathetic compensation.
Worse than that in fact. Never heard of any labor union that would be OK with workers putting in extra hours without overtime pay.
From the article you linked, that statement is reinforced:
"There's less competition among physicians in smaller communities and rural areas," says Bohannon. "There isn't that same downward pressure on reimbursement that you have in metropolitan areas. Generally, smaller communities have to pay more to attract physicians."
This is the market at work. It doesn't matter what the cost of living is in those areas, what matters is the demand for the position.
I also can't ignore that that study is done against 'regions' so large that the cost of living within any of those regions probably swings wide in both directions. This is to say that a doctor in the "Northeast region" could either be in NYC, or way up in the Aidirondacks. Both New York state, both factoring into the ranges on the study, but huge differences in CoL. If you have something more specific, I'm happy to be proven wrong, but in my experience, I don't have anything to refute it.
Regarding BIGLaw, I wasn't referring to ambulance chasers either, but I concede that I don't personally know of any biglaw attorneys that have jumped locality. I also don't know anybody in hedge fund analysts, nor do I know anything about the job market.
FedEx is headquartered in Memphis, as is International Paper, AutoZone, etc.
Of course, they aren't exactly software companies.
There's a reason jobs in Timbuktu don't pay the same as jobs in NYC for any job type - all jobs from janitor to CEO. This is not unique to IT. You have to start by paying people a FAIR wage to cover their living expenses, and it goes up from there based on skills and experience.
If you flatly reject a job that doesn't pay you based on some mythical calculation of "value added" whatever that means, you'll be unemployed a long long time. (Unless you want to be a commission only sales person.)
If there are a hundred other people that can do what you do for cheaper? Of course you wont find a job. But if you're the only one? Well after all the companies tell you take a hike, and then find they can't hire anyone else - they'll come back. If the cost of paying you is less than the value you add, and they can't find any cheaper alternatives, it's in their interest to hire you.
As usual, Patio11 is the best voice on this subject - read some of his posts about salary negotiation.
FAIR wage is not meant to cover your living expenses, they supposed to compensate you for your time, effort and results. This isn't slavery, we are no longer working for merely surviving at somebody else's mercy.
If a firm is in Memphis instead of NYC and selling their services to essentially the same clients, then the owners of that business are already earning a greater profit on other cheaper operating costs like commercial real estate. By accepting a lower salary that simply covers a comfortable style of living you're simply putting even more money in the owner's pocket instead of yours.
It's a classic case of pareto optimality. The only explanation I can think of is that many developers don't see themselves as professionals commanding the salaries of professionals as skerrit_bwoy pointed out. There is no reason that good developer in any market shouldn't be living at the exact same standard of living as the good doctors, lawyers, finance people in that market. They should be living in the same homes and sending their kids to the same schools, etc.
These words should be stapled to every CS degree, and reinforced with classes if necessary. The lawyers/doctors have an ingrained culture in their professions of, well, being professions. We should totally steal that. (They can keep the guild systems, though.)
It's should be an obligation of every professional in our industry to negotiate higher and be seen as valuable as we actually are to society. The fact that most professional software engineers know their value and demand it severely hurts the salary bar for every other software engineer.
Silicon Valley and NYC are the only two places where I see developers actually beginning to demand what they are worth.
Many entrepreneurs in a lot of areas outside software were able to do what they did because they were highly paid professionals in a prior life that could afford to invest a chunk of their own money in their endeavor.
If we, as a profession don't ask to be paid according to value added, then in general there are going to be a lot less of us starting our own businesses and when we do, we'll have to cede control to non-technical types that did demand their worth like lawyers and finance guys.
My theory is that the first dotcom boom paved the road for the growth we are experiencing now because it took money from Wall Street and used it to line the pockets of technical folks with cash.
Anything within that range fulfills the minimum requirements of both parties.
The incentive to negotiate is based upon proximity to those limits. An engineer who barely makes enough to get by (like one making 90k with a family of 4 in the bay area) has greater incentive to negotiate than one making enough (65k in Boise, ID where a 3 bedroom house is 150k) in a less expensive area.
In more expensive areas, overhead increases. $6k/month for a office in Palo Alto reduces "value added" for an employee significantly. Electricity costs almost double in CA than in Idaho. These and other factors affect the value added. (This doesn't factor in so much when you work remotely).
I'm not going to get into supply and demand too much, but another big reason they pay less is because they can. Because very few employees are irreplaceable. Leaving a crappy 3 bedroom apartment in the bay area and moving to Idaho and buying a house in exchange for a 30% pay cut isn't a bad deal.
It may be the single biggest driver against the growth of cities.