"For many years, I have wondered why a great programmer (one who is 10x as productive as a poor programmer) doesn't make 10x the income."
For many years I have wondered why so many people think that supply versus demand ought to be a linear function.
Even in the most simple economics 101 scenario you do not end up with a demand curve which is a straight line. It's always a curve, which is usually very steep at one end and very shallow at the other.
If the supply of oil dropped by 50% overnight, what do you think would happen? Those people who absolutely have to have oil, and can afford it, will pay for it, through the nose!
The price will go up (and up and up!) until we are at a new equilibrium in which only 50% as much oil is consumed by those buyers that are still able and willing to pay for it at the new price.
If the supply dropped by 50%, the price will probably go up by a factor of 100 or more, not just 2.
Similarly, in the same article he mentions that some NBA players are paid 1000x as much as some others. But are those players actually 1000x better? No of course not!
The right way to think of this is "supply vs demand for someone with that particular skill set".
The only thing you could reasonably expect is for a more productive/smarter/better person to be paid more than someone else. But how much more is going to depend on supply vs demand for someone with that skill set.
For many years I have wondered why so many people think that supply versus demand ought to be a linear function.
Many curves are linear if you zoom in on a tiny enough piece of them. If there are a million 1x programmers in the world, and you increase the supply by a single 1x programmer, the price for a programmer drops, in theory, but only by a miniscule amount. Moving one part in a million along the curve is not enough for the non-linear terms to be significant compared to the linear term. Likewise, adding a single 10x programmer is still almost completely linear -- you are adding 10 more units of programming capacity to the million units that already exist. We aren't talking about a 50% change in supply here, we are talking about a 0.0001% change.
Now, if you are a tiny company that needs maybe two 1x programmers, you aren't going to pay 10x for a 10x programmer that will be idle for 80% of the time, but why wouldn't a large company that needs hundreds of programmers be willing to pay 10x for a 10x programmer instead of paying for ten 1x programmers when the cost is the same to achieve the same amount of work?
One final analogy: You walk into a store and find that a single roll of toilet paper costs $0.50. Would you expect a 20-pack to cost vastly less than $10 (say $1.00 or $2.00) due to supply and demand? There are practical reasons for there to be some discount for the larger package (less packaging per roll, less human labor to deliver to store shelves, etc.), but a discount beyond that?
By the way, the whole NBA analogy is terrible. The goal is to win the game, so being a little better (in terms of points scored) than the average player can have a big impact on the binary win/lose outcome. You don't need to score 1000x as many points to be worth 1000x as much money. In sharp contrast, much of software development is not so binary (perhaps just a few highly technical areas where an average programmer may never create an algorithm that is good enough to work).
And in fact my oil analogy isn't so great because that is talking the about supply of a largely fungible commodity whereas with programmers the whole point is that different programmers have different skill sets.
So it's lots of different markets that aren't really competing against each other (the market for quantitative programmers who know Haskell and financial mathematics vs the market for programmers who know lots about Java, Spring, Hibernate and SCRUM) rather than a single market.
And that's a better explanation for why there are 10x differences in pay: the supply and demand in each "niche" is often very different (by an order of magnitude).
If you're a programmer working in exactly the same niche as another programmer and you can prove that you're ten times as productive, then yes I suppose you could get 10x the pay... The trick is the first part though (proving that you're actually 10 times as productive).
Mario West (as the cited lowest paid NBA player) makes 25,000 dollars... on a team (and league) he hasn't played for in 3 years. The NBA has a unionized workforce, with a collective bargaining agreement which sets salary minimums as well as caps, with all sorts of rules regarding compensation, employment, trades, etc.
Interestingly, an economist recently estimated LeBron James' fair market value at 50 million dollars a year, which is far above his 20m current salary (which is largely driven by the CBA to keep player salaries low).
Also, when you sign an NBA contract, most of it is guaranteed both ways. That is to say, a four year contract means you get paid for four years even if you get injured or your performance is lacking. The converse being, you can't simply sign with another team for higher salary if you feel you're being underpaid, underutilized, or under appreciated. There are exceptions, player and team options, but those are typically in the final year of a multi-year contract.
I don't have strong thoughts on the general point of the article, but I thought I'd clarify some of the basketball background info, because I feel it's somewhat misleadingly presented. And I'm not sure the NBA really serves as a great analogy with the author's points.
If you want to complain about unfairness of the market, at least argue for more equality, not more inequality. My heart won't bleed for you - if you want to be selfish, just be; don't cry to me for help.
I don't find the moral argument for pay per productivity very convincing. Being smart is like winning a lottery; you are lucky enough already to be born that way. I think (useful) effort is what should be rewarded, not productivity.
I think (useful) effort is what should be rewarded, not productivity.
How can we reliably measure effort?
If we are to reward by effort, how can we encourage people to go into fields where they will be even somewhat productive? If I could choose any job, it would be stand-up comedian. I may not make anyone laugh. Should my reward be the same as that of Louis CK or Chris Rock?
I am not sure we can reliably measure productivity, either. GDP is supposed to be such a measure, but it has its own share of problems.
Anyway, I argued from a moral perspective, not a practical one. It's a complicated problem, and everybody has a different perspective (and they should have).
To answer your question - what should be discouraging is your incompetence in the field. In other words, you either shouldn't get that job or become frustrated with it enough to try something else. And on the other hand, if you are good at something, you are probably already plenty motivated to do it. Think about it - if all the jobs would be payed equally for the same effort, why would you want to waste your life on something that you cannot do well?
The difference is that I see usefulness as a binary thing. To me, if there is enough good people doing the stuff already, therefore we don't need you even if you like the job, and you shouldn't get it (your work in that field is not useful). Instead of, having market system to depress the wages for all the people in that field, just because everybody is capable of doing that job. Or because there are differences in productivity between jobs.
Also, I agree that other people have to decide somehow whether or not your work is useful for society, it cannot be just your decision. But I don't agree the weight of this decision to be tied with productivity (I think it should be decided democratically, in fact), because that's prone to positive feedback loops.
if there is enough good people doing the stuff already, therefore we don't need you even if you like the job
How can we determine whether there are enough people doing the stuff already? Going back to my comedian example, should I get to be a comedian just because I started doing it at some minimum acceptable quality, before there were 'enough' comedians, whilst the next Louis CK has to do something else?
I think you're missing:
- we don't need to measure productivity in aggregate (and I agree GDP has problems in doing this) but for each individual, and probably only in a relative sense
- competence in a field and motivation to do it are not necessarily correlated, as evidenced by the popularity of career-change guides
- A democratic process for deciding whether your work is useful for society would require a lot of information on each person's work. I don't see how you could summarise that information without coming up with a metric which means something like 'productivity'
Anyway, we've veered far off topic and I don't think we'll convince each other. Have a great weekend!
If you're 10x as productive as other programmers, why not join a startup as an early employee, or be a technical cofounder? Wouldn't that be better, compensation-wise?
The primary issue with this comparison is that Lebron James doesn't have to be the best player in basketball to command the highest salary. Court productivity is what the author is measuring, but the true measure is how much a player will effect a team's revenue.
Lebron James puts people in seats, and those people buy jerseys and beer. Even after his skills start to dwindle, he still may command a much higher salary than equally productive players due to his ability to draw crowds.
Another element lost in the analogy is how much someone like Lebron makes the others on his team more productive. Because of his presence, other players on his team (and on the floor with him) benefit from his abilities and their production is improved. He's some form of catalyst or multiplier.
Of course measuring individual productivity and any individual's impact on team productivity is much more difficult in a business setting where statistics are not easily measured and external forces can impact the team's behaviors.
A basketball court is a rather fixed and controlled environment - team size, rules, and even temperature are standard. A free throw line is always the same distance from the rim, and the rim is always the same height. Business and development environments have multiple factors that could make one person more or less productive than they would be at another shop.
The fact of the matter is that it's necessary to have both superstar and fair-to-middlin' programmers in any decently sized organization. Why? Because superstars aren't usually keen on spending a bunch of time on support and refactoring, and every time they push something brand new someone has to keep it running. So far, the best success I've had managing programmers has been when I ensure the right people are placed in the right roles, not when a team is stocked with "LeBrons". I'd argue the Heat might not be as good if they had 5 LeBrons, either. After you get people in the right positions to contribute via their specializations, the next most important is -- by far -- to encourage mentorship and active sharing within the team. Working in isolation may result in fast results, but they'll be shit quality and no one will understand the code (speaking from experience here!).
As far as the salary scale for superstars vs average programmers, it's typical that the best people are compensated better, whether it be via salary, RSUs/options, bonus or fringe benefits, but it is not typical to compensate them higher by multiples of base salary. And why should it be? As stated by others, almost none of what is required of programmers by most organizations is anything that couldn't be done by a thousand other candidates. Most of you guys may not find it pertinent to take a global view, since large enterprise representation is dwarfed on HN by the startup & 1099 constituency, but when you get to the high levels of management (C-level) it is a real thing in most companies that the folks at the top don't understand the difference between what you get when spending x amount in y places. The problem is that the technical hiring manager or product owner aren't always allowed, in those situations, to hire in the place that makes the most sense, causing further stress and inefficiency in the organization. This, then, leads to conversations like the ones that resulted in the mass outsourcing of the late 90s and early 00s. I've long held that we'd all be better off if corporations took the position that most programming skills should be roughly equally compensated for no matter where in the world the individual sits, but until this scales from <10 (startup) to >1000 (enterprise), don't expect much. I employ -- against my will -- ~50 technical folks in South India at a total salary of <$600k US.
Sports analogies are quite accurate for any team work I think.
I recall Phil Jackson talking about the Chicago Bulls with Denis Rodman. Denis Rodman was sometimes late to practices, always in trouble, and etc. And Phil Jackson was connivent with him. When asked if this permissivines with one rebellious player wouldn't have a bad influence on others, specially when you have two other more important stars (Pippen and Jordan), he answered that they knew it better. They knew one team can have only one Denis Rodman on the team. And despite being more important than him to the team, they didn't try to play the "I'M the star here, so I should have the privilegies". They knew Denis Rodman needed this kind of freedom to perform, and they needed his performance.
So, just as you need more down to earth programmers to support a superstar, you also need to everyone know they role in the team and why they need each other. A superstar that doesn't recognize the importance of those with less talent than him isn't a good one to have on your team.
> I'd argue the Heat might not be as good if they had 5 LeBrons, either. After you get people in the right positions to contribute via their specializations, the next most important is -- by far -- to encourage mentorship and active sharing within the team.
A similar thing happened in football (soccer), when the Real Madrid of the early 2000s decided to let go Claude Makélélé, a defensive midfielder who was in charge of all the "grunt work". For the following 3 years Real didn't win anything, even though they had Zidane, Ronaldo, Figo and Beckham among others.
I have a lot of experience hiring programmers, and to me the salary range for programmers appears to be much larger than this article states.
Specifically this: "Here are some things you can point out to your employer to help make your case that you are worth 2x or 3x what they are paying other programmers, but you'll be lucky to be paid 25% more. If you are 10x as productive as other programmers, you'll probably be paid no more than 2x their salary."
seems incorrect when compared against my data.
Obviously if you look at total compensation there is more than a 10X difference between groups of programmers in many cases, but even just considering salary I have seen a pretty large dynamic range. For example, many large software companies (that I compete with when hiring engineers) pay their experienced engineers 3-4X+ salary compared to someone they might hire straight out of university.
The best methods of measuring productivity or value of an engineer are certainly worth debating, but the idea that the range of salary is something like 2X doesn't hold up for me.
Worth noting that those $25k earning players he mentioned are in fact getting paid to do nothing. Their salaries are still a part of the NBA Salary Cap and deferred to this year. Guys like Vander Blue ($28.8k), have been paid to play in a mere 3 "games" for a total of 5 minutes.
There are no NBA players getting paid $25K a year. The NBA minimum salary for a rookie is currently over $500K a year and around $1M a year for a veteran with at least 4 years experience. The $25K salary figure is misleading because they are taking into account extremely short term contracts for a handful of games. If you ride the bench for an 82 game season, you are making a lot of money, and you literally cannot make less than the number in the NBA's collective bargaining agreement.
Bench players are valuable assets. Your starters practice against them even if they don't play, and there are some guys who are talented but not up to the task of playing 30+ minutes a game for various reasons.
so why not start a startup if you are 10-100x more productive than the average? I doubt in a large political corp people will even notice you are super productive. The job can even be boring because the superviser may assign everyone in the same level similar jobs.
Startups competing for the same market? Mint vs. Wesabe comes to mind. And of course the struggles of our ecosystem's titans: MS vs. Apple vs. Google vs. Facebook, etc.
I always was a bit jealous of athletes, ballet dancers, concert pianists, etc, because their expertise is valued so highly. A top-level athlete or ballet dancer will have a complete support staff around them which provides coaching, physical therapy, etc. They will spend most of their time practicing. Imagine how good programmers we could be if we were treated similarly! And of course, elite athletes are well paid in dollars too.
I guess the difference is that the numbers of players on the court is capped. Even if a good player is only (say) 50% more likely to score a goal, having the best player makes the difference between winning and losing, so it's worth paying a lot. And the only way to get a good concert is to spend a huge amount of resources training one particular pianist.
With programming there is no cap. Rather than paying a particularly good programmer 10x as much, you can just hire 10 mediocre programmers, and they will probably get more done. So smallish differences in competence never translate into very large differences in pay or training.
> "With programming there is no cap. Rather than paying a particularly good programmer 10x as much, you can just hire 10 mediocre programmers, and they will probably get more done. So smallish differences in competence never translate into very large differences in pay or training."
That doesn't sound accurate to me. How can 10 mediocre programmers do the work of 1 spectacular programmer? I'm guessing this only applies when we're talking about mundane stuff. Smallish differences in competence translates into large differences in pay/training at the very top of the food chain.
To quote pg:
"This is why so many of the best programmers are libertarians. In our world, you sink or swim, and there are no excuses. When those far removed from the creation of wealth-- undergraduates, reporters, politicians-- hear that the richest 5% of the people have half the total wealth, they tend to think injustice! An experienced programmer would be more likely to think is that all? The top 5% of programmers probably write 99% of the good software." - http://paulgraham.com/wealth.html
PG is just making stuff up as usual. That "theory" isn't even consistent over a few sentences.
"In our world, you sink or swim, and there are no excuses."
"The top 5% of programmers probably write 99% of the good software."
So 95% of programmers make 1% of the good software, but somehow they aren't "sinking"? By comparison what do think happens to the far far majority of players that doesn't get drafted to the NBA?
> That doesn't sound accurate to me. How can 10 mediocre programmers do the work of 1 spectacular programmer? I'm guessing this only applies when we're talking about mundane stuff.
90% of the software that gets developed worldwide is mundane stuff. There's a gazillion mediocre programmer bashing away at a useless app That Revolutionizes How You Connect With Your Friends for every good programmer that hacks at next-gen filesystem driver or a tinier phone.
Rather than paying a particularly good programmer 10x
as much, you can just hire 10 mediocre programmers,
and they will probably get more done.
Not in finance; let me tell you from my experience poorly building a bitcoin trading bot over a few weekends, I lost money (play money) from silly off by one mistakes and not having a proper grasp of the statistics I was using. In this type of situation, only a real quant is likely to make money, and the 10 other guys will lose everything in fairly short order. Likewise in crypto: how many average programmers would you have to put in a room to write a secure storage system like Tarsnap?
But, I will agree with you in the general case: CRUD apps. There are lots of features and no one person can quickly crank them out no matter how "x" they are, so in these types of jobs, you really can get much more done with 10 average programmers.
CRUD apps. ... the bane of enterprise programmers and managers everywhere. Yes, they can be banged out quickly, but will they scale? Dear god the problems I've seen when a stupidly architected CRUD app suddenly had hundreds of gigs of data or tens of millions of records in a poorly designed database.
1) A team of mediocre performers will never give you anything more than mediocre results.
2) Nine women can't make a baby in one month.
Programming definitely has a cap on both quality and productivity.
And the only way to the maximize the results is with better people. Not more.
The problem is that until about the last two decades, most programming was done in non-competitive fields (internal enterprise IT), so nobody gave much of a fuck about quality or productivity.
Nowadays, most of us work in a context where software is crucial to a company's competitive edge. However, the monetary rewards and social standing of programmers is still very much based on the era of corporate IT (especially outside the SV bubble), and we are only slowly catching up.
Meanwhile the industry is desperately trying to put the genie back into the bottle, first through outsourcing (most of which failed miserably, because good programmers do way more than just code shit), later through wage-theft conspiracies and attempting to lower the barriers for importing cheap foreign programmers.
The forces shaping NBA player pay are so unrelated to those in play for programmer salaries that the author sounds shallow when he says that a factor of 4x between max and average in the NBA is why we shouldn't be surprised if there's a similar spread in programmers.
Just as a start, nobody will pay the average basketball player, but the average programmer can earn a nice living. Then move down the line to the owners' monopoly vs players' union, 5 players on the floor, etc.
A better analysis could start with why a 10x more skilled programmer isn't able to produce 10x more value, or, if she is, why she isn't the one capturing it.
There sure are domains where 10 hard working just-competent programmers can outproduce a single genius. Ideally the genius has a few near-peers and a grunt-programming support team, and everyone feels good about that.
I'd never hire Lebron, simply because he's an pompous dickhead. Don't care if he wins championships(and he doesn't on his own. proof = Cleveland) I wouldn't want to work/interact with a prima-donna like that.
For many years I have wondered why so many people think that supply versus demand ought to be a linear function.
Even in the most simple economics 101 scenario you do not end up with a demand curve which is a straight line. It's always a curve, which is usually very steep at one end and very shallow at the other.
If the supply of oil dropped by 50% overnight, what do you think would happen? Those people who absolutely have to have oil, and can afford it, will pay for it, through the nose!
The price will go up (and up and up!) until we are at a new equilibrium in which only 50% as much oil is consumed by those buyers that are still able and willing to pay for it at the new price.
If the supply dropped by 50%, the price will probably go up by a factor of 100 or more, not just 2.
Similarly, in the same article he mentions that some NBA players are paid 1000x as much as some others. But are those players actually 1000x better? No of course not!
The right way to think of this is "supply vs demand for someone with that particular skill set".
The only thing you could reasonably expect is for a more productive/smarter/better person to be paid more than someone else. But how much more is going to depend on supply vs demand for someone with that skill set.