

The LeBron James of Programmers - subtoo
http://blog.zeusprod.com/2014/02/the-lebron-james-of-programmers.html

======
Patient0
"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.

~~~
Bill_Dimm
_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).

~~~
Patient0
Yes these are all very good points.

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).

------
skannamalai
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.

------
asgard1024
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.

~~~
rahimnathwani
_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?

~~~
asgard1024
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.

~~~
rahimnathwani
_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!

------
eitally
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.

~~~
soneca
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.

------
visakanv
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?

~~~
Bootvis
Not if the startup fails ;)

------
fecak
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.

------
jstelly
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.

------
grin
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.

------
MisterBastahrd
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.

------
jw2013
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.

------
vilhelm_s
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.

~~~
visakanv
> "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](http://paulgraham.com/wealth.html)

~~~
supersystem
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?

------
the_cat_kittles
Basketball is a direct competition, and the arms race dynamic drives up the
price. It's not quite the same with programmers most of the time.

~~~
GFischer
Which areas in which programming is involved are arms racing? I guess finance
is one, but I can't think of many off the top of my head.

~~~
webmaven
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.

------
jongraehl
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.

------
jmnicolas
IMO the difference between an NBA player and a programmer is that a NBA
player's performance is a known quantifiable and verifiable fact.

I have never heard of a professional athlete that came at the top because he
was a lick-ass ;-)

------
coev
While LeBron is a good example of this kind of asymmetric skillset, the Chris
Bosh of programmers is...Chris Bosh, which is pretty cool.
[http://www.wired.com/opinion/2013/10/chris-bosh-why-
everyone...](http://www.wired.com/opinion/2013/10/chris-bosh-why-everyone-
should-learn-to-code/)

------
soperj
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.

------
delambo
Even though Lebron James is the best player in the world, why is there a good
chance that the Heat won't win the championship this year?

Also, could a team of Lebron James level players win a championship?

------
clubhi
If you could only have 5 programmers working at once and a few more on the
roster then salaries would work differently.

