I'm good at what I do, and I aim for more than "a little better than someone with your same job in your geographical area."
Some of the most amazing consultants I know charge far above their local market average. And I'm always happy to write them checks, because they're amazing programmers, and they would be a steal at 5 times the typical market rate.
Edit: I am really curious who are those extremely smart programmers.
Guys on the top of this list?
Or guys who were at the top of the Netflix prize top scores list?
Those are some truly gifted guys (one in a million caliber), but even most of them don't earn 5x market rate.
The main difference is that I have spent a lot of time working on writing code quickly and correctly. Every time I competed in TC I would read the code of the best people and try to figure out why their code was so much simpler than mine. Now I think I can write clean code faster than most.
The downside is that I have spent a ton of time working on 50-200 line projects. Throw me into a 500k line code base and I'm no longer world class.
Getting to where I am is mostly a product of spending a ton of time in college practicing for programming contests. In college I saw a very strong correlation between time spent programming outside of class and programming skill.
1) Talented: Can they code well, even when things get tricky? This loosely correlates with things like TopCoder rank, but it leans more towards software engineering and debugging skills.
2) Driven: Are they relentlessly productive, even without supervision?
3) Solves the right problem: If there's a solution which provides 80% of the benefits for 20% of the cost, do they find it? Do they also know when it's time to turn a nasty ball of hacks into a rigorous model?
If you have these 3 things, then you will easily create 5 times more value than the average programmer. Note that you won't necessary get paid 5 times more, because that also depends on your negotiating skills, your marketing ability, and how much money your clients or employers have.
About your 3 points: I agree that having these in one person is a good combination. However people are rarely exceptional in all 3 points. Some guys are exceptional algorithmizers, others have really good intuition for enginering, creating an amazing design (for code), yet others have exceptional memory so that they can dive into huge bloated shitty code, and yet others deal well with monotony (when you have to do unchallanging tasks, or deal with other people's shitty code). Some people are fast like hell, others can grow beautiful thoughts if you give them days to think about a problem. But I agree that a bit of all of this is needed mostly. Also being strong in one territory you can emulate other strengths. If the tasks are not on your limit, you can emulate fastness with smartness, and emulate smartness with being fast. But when the problems are hard enough that you are at your 'limit', this emulation no longer works.
If you want to earn more than average, here are some suggestions:
1) Contribute heavily to an open source project, preferably one used by people with lots of money. This demonstrates your talent and drive more clearly than a few interview questions.
2) Learn how to market your skills and how to negotiate. For the former, study patio11's career. For the latter, try reading "Getting to Yes" from the Harvard Negotiation Project.
Put them in a foreign environment, with a foreign language/api/framework/application/etc and within a short learning curve they will find solutions to problems 1) you didn't know you had, or 2) you had long since given up on finding a better solution to.
If you can replace the programmer with books (and time to read them), they can't be that valuable. You don't pay one person 5 times market rate if 5 people at market rate can do their job. You pay someone for the concentration of talent.
Also, much of a programmer's worth pays off over time: specifically how easy is it to maintain their code? Writing truly maintainable code is HARD and difficult to quantify.
Yes, and I think you cannot convince them on a standard job interview. A job interview is like this: you solved the problems we gave you, congratulations, we hired you (for slightly more than market rate). They will not give you harder and harder inteview questions and finally give you 5x market salary in my experience.
Earning 5x market rate is not only about capabilities but more about building a very interesting track record, personal brand, which helps you differentiate yourself and helps you convince clients about your value. It is a bit like a long-term strategy game.
I've interviewed enough programmers to know that the average talent level is absurdly low. But there are amazing people out there, at every level of seniority, who do 5 times more work than average, and keep doing it.
If you pay only a "little bit" more than market rates, you'll lose these people late in the hiring process, when they take an offer for 40% more at another company.
I generally put in twice the effort as a my boss on almost daily basis, I expect to be what he is now in half the time he took to be.
Why not just flatly pay them on the amount of work done, regardless where(location) they work.
The grim reality is that there is just no meaningful way to objectively measure the "amount of work done" by coders and the likes.
Let's imagine an absolutely top-notch consultant with excellent hard and soft skills that mesh nearly perfectly with your current and projected needs.
How much would you offer them if they lived in NYC, Detroit, or San Juan, PR?
The mechanics by which a consultants comp are set are just wildly different from how full time salary is worked out.
This may work well when things are going well, but as soon as there are internal "issues", it is a recipe for disaster.
"Joe earns 25% more than me, but doesn't show up until 10:00, so why should I bust my ass coming in earlier."
"For what she earns, Shirley should be providing way better specs than this."
"Cut me a break. I spent 3 weeks overtime getting that thing done, and Fred gets all the credit (and money!)"
"I'm way better than Jim. Pay me as much or I quit."
"Jerry must have something on the boss to be paid that much for doing so little."
I could go on and on, but you get the idea...
Team building is tough enough. Making compensation public adds another layer of complexity. Now every internal concern is made more difficult because the dollars come into play. There is no argument or discussion where salary is off limits. Before long, that's what everyone will be thinking about when you really want them thinking about anything else.
I've never worked anywhere with an open salary policy, but my guess would be that, while it might be hard for some people to adjust to, in the long run it would remove a large source of internal politics.
I work for a public sector employer. My salary is fully searchable and posted on the local newspaper's website.
Unless your company is doing dumb things like discriminating against certain types of people, there aren't many surprises to be had. Frankly, working with a useless coworker is frustrating regardless of salary.
It's a bigger issue for the employer -- it doesn't take a rocket scientist to figure out that certain people are buying new cars at bonus time, while others cannot afford lunch.
I know that you didn't make the claim that they were, but it's a logical half-step to "unequal is definitionally inequitable".
My best colleagues made/make more than my average colleagues, at every place that I've worked, and that's exactly as it should be, IMO.
IMO, it shouldn't be an open secret that the top performers make more. Designate them Senior Widget-Makers or whatever. If they are masters of their craft, recognize them for it.
When things are kept secret, there are abuses. The top performers whom you respect may get paid more, but then so can the below average performer who is politically strategic to whomever makes compensation decisions.
Obviously that is not an issue with a startup, but that happens everyday in larger orgs.
... if only that were true...
Do they do a different job or produce more output in the same job? That's the only reason, IMO, for them to get paid differently. I believe that you should get paid the same to do the same job.
Said another way, these are the people that I cannot help but think of when I read Joel's essay on hitting the high notes: http://www.joelonsoftware.com/articles/HighNotes.html
Doesn't hiding compensation also add layers of complexity? Not only does the boss need to dedicate energy to maintaining the secrecy, but she must also keep track of the possibility that the secrecy has been breached without her knowing (i.e. the scenario you describe is in effect but nobody can talk about it).
No matter what, if you comparatively underpay a hardworking guy compared to some who is earning more and doing less. There is going to be huge friction, and salaries often leak out in some way or the other. And the good guy is either going to have his way or worst walk out.
Now please don't point me to some survey taken by some one in some corner of the world, where some group of people had bigger long term motivations when compared to immediate money and then declare tell that money doesn't matter.
Money is a huge motivating factor. Its strange that employers feel its unethical and unhealthy to compare salaries whereas at they same the keep comparing work all the time.
tl;dr Don't work overtime, work sustainably.
All your other issues are with differences in pay, which is exactly what the article is advocating against.
Deadlines and goals are fatal to the success of any software project today. And that is so for a very simple reason, you have to always drive towards something under well defined clear timelines.
This is very essential for two reasons. The first being measurement and continuous improvement. The second being you must decide what is a acceptable time for something to get done, and stick to it and adjust pace accordingly(The definition of a deadline). Else all it leads to overly delayed projects.
I have worked in a similar set up you described for a year or so. Have never seen such clueless roaming about in my whole life. Last time I heard they are still developing. I have done more work in a month than what they have done in say half year.
The reason is simple, pace again has a metric - Its, how fast?
If you don't set these limits then you are absolutely correct. In this perfectly acceptable scenario you do need deadlines, however I'd argue that adjusting pace isn't the correct step. Here you should remove low priority unfinished features from the deadline, maintain a sustainable pace, and use features completed as your metric.
vital? I can't make sense of your post otherwise.
"Joe earns 25% less than me, yet shows up at 10:00 - 2 hours earlier than me - may be i should start busting my ass a little bit." ( and if he does happen to earn 25% more, than, well, nothing lost and changed :)
The NLRB is known primarily as the board that governs unions and union organizing. Well, for many years they've considered employees discussing salary info as protected organizing activity. Any employee that experiences adverse action by an employer after discussing salary with a coworker should contact the NLRB. They will pursue the issue on the employees behalf.
This advice comes from my lawyer, but you should consult your own before you do anything. Also, my 0.02 is that as an employee, I feel I'm often at the higher or top end of my employers range, and despite the fact that I legally COULD, I don't really see any value in discussing my pay with a coworker.
That's what you think, and that's why your employer also likes you to keep your mouth shut. Or?
(After all, more than 50% of people are above average drivers, or whatever the exact anecdote is...)
Back in the day, I used to work for this place where, you've guessed it, according to the people who did my salary reviews, I was always close to the top end of my employers range. So, yeah, you can imagine how that worked out :)
While it's always possible to get a general impression of what a coworker earns (always assuming it's possible, or legal), it's no substitute for numbers.
The salesman fluff I heard is identical to the "you're near the top end of the range for this title" crap that you hear from HR. It's fluff, intended to make you suck it up and go away.
It depends on your goals. If your main goal is negotiating more money for yourself, and it's true that you're already at the high end, then yes, not much motivation. If you're interested in seeing a more equitable distribution among your coworkers, letting them know your salary can help them negotiate a better salary.
Other reasons to publicise your salary include helping to recruit people to your field (if you're paid a lot) or debunking the idea that you're well-paid (if you're not).
For instance: I teach college, and I'm happy to do so, but I'm not in it for the money. I discovered that my students often think that us professors make a lot more than we actually do, and I decided to start telling them: in my seventh year as an assistant professor (in my previous job) I made $52k/yr, and was (I think) the highest-paid member of the junior faculty. Many of my students made more than that as starting salary. It was enough for me, but the students were shocked, and came out with a better understanding of where graduate school might lead them. Knowing my salary also helped some of my colleagues negotiate a better salary for themselves.
I would go on to add and say, If you a pay people flatly some will work, some won't and rest will do mediocre. The guide to get work done is to drive the rewards in that direction.
I fail to understand what stops companies from paying people on the basis of work done, rather flatly or hours spent. Is it because it will set a dangerous precedent and that productive people will end up earning more than what you expect to pay?
I refuse to believe that people are not motivated by money or that money is somehow not a major motivating factor. All passion, determination et al management talks is OK. But I'm not happy earning less than what I'm supposed to. Just because I could it doesn't mean I should. I do more than everybody else back at work, so I obviously I deserve more.
The way salaries work is to get bulk of the work from a few. But then reward every body equally on a average basis. That to me seems like expecting a few to carry a burden of the whole lot. And has a strong stench of communism to it.
What are you going to do for a programmer?
Feature? Prepare for features that barely meet the spec and nothing else.
Lines of code? Prepare for massive code bloat.
And all of these will also mean no-one will bother with internal tools or any quality of life clean ups. Refactoring will be avoided. Helping other people will mean earning less money.
There's also research out there that shows this is a bad idea. This type of incentivization has negative effects on productivity in our type of work. People won't say no to more money, but it doesn't make them work better.
Your final paragraph highlights bad management, not communism. If you've a few stars and a lot of mediocre then your management has failed. Be it their hiring, their day-to-day management, their personal development of their staff, their lack of challenging work, poor planning, whatever it is it's not expecting a few to carry the burden, it's letting a few carry the burden because of bad management.
There is good enough metric for your 'work', its wealth generated at the end of it. Many even refer to it as value created. Again I know the next question you will ask is what if the person worked hard and still fail. Well that is not going to be often.
Team work is every body working to achieve something. One set of people making up for other peoples inefficiency isn't team work.
I am not telling people must be paid more money to motivate them, I am saying.. We must ask people to work more to earn more money. Which is perfectly acceptable. I don't know why I should earn equal to some guy sitting next when I do far more than what he does.
Again counter argument to that which people put is, that putting in extra effort is personal choice so it shouldn't be compared. Well in that case, the other argument is also valid. If some one chooses to be inefficient its his/her problem.
In a company larger than a startup, this is usually outside the employees control. A project with a small (or no) market, isn't going to make a lot of money, even if it was a lot of work to create. The people assigned to work on such a project may not be there by choice. Also, what about "internal" projects that don't actually generate revenue, but make everyone more efficient?
The point isn't that a productivity can't be measured, but there seems to be a lack of willingness to measure it.
Its simple, if you actually start paying people by their work. You are at the same time putting a lot of other not-so-good-but-lucky people in serious trouble. People higher up in the hierarchy are especially very afraid of this. People who got quickly promoted during the gold rush, people who benefiting from job hopping by claiming 30% hikes on each hop every 9 months will be in serious trouble.
In a place where all your work is transparent and your rewards are driven by it. A few productive people will run the asylum.
The majority isn't going to be happy with this. People love getting rich by chance and not by choice and work.
The graphic designer, for his/her awesome design? Me, for the time I spent implementing it? Both of us?
What if it fails horribly? Do I take a hit (in the sense of not creating wealth/not getting paid more) because the graphic designer did a horrible job? Orders came down that said "Implement this" and I had no choice but to say "ok" (maybe I could argue the point, but at the end of the day it's not my decision)
I also fear that trying to measure output, like you suggest, would create perverse incentives. When everyone's pay depends on their contribution to the bottom line, it's in everyones interest to attribute as many accomplishments to themselves as possible (while downplaying any mistakes). In this kind of environment those who float to the top are not necessarily the best individuals, but the ones most skilled at self-promotion. This is no better than the current situation, really.
Edit: In principle, if you could (in a non-political way) measure someone's contribution to the bottom line, this would be an ideal yardstick for setting compensation. But I think that the complexity of large projects and human nature makes this kind of measurement impossible.
This happens all the time. Startups are risky propositions, and sometimes people work hard for years and come away with nothing to show for it.
Moreover, software is creative work, not brick-laying. There's a fair bit of evidence that incentive schemes harm that work. (See "Punished by Rewards" for details.)
I code because I love it. If it didn't pay, I'd be like my actor/musician friends and get a day job. So I just want my salary to be livable and fair. I don't really care about maximizing it.
But just because true hearted altruistic people like you exist. It doesn't mean I must replicate the same. I'm motivated by many other factors apart from money. But just because that is the case, I feel no reason to settle down for less than what I deserve.
And just like you mentioned I want my salary to be just fair. Just pay me for my work. That's all I'm asking. And is that a unjust demand?
Your demand is not unjust, it's meaningless. This is not some god-given court that determines what you "deserve".
You say that you are motivated by money and other factors. So then the question is: If job A pays x and gives you the other factors that you say motivate you, and job B pays y but gives you none of those other factors, what is the minimum ratio of x/y for you to take job A over B? If you say 1.0, then no, those other factors do not matter to you. If it's <1.0, then why is it not "fair" for the job A to pay that?
Well in that case let karma decide for itself.
Now lets come to what you are talking about. I guess you didn't understand me. I was asking why is it that employers for people under the same conditions pay the same money for different work delivered?
What you are saying is true, but that is a totally different question in itself. What you saying is to consider a trade off between other factors and money in two different setup and is perfectly acceptable.
But that's not what we are debating here. We are debating why some who is doing a lot more extra is getting paid the same as some who isn't doing all that. In that case I don't see any reason why the first person shouldn't make extra.
I would go to an extent to say he doesn't just deserve but has the right to make that something extra.
Note that they have different levels of positions, so "the same" is only valid within a level. If you are so awesomely skilled and productive, presumably you will have a higher-level position.
You are focusing on one aspect to the detriment of others. If you have individual (i.e., arbitrary) salaries that lead to people who are better negotiators getting higher salaries for reasons that have "nothing* to so with work delivered, how can you say that is fair.
The world is a big optimization problem, and in my opinion the policy described in this post does a pretty good job at that optimization.
You need to pay people enough, but not too much. The rest is about having leadership in place that can create a good work environment.
If compensation was correlated to performance, industry would have figured out a way to pay for performance and let the people doing nothing go.
People in creative jobs are not simply monetary-maximizing machines. They will work hard if their work is interesting and rewarding in all kinds of non-monetary ways. (I also assume that what they think is that if you don't like the work, you'll leave and find one you like better, or that pays better. So you don't get people who don't like the work, don't do a good job, but will try to hang around as long as possible because it pays so well.)
Besides, I agree with the other posts that any practical scheme for paying programmers for performance will be subject to issues of "optimization by proxy". Just look at finance: there, where you'd think it would be easier than most other fields to measure "the wealth generated" by people, all that apparently happens is that you incentivize short-term gain at the cost of assuming huge long-term risks.
On the similar lines I don't understand the concept of companies asking people about their compensation in the previous company. You are supposed to pay for my work, how does my compensation even matter here?
If my previous compensation was high will my work in the current company become more valuable or earn higher profits?
Personally, I prefer this. Maybe because I tend to like smaller and less hip cities. But it keeps things simpler for the company, and it means that, as an employee, you have a pretty significant say in, what we can call, your net income.
Aside from the clear moral judgement you're making here, which doesn't belong in any salary policy, the problem with your argument is that chances are that you made that choice while maintaining a "urban" salary... i.e. you are fundamentally exploiting a loophole in "classic" remuneration systems thanks to telecommuting, and you're now complaining that those systems might be catching up.
What you're calling a loophole is the new reality of information-based labor. Companies that penalize their employees for taking advantage of this flexibility to set their own lifestyle priorities are going to suffer in the market for top talent.
It's a choice; everyone makes lifestyle choices, like you say, as an employer there's nothing you can do about that. Peldi's policy gives you a chance to make enough money to live comfortably wherever you want to live; I think that's quite a perk, for most people. If your lifestyle choices completely trump your professional interest in joining the company, you'd probably not be a good match anyway.
Besides, the policy is weighted by bonuses, and sounds more like the starting point for a conversation rather than a straight-jacket. Knowing the man a little -- we went to the same highschool, although he already was a celebrity and I wasn't ;) -- I'm quite confident he'd do his damnedest to find a satisfying and realistic agreement for anyone interested in joining.
I'm sure Peldi's intentions are good here but from a potential employee's point of view I don't see why anything but the quality of my work should determine my salary.
If an employee was to get rid of his/her car, would you reduce his/her salary by $~1200/month because it isn't fair that he/she nets more money than the people who can't live without 2 cars?
However if you don't care where they live, they should all be paid equally - a person living in Thailand doesn't deserve less money than a person living in NYC, and just because they don't need as much money, doesn't mean they don't deserve it.
So what matters? Is it the law? Or is it the spirit? Is it the quality of work or the location where the person was at the time they did the work?
What if the Mumbai resident comes to a conference in SF. Do you pay them SF rates for that week? What if they come for a month? Six months?
This may seem like I'm looking for (what we call in video games) an exploit. I am of course. But so is balsamiq. It wants to have lower salary costs. It could pay everyone the same, no matter where they live. But it knows that Mumbai residents can't up and move to SF. So it claims to be fair (if they moved we would pay them more!) but the reality is that it knows they cant.
I'm not saying I have a better idea. But I'm not the one blogging about it.
Guess what I am going to do ...
> Do you really want to employ someone who does that at all?
Do you really want to work for someone discriminating based on location and not performance?
If hackers in NYC are paid $150k, and Philly $80k, neither of those numbers matter. What you want is the going rate for remote-working English speaking US citizens in eastern time zone close to a major airport with the given skill set.
What this company is doing is like deciding how much to pay an employee based on whether or not they have a pool and tennis courts in their backyard, rather than based on supply and demand.
Note: Location still matters, which is why I mention timezone because depending on business, location/timezone of existing employees, and where HQ is located it may change the demand. Also since most remote workers travel to gettogethers occasionally I mentioned airport.
I'd hate to have to take a giant pay cut just for wanting to actually enjoy my life. If anything my productivity and quality of work has gone up. Pay me less for that and I'm off!
Instead of paying employees the wages that supply and demand would have predicted, they gave their workers a little more. It wasn't because they were stupid. It was because they were savvy. Paying great people a little more than the market demands, Akerlof and Yellen found, could attract better talent, reduce turnover and boost productivity and morale.
Highly recommend reading Pink's book.
 - http://www.amazon.com/Drive-Surprising-Truth-About-Motivates...
But once you grow a bit, you will inevitably have employees take a look around and think:
"Hey.. home come I am much better than these two guys around me,
and we all make the same money ?"
a) 45 year old veteran, 3 years in the company, titled "Software engineer II"
b) 25 year old grad, 1 year in the company, titled "Software engineer V"
It's been my experience that there are several clearly recognisable personality types and work ethics in a typical software development team, with two groups in particular that always stand out.
You can have people who come into work, do a decent job, and then go home and spend time with their kids and other things that really matter to them. The job isn't something they live for or feel deeply invested in, and they are unlikely to go "above and beyond" on a regular basis. They welcome training to develop their skills and will consider new working practices with a reasonably open mind if a good case is made, but it is up to the company to arrange and manage such things. However, the bottom line is that these people do competent work to a reasonable professional standard. In my experience, this is by far the largest category in most software companies.
Then you have the geeks, the ones who love the work, spend a lot of their spare time programming as well just for fun, follow all the latest trends, and -- dare I say it -- often frequent forums like this one. It is in the nature of this group that they will learn and develop their skills faster both because they spend more hours programming themselves and because they are exposed to more diverse influences within a shorter period of time. These people won't be the ones waiting for the company to organise training, they'll be pushing to get the latest book or go to a useful conference, or they'll be giving the training themselves to share with their colleagues some new ideas that they've discovered elsewhere. The risk with the younger members of this group is always that they will go too far: while they can be many times more productive if properly guided, almost all architecture astronauts, latest-shiny-development-process evangelists, and similar poisonous influences fall into this category as well. The risk with older members of the group is that their priorities in life may change, often as they have growing family commitments, so even if the desire is still there, the time to keep up as much as they used to may not be. You can usually recognise the ones who manage it, because they'll be the ones who somehow manage to help half a dozen different colleagues to solve some non-trivial problem each day, even though they still get their own work done faster than most anyway.
In my experience, everyone in the office knows which of these (or other) categories everyone else falls into within a few weeks of working with them. The former group don't tend to begrudge the effective keen ones the faster career advancement and more rapid pay rises they tend to achieve, because they recognise the difference in approach. On the other hand, they also have little time for the keen-but-poisonous ones, and become mighty upset when someone who thinks they're all that but isn't really generating the results to back it up is being mistaken by management for one of their more productive brethren and rewarded disproportionately.
In short, there are different types of people and they know who each other are. As long as reward and career advancement are based on genuine merit, I don't think most older "journeyman" professionals do begrudge the young high-fliers their faster progression.
(Edit: As an aside, I assumed your examples were exaggerations. I have never met the 25 year old, my egotistical self included, that was worth a senior job in a larger development group, even if they thought they were at the time.)
Balsamiq have a policy that aims at fairness, is transparent (and yet open for discussion!) and has a better-than-average chance of appealing to their target audience - people who aren't driven by money but don't want to be taken advantage of.
If you can't find a compromise that works for your situation - go work somewhere else.
Before people get too bogged down in just the salary piece of this puzzle, you should also read Peldi's comments on bonus: http://news.ycombinator.com/item?id=2986673
Balsamiq is a fairly unusual business and Peldi has grown something pretty extraordinary. This is a highly profitable business that has made a conscious decision to be great on its own terms, not on the terms that a Silicon Valley venture capital firm might impose on the business.
If you want some more background, go and watch this video of the talk Peldi gave at Business of Software last year. There is also a transcript you can speed read if you don't have an hour to spare.
"You are paid a little better than someone with your same job in your geographical area."
Of course you are, otherwise your employer wouldn't be in business. The operative word being "little". Substitute "a lot" and either they have a disruptive business model and are willing to pass on the cream to their employees (unlikely), or they are going out of business.
Give me any dev in any city in my country and I will be able to tell you what they are on based on their seniority and sector plus or minus a few grand (and what's a few grand after higher-rate tax?).
Tldr - this policy is moot because salaries are open secrets.
FWIW, if you want to earn more go into contracting (i.e. take on more personal risk), move sector (i.e. go into finance), start your own company, or move into a more traditional profession.
But I guess they stick to having people work remotely from within the US?
How does the open salary policy work? Are salaries posted on a big white-board? Does the open salary policy have an effect on employee behavior? In many cases people are reticent and fearful to talk about/compare their compensation. People tend to attribute their personal self-worth to their number and consequently hold on to it pretty tight. How did you guys get over this particular hurdle?
X and Y are places with similar cost of living, but people in X have lower wages and they are used to live cheaper (i.e. they buy less goodies, etc..) than in Y.
In other words, maybe it would be better (more fair) to compare costs of living instead of average salaries?
"9. then all weighed by the cost of living in each location: this is important because it's fair. The fact that we're using cost of living instead of average wages is even more fair (i.e. Italy has low wages relative to the cost of living)."
The last sentence, regarding Italy, corresponds to the situation I described. So, if it is fair for profit sharing, then it also seems logical to treat it as fair for salaries as well.
The former must be dependent upon local wages. The latter is able to incorporate fairness.
Guess what? Outside the Valley bubble, more often than not it IS quite enough.
I'm hoping for a future where you get paid what you are worth and can travel around the world working from wherever you want. A boss that says "Yeah, the beaches there are wonderful and people earn $5/month. So your new salary is $6" is a deal breaker in that dream ;)
If you're a competent programmer, you're already living in that future. Remote work is pretty easy to get these days, especially if you freelance and do either web dev or iOS/android. I don't do either and I've still managed to live on three continents in the last year or so.
If I generate $1m of value for your company, I should be able to negotiate the capture of a reasonable chunk of that value. My decision to live in a high or low cost city doesn't change how much value I'm delivering, so it shouldn't have a meaningful effect on my price. Either I'm worth it, or I'm not.