>Compensation should be based on output performance and the difficulties and complexity of the work being done.
The output monitoring and quantification necessary for this is practically impossible - the output of programmers is deeply creative and subjective work. At best you can rank-order programmer output and award promotions. This all leads to getting paid efficiency wages and incentives under tournament theory. In short, a good chunk of your pay is a reward above unemployment or your next-best option, so that you are incentivized to work hard and your competitors are incentivized to compete for your slot. It's as economically efficient as piece work if employees aren't risk-averse, so mostly which system to use is based off of whether it's easier to monitor and quantify output versus rank-order and pay to overcome employee risk aversion.
>Why should my pay be less than that of a coworker that does the same exact same job as me simply because this is a remote company?
For better or worse, software developer pay is negotiated. Negotiation results are driven by BATNA - best alternative to negotiated agreement. For coworkers that are approximately as valuable to the company, they should get offered approximately the same efficiency wage above their BATNA. Workers in areas with fewer options available to them necessarily have a worse BATNA, so it remains fair that they get paid less.
Furthermore, although your entire salary gets paid by your current employer, they're only really enriching you by the difference between the pay and your BATNA. It's arguably less fair for remote companies to excessively enrich workers outside of competitive metro areas.
The output monitoring and quantification necessary for this is practically impossible - the output of programmers is deeply creative and subjective work. At best you can rank-order programmer output and award promotions. This all leads to getting paid efficiency wages and incentives under tournament theory. In short, a good chunk of your pay is a reward above unemployment or your next-best option, so that you are incentivized to work hard and your competitors are incentivized to compete for your slot. It's as economically efficient as piece work if employees aren't risk-averse, so mostly which system to use is based off of whether it's easier to monitor and quantify output versus rank-order and pay to overcome employee risk aversion.
https://en.wikipedia.org/wiki/Efficiency_wage
https://en.wikipedia.org/wiki/Tournament_theory
>Why should my pay be less than that of a coworker that does the same exact same job as me simply because this is a remote company?
For better or worse, software developer pay is negotiated. Negotiation results are driven by BATNA - best alternative to negotiated agreement. For coworkers that are approximately as valuable to the company, they should get offered approximately the same efficiency wage above their BATNA. Workers in areas with fewer options available to them necessarily have a worse BATNA, so it remains fair that they get paid less.
Furthermore, although your entire salary gets paid by your current employer, they're only really enriching you by the difference between the pay and your BATNA. It's arguably less fair for remote companies to excessively enrich workers outside of competitive metro areas.