Do elite software developers exist?
People have been debating for decades about the notion of a software
developer who is "elite". Sometimes this person is described as a "rockstar
developer" or a "10X" developer.
Not everyone agrees about this issue. A little over a year ago,
Scott Hanselman wrote a blog entry entitled
The Myth of the Rockstar Programmer,
which makes some very good points and mostly argues against the notion of a
developer who is dramatically more talented than average.
More recently Paul Graham wrote an essay entitled
Let the Other 95% of Great Programmers In,
which asserts that some programmers are exceptional and proceeds from that
notion to an argument for change in immigration policy.
I want to shine a light on this question by comparing the
software development profession to a couple of others.
In the world of sports, some people are simply a LOT more talented than others.
I know of basketball player who was amazing in high school. He was the most
valuable player at his school, and he led his team to many victories.
But when he tried to make the team at a junior college, he
just wasn't good enough.
And most juco players probably would have no chance at
making the roster of a mid-major school like Bradley.
And most of the players
on Bradley's roster probably wouldn't make it at a major conference school like Nebraska.
And in any given year, the players at Nebraska probably wouldn't be good enough to start
at an elite school like Kentucky.
And most of the players on Kentucky rosters just aren't
good enough to play in the NBA.
And lots of guys make the NBA but just aren't
good enough to be a starter.
And the average starter in the NBA is far less
talented than Michael Jordan or LeBron James.
I could cite lots of other examples from golf, tennis, American football,
and so on. All sports have very large distances between good
and elite. And in general, that distance is composed mostly of talent, not preparation.
A mid-level PGA tour golfer can get better by practice and training, but such disciplines will
never help him reach the level of Tiger Woods or Jack Nicklaus.
In sports, the existence of elite participants is widely understood and accepted.
In part, this is because sports have good ways of keeping score.
They have commonly accepted ways to measure things. At the bare minimum,
for each contest, we need a way to know who won and who lost.
It is generally understood that a single contest is not always won by the most talented player or team.
If the stronger player has a bad day and the weaker player has a good day, you can get an "upset".
But if your overall record after some number of contests is sufficiently strong, you will be
considered more talented, because no other explanation fits the data.
If your record against Roger Federer is 1-0, nobody is sure what to think about you. You might
be more talented than Roger. More than likely, you are not.
But it's really hard to claim you have more talent than Roger Federer if your record against
him is 1-20.
The scoring system is what enables us to wonder if Roger Federer might be the greatest tennis player
of all time.
Suppose I woke up tomorrow morning with the ability to always hit a golf ball into
the cup from 150 yards out. This feat is obviously possible, since I did it once. Now
let's pretend that I could do it every time.
Because of the scoring system, that's all I would need.
I don't need luck. I don't need to know "the right people".
I simply have to play the US open qualifying rounds,
(which anybody can do) and I win them all. Then I win the US open. That gets
me invited to the other tournaments. And I win them all.
Because of talent and a scoring system, Sports Illustrated would be forced
to run a cover photo of the best golfer in the world, an overweight middle-aged guy
with bad hair.
So, in summary, the sports world has:
- People who are vastly more talented than others
- Common understanding that a "good" player cannot become an "elite" player through training
- A scoring system which identifies elite people
Certainly I think we can say that in every profession, some people are
better than others. No matter what the job, the excellent people stand out.
The question here is one of degree.
How large is the gap between "excellent" and "average"?
I think there are lots of professions where the talent differential
is much smaller than it is in sports. For this blog entry, I'm going to use accounting as
(I might be on thin ice here. I need an example of a profession which
does not have the same kind of enormous talent differentials that we
see in sports. I could choose something like lawn mowing, but the
comparison to software will work better with a field that typically requires college
education. I mean no offense to accountants or bookkeepers.
And if there actually is a Peyton Manning in the
world of "assets=liabilities+capital", I'll be happy to stand corrected.)
Accounting is a serious profession. Most accountants have a four-year
college degree or equivalent. Admission to top accounting schools is
competitive. The CPA exam is hard.
But as far as I can tell, being a good accountant is mostly a function of
good training. I don't hear people described as a "born accountant". I don't
see people arguing about whether one accountant is 10X more productive than
Talent in accounting does not appear to distinguish the elite. Rather,
it distinguishes the competent. Some folks simply were not born with the
ability to complete the degree. Some folks simply lack the ability to
do accounting work without making frequent mistakes. Those people, in the
world of accounting, are not competent.
But it is roughly true that all competent accountants have the same level of talent.
And when I say "roughly true", what I mean is that the best competent
accountant is much, much closer to the worst competent accountant than Phil Mickelson is to
the golf coach at your local high school.
There is a reasonable expectation that anyone who has completed the proper
education and licensing will be employable as an accountant. In other words,
if you can get the degree and pass the exam, you can "go pro" in accounting.
In fact, there is a common understanding that those with more training
are likely to hold more senior positions. A masters degree in accounting
usually brings better job opportunities and higher compensation than a bachelor's
So in summary, the world of accounting has:
- Not much variation in talent among its competent practitioners
- Tendency to correlate rewards with education and experience
- Professional licensing requirements
Some people believe in the rockstar programmer. To a certain extent, I do.
Why? Because my experiences cannot be explained any other way.
I have seen talent differentials that seem very large. I know programmers
with ability that seems to be vastly greater than that of the average programmer.
Does that mean I believe that an elite programmers can do 10X the volume of
work as an average programmer? No. As Hanselman said, that's just nonsense.
The term "10X developer" is maybe the worst way of describing an elite programmer,
because it is quantitative. It invites disagreement. Numbers are always easier to
Also, when people see "10X", they immediately assume it must refer to work
volume. But measuring the work of a programmer is notoriously hard (read: impossible).
Some of my best days as a programmer were days when all I did was delete code.
We should consider the possibility that someone could have 10X talent (whatever that means)
without necessarily generating 10X output volume. Maybe the 10X shows up in quality instead
of quantity. Maybe this is why elite developers are not paid 10X the
Anyway, I doubt the talent differentials in software are as extreme as they
are in sports, but I'm pretty sure that some developers are a LOT more talented
And I've seen no indication at all that education can be used to turn a
good programmer into and great one. In this sense, I believe that software is more
like sports than accounting. Experience and training matter, but they won't
make anyone elite. Some people were born with a talent for programming that
cannot be obtained in any other way. In fact, some of the best programmers I know
have no college degree.
Nonetheless, when I am hiring a developer, I do place some value on whether
they have a computer science degree from a good school or not. In part, this is
because I believe experience and training do matter. Beyond that, I see a positive
statistical correlation even though I don't always see cause and effect.
But I readily acknowledge that I can't prove any of this, because, unlike sports,
we have no scoring system.
For this reason, some folks want to treat software development like any other
white collar profession. My opinion is that looking at software through the lens of
accounting doesn't work
well, especially if you are doing so while trying to employ software developers.
I also readily acknowledge that these opinions can trigger strong emotions.
In sports, it is safe to speak easily of talent differentials. Everyone
understands that most people don't make the big leagues. Everyone
agrees that elite players exist.
In software development, whenever we mention the possibility of
elite programmers, we can trigger strong negative emotions.
We can't prove huge talent differentials exist. We have no good way of measuring
To say that there are elite programmers is to suggest that I might
not be one of them, even thought I was trained for my job, I have a degree,
and I make a living doing it. You are talking about my livelihood and
my identity. These are probably core issues for me. There's a good
chance you are triggering some strong emotions. There's a
good chance I will overreact to those emotions.
In short, any discussion of the notion of elite programmers is almost
perfectly designed to trigger emotions that threaten the quality of the
discussion. This blog entry is going to make some people mad at me.
I regret that.
But the fact that this issue is controversial makes it interesting.
And I like talking about interesting topics, as long as the discussion
doesn't turn ugly. (For my defintion of "ugly", as well as my guidance
on how to discuss tough topics productively, see my recent blog entry
entitled How to make the Internet a nicer place to live.)
Postscript: Amateurs and Professionals
While I was writing this, I found it interesting to think about
the issue of amateurs in sports, accounting, and software.
(I do not use the word amateur as a pejorative. The root word of amateur means
to love. Some people play golf for the love of the game.)
As far as I can tell, there are no amateur accountants. Some people
love being accountants, but nobody does
accounting as a hobby. People who do accounting are either
doing it for money or as volunteer work for a cause.
Sports are different. In most every sport, there is a very large pool of amateurs and a very small pool
of professionals. The vast majority of all tennis players on the planet
are not getting paid to play tennis.
Broadly speaking, the difference between amateur and pro in sports is talent.
Not everybody makes it to the big leagues.
In software development, just like in sports, we have a large collection
of amateurs. Some people write code because they love doing it. This
has brought us a great deal of open source software.
And we have a bunch of pros doing software as well. In fact, we have
far more professionals in software than in sports.
But we cannot generalize
that those who write code out of love are less talented than those who write code
for money. In fact, it is easy to find examples of Possibly-Rockstar developers
who are working on open source projects for fun.
Anyway, I find myself wondering if software development might be unique in terms of
the attributes discussed here in this blog entry. Does
any other profession have the following profile?
- Anecdotal evidence of huge talent differentials, which some dispute, and which cannot be proven
- Lots of professionals, lots of amateurs, no general difference in talent level
- Unclear or disputed correlations between education and ability