66 comments

[ 2.9 ms ] story [ 121 ms ] thread
(comment deleted)
The author mentions Michael Jordan (and LeBron James) but fails to mention how rare "Jordans" are (the buildup highlights the skill differences, not the scarcity).

Truly elite software developers are as rare as Jordans, i.e. one every 20 years or so. John Carmack would probably fall into the elite category, Dennis Ritchie was probably his generation's "Jordan" - but if you're defining elite in Jordan/LeBron terms we wouldn't expect to see many elite developers.

That's true. It still means there's hundreds of folk who qualified for the NBA at all, and thousands in the next level down, and all those are much much better than the local sports club players.
Indeed. If software truly mirrors sports in this regard, we might want to think of elites as a once-per-generation thing.

But it is also interesting to consider the possibility that because we don't have a measuring system like sports, there is a Michael Jordan of software on the planet right now but nobody has ever heard of him/her.

What is it that would make John Carmack an elite programmer, though? I'm not saying he is or isn't, I just don't know what he did that well.

I think I remember reading one source claiming that his real gift was being able to develop graphics engines at just the right level of sophistication to just barely run well on the latest desktop computers that would be available when the engine was ready, even though the development project was started years before. If that's his main talent, it's definitely a gift, but does it make him an elite developer? Or is he more of an elite marketer/market analyst?

>but does it make him an elite developer? Or is he more of an elite marketer/market analyst?

The part were he also CREATED those engines (instead of just predicting the arrival or relevant desktop systems capable of running them) makes him a developer, not a marketer/analyst.

It also seems you didn't fully realize what you quoted.

Being able to "develop graphics engines at just the right level of sophistication to just barely run well on the latest desktop computers that would be available when the engine was ready" means that he could program at the cutting edge of what's possible for the available desktop hardware everytime...

Not many people can do that, and do it consistently and well, and in a field as difficult as 3D games (most of us people on HN for comparison, Rails/JS guys etc, are glorified CRUD developers).

I realize that his engine development abilities alone qualify him as an excellent developer, probably at least top 1% of all developers. What I think the article is talking about is the true handful-in-a-generation elite, who are quantifiably orders of magnitude better than the top 1%, and have the money and fame to go along with it. Are his development abilities alone that much better than even the average top 1% developer, or is it more other things to go along with that? Or maybe it's more accurate to say that you can't really separate pure development skill from being able to develop the right program for the right market at the right time.

Take Mark Zuckerberg for example. He's probably a really good developer, but he didn't become a famous billionaire on development skill alone. He is where he is because he had the right idea at the right time, and executed it aggressively and intelligently. Is that a separate skill from pure development, or is it part of being an elite developer?

To answer the question at the bottom: yes, literal rockstars. More prosaically, authors fit the bill.

There's some parallel world where programming a computer is obviously considered an author's profession (we use grammar, do we not) and where the profession of software editor is well-paid and prestigious. I'd rather work in that world, to be frank.

I had the same answer come to mind (musicians). This is a very analogous profession in terms of talent and success. And you see the same arguments about having inherent aptitude (or lack thereof).

Companies are idiosyncratic and have unique staffing needs and cultures. Is the same 5% of "rockstars" sought out by every company, or does each company find a different 5% of people? Analogously, the violin player in Dave Matthews Band is probably great, but he might have a hard time getting hired for an orchestra or holding down that job.

Also, athletes cannot be compared. They're playing games that are strictly defined and competitive. It's like trying to compare greatest football players to greatest military ground troops.

> 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 the average.

Unless the author is an accountant or otherwise close to the field (e.g., talkative friend is an accountant), this is a weak statement. I doubt people not in tech know that people in tech write articles arguing about "born programmers" and "10X" programmers. Such talk is internal to our field.

Most people do know a lot about sports, because sports is very interesting for most people. Accounting and programming, on the other hand, are opaque and boring-sounding to most people. When the author talks about accounting, then (again, unless the author is an accountant or close to the field - I see no mention of either) that could be talk about a stereotype of the field of accounting, not actual accounting.

Just for fun, a non-stereotypical super-accountant is Lewis Litt from the TV show Suits. He's clearly a rockstar accountant in that show, capable of achieving things 100 average accountants can't. Is he a realistic character? I don't know, just like I don't know if the "all accountants are about the same" stereotype is true.

All of this doesn't necessarily undermine the entire point of the article, of course - maybe accounting is not a good example, but some other field could be.

> this is a weak statement

The author admits as much:

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

> All of this doesn't necessarily undermine the entire point of the article, of course - maybe accounting is not a good example, but some other field could be.

Yes, exactly.

> Unless the author is an accountant or otherwise close to the field (e.g., talkative friend is an accountant), this is a weak statement.

The author admits in the parenthetical paragraph that the accountant comparison may be weak (and welcomes corrections), but given that the target audience is most likely unaware of a Peyton Manning in the world of "assets=liabilities+capital" (if one exists) it still adequately gets the point across.

I am not an accountant, but I wrote accounting software for some time.

There are two basic parts to accounting: one is very much following an algorithm. Okay, this real transaction occurred in the real world. Now you have to update your books to account for that transaction. If it's a routine transaction, there is pretty much a straightforward way to record it in your books, and you just do that until the transaction is fully recorded, and you're done.

That part is at this point in our lives fairly quickly being automated away. It's what was to a large degree responsible for the super-boring old-style image of an accountant being this person bent over mouldering books carefully noting down numbers. You guys are all programmers, I imagine you understand pretty quickly how that used to be necessary and used to involve a great deal of very routine work that none the less had to be done with great attention to detail.

The other part of accounting is essentially deciding HOW you are going to record certain kinds of transactions. Setting up the algorithm, basically, that you will then follow a thousand or ten million times each time you do a sale or a purchase or get new investment or buy more office furniture. This is definitely high-talent work! A lot of it has already been done -- if you just want to do a sale, then well, there are a few different algorithms that you more or less take off the shelf and use them. Kind of like how sorting algorithms work in our field. You don't start from scratch and reinvent sorting when you want to sort an array, you just grab quicksort or mergesort or whatever -- choose the one that's most convenient or works best for you.

What's left to do, then, is decide how to account for novel situations, or stuff that's unique to your business, and to mind the machines -- make sure that data gets fed properly into the routine algorithms.

I think that there's room for a very talented accountant, though in many businesses the accounting might be routine enough that there's not much use for a very talented accountant.

(comment deleted)
Rockstar accountants make companies like Enron. I mostly mean that in a complimentary way.
They also clean up Enron type companies. It's very different from just doing annual accounts for small businesses!

Big 4 Forensic Accountants:

- Investigate fraud.

- Quantify accidental or deliberate changes in company valuations between agreeing a sale price and the new owner getting control.

- Estimate the cost to complete engineering projects.

- Identify the value of shares and other assets owned by bankrupt banks in the absence of proper records.

And many other things, usually in a completely different domain every 4-8 weeks as their client changes.

One example is this report on electronic monitoring:

http://www.nao.org.uk/report/the-ministry-of-justices-electr...

"The Department believes that both providers charged for work that had not taken place, in a way that was outside what was set out in the contracts for the electronic monitoring of offenders. PwC’s estimate is that the potential overcharge by both providers in total may amount to tens of millions of pounds."

The author is right to doubt his statements about accountants. I know 10x accountants. They exist mostly because the bar for "competence" at the big four accounting firms is extremely low. This results in incredible variation among accountants.
I should have chosen law as my example. No matter what I chose, it would be wrong, but picking on lawyers is more fashionable.
I know a CFO who tells me he's a natural accountant, in that he says he gets intuitions about numbers, can spot problems in spreadsheets straight away, and generally outperform his staff on snap judgements on numbers. He says he thinks he was born with it.
There's a general tendency for professions to Dunning-Kruger themselves out of an understanding of the markers for real talent in other professions - or, in the more tragic cases, of the markers for real talent in their own.
Programming as an entire profession is too broad for a single discussion of elite performance. There are aspects of programming which are only about being competent to a sufficient degree, which is like accounting or practicing law. Other aspects of programming will take as much competence and creativity as possible and still want more, which is like athletics or creative writing or theoretical physics.
I came here to say roughly this. This isn't so much a topic for discussion today, but not long ago I can recall arguments about the difference between programming and scripting. Not long ago, calling yourself a programmer since you made a website in HTML with some CSS was laughable.

I also think the issue with the "Rockstar Developer" discussion is that there's no clear definition of what that even means. The author notes this in the article - and there have been terrible attempts at measuring this (anybody remember getting paid per lines of code?)

I find interesting that we usually compare so called "elite developers" with areas like sports, where an objective comparison can be established (Usain Bolt is better because he can consistently run 100m a couple of 1/100 sec faster than anyone else) [Edited for clarification, I mean their elite peers]

I'm not sure if we should also make comparison with the productivity of "elite writers" (even though there are best seller authors), "elite doctors", or "elite plumbers"

To further your point...

So, Usain Bolt has run the 100m in 9.58 seconds.

A decent time for a high school runner, according to http://www.reddit.com/comments/xu93j/hey_fittit_what_is_a_go... (admittedly an arbitrary , is around 12 seconds.

So, the difference between an amateur in high school and the best in the world is about 25%.

Er, yeah, time is linear, but I don't think the distribution of runners is.

I bet there's a bell curve there, and Usain Bolt is WAY, WAY off on the right part of the curve.

I bet a similar curve exists for runner's paychecks with similar placement for Usain Bolt.
In a team sports the bell curve difference is magnified through competition. A team with members all 10% "better" than the opposition (by some measure) could win 99% of the games. So once you count wins as the only deliverable, they are 100x better, not 10% better!

You could argue that programming is also competitive; a business that is 10% more efficient will routinely win contracts against the opposition, better their reputation etc.

Elite developers exist as it would be ridiculous to think that talent can't be found in this field. Like learning a spoken language, some become fluent in months while others never do. And I think talent is probably at least as relevant than it is in sports. The question is merely what leverage a talented programmer can get from say a 10% or 100% advantage over the average skill or productivity? Completing tasks as an individual is one thing, being in a team is something else, and competing as a team will further increase the leverage of skill. The 10x-average developer likely does not exist. Developers that produce 2-3x the average developer are probably common. What we forget is that those don't necessarily produce business value at that rate (which they solve problems), but like I explained above: being the winning team in competition could give increased returns by thousands of percent.

Most people talk basketball or quarterbacks. Not many people bring up one-dimensional track athletes.
If elite software developers don't exist, then elite writers don't exist. But I don't think anyone would make that argument.
Yes, they do: http://www.construx.com/10x_Software_Development/Origins_of_...

Eric's article is a prime example of what's wrong with software development writing: lots of opinion with a few anecdotes and analogies tossed in for good measure, but absolutely no reference to any scientific study to justify any of it.

I'm not trying to pick on Eric, but it really bothers me the extent to which we listen to, discuss and ultimately adopt the unsourced opinions of our peers. How much of what we do is done simply because someone like Martin Fowler told us to? Why do we so seldom ask, Where's the evidence?

I like to think that by expressing my opinion and labeling it as such, I am meeting the [very low] expectations set by a blog entry at a URL with my name in it. :-)

The McConnell link would have been an interesting thing to include, but if I had done so, it would be looked something like this:

For the closest thing I can find to real evidence and research supporting the 10X programmer, start at this link to a piece by McConnell. But even there it is interesting to note that most of the scroll bar is consumed by comments from people debating the validity of the claims.

Even with the McConnell link and its contents, I would still find myself saying that I believe the elite developer exists but readily admit that I can't prove it.

If we could prove it, we wouldn't be arguing about it.

The 10X developer is to software as low-carb is to nutrition.

Hey, that last line is pithy! I'm gonna tweet that...

> If we could prove it, we wouldn't be arguing about it.

You have way too much faith in humanity, e.g. HN is full of discussion where proved positions are simply dismissed because they don't fit into the world view of some people.

I won't name the topics here, someone else can fall into that trap, but I think anyone who read HN for more than three days should know a few examples.

I didn't love the accountant analog. Part of the problem, aside from measurement, is impact. A great athlete can make outsized impact. And while I'm sure a horrible accountant can make an outsized negative impact, it's unclear to me if a great one can make an outsized positive impact. What would that impact even be? Programmers impact can be felt with rev speed, quality, maintainabilty, performance, etc. It's hard to measure how much one person on a team can affect those things but at least they all matter and are felt, even if difficult to measure.

I'd like to know more about elite researchers. Or surgeons. Or oncologists. Or long term value investors. Are there folk in those types of professions who have outcomes who seriously outstrip the top 10% of their peers?

>didn't love the accountant analog. Part of the problem, aside from measurement, is impact. A great athlete can make outsized impact. And while I'm sure a horrible accountant can make an outsized negative impact, it's unclear to me if a great one can make an outsized positive impact. What would that impact even be?

Are you kidding me? A great athlete can do no impact at all. Except if by impact you mean get people to watch him perform. Other that that, it's pure show, nothing productive comes out of sports.

A great accountant on the other hand can save his clients millions or billions of dollars through (through tax loopholes for example, avoiding costly mistakes, offering good advice etc).

A elite athlete can have a very large financial impact on his team. Maybe you consider that financial impact to be less important than an accountant's financial impact on her clients, but I think they can be comparable in $$$ amounts.
(comment deleted)
If you can't measure programming ability then superstars won't get superstar salaries, unlike sports.
It's interesting that the article uses sports as evidence that "elites" do exist to some degree. On the other hand, I used to compete frequently and talked with many professional athletes. Even among that top 1% of athletes, the ones who were the very best (world champions or olympic medalists) usually said that talent is overrated and it's mostly about hard work.

That's not to say that I think everyone is born on equal ground. I just think talent should be thought of as having that work ethic and drive as opposed to some innate ability. For whatever reason, some people will just naturally work harder at something, especially when that person likes what they are doing.

I've seen this in the work place as well; the people who are interested in what they are doing usually outperform those who are uninterested, even when those who are uninterested may be less intelligent. However, as the people who are more interested continue to work hard, (I like to think) their intelligence will also develop because they are pushing themselves.

> the ones who were the very best (world champions or olympic medalists) usually said that talent is overrated and it's mostly about hard work.

They say that because they don't have a frame of reference as to what not being talented in their disciplines mean. Their coaches might have a better idea: they would not be in the team if their coaches didn't see raw talent on them.

Sports is full of examples of very talented players who tried coaching and failed (Ted Williams, Maradona, Jordan, McEnroe). They just could not understand why something so "easy" for them was so difficult for their players.

As the term elite (chosen) would imply, the elite can expect the benefit of support. This support is the talent, i.e. any predisposition. E.G. A lack of room to foster is a lack of talent that would be required to work hard. So, I wonder how work and talent are even on the same scale to be possibly compared.
There may not be 10X accountants, but there certainly are 1000X divider accountants.

Consider Rita Crundwell. She is, objectively speaking, 1000X worse than the typical average accountant.

http://www.wirepoints.com/how-the-largest-municipal-fraud-in...

I also have, a couple of times, worked with 1000X toxic bosses in the software industry. They usually avoid doing something so flagrantly illegal, but their projects fail and blame is deflected to other people.

Elite accountants usually get promoted into CFO positions, where they are very important and get a huge paycheck. There is a huge difference between a good and an amazing CFO.

I think 10X people exist in any area, including accounting and programming. E.g. John Carmack, Linus Torvalds, Poul-Henning Kamp. Some top accountants can be found by looking at CFO positions of huge companies.

These people are very rare tho' and most of us have probably not worked with a 10X person. Just like most of us have not played football with a "Ronaldo-level" player.

There are probably also 100X people - and they're mostly unemployable in any conventional sense. (Maybe Wolfram and Kurzweil?)

I think the bar for top talent is higher than is obvious, and it's lower than it used to be.

It's not at the level of 'smart and gets a lot of stuff done' - it's at the level of good as McCarthy and K&R and the guys (and occasionally the women) who invented coding in the 60s and 70s.

Most of them have been forgotten, but many of them had phenomenal skills - the kind of people who would work for a couple of months on a project, type in all the code on a single day, and have it work perfectly first time.

Or who would sketch out a fully functional timesharing OS for a new hardware architecture over a weekend and have it finished and working a couple of months later.

Or the small team at Xerox PARC led by Charles Thacker who decided to clone an entire DEC PDP-10 mainframe as a side project, because management wouldn't let them buy one and they wanted something nicer to code on.

(comment deleted)
One awful thing about these discussions is the invisible factor: team structure. (Did I miss the part where he addresses it?)

- One phenomenon: First Programmer racks up massive technical debt to spew crap out fast. (Which is a valid strategy, but has its tradeoffs.) Next programmers all have lower productivity because they're living in the First Programmer's world. (And the managerial system's set up to reject sufficiently large improvements to the situation.) Mediocre First Programmer becomes a superstar.

- Another phenomenon: Contractor who swoops in and gets the closest thing the team has to greenfield projects, while everyone else tends to pull maintenance-type tasks off the backlog. So the Contractor becomes a superstar.

- Another phenomenon: managers more likely hire someone who merely LOOKS and SOUNDS like an ideal programmer. Other programmers treat them with more respect too. (I remember a successful programmer who was fooled by an ideal-looking-and-sounding programmer, until they worked in a two-person team. Then he discovered Mr. Ideal simply parroted tech podcasts word-for-word. Just your typical big-mouthed junior programmer dudebro.)

Over time, these advantages compound. These programmers get into the right circles, tasks which level up their skills faster, etc.

The thing is, the "Michael Jordans" of software development existing isn't really all that valuable for the people looking for them.

What would start.up.ly do with John Carmack? Most of the companies that start up aren't trying to solve the kind of problems that need this fabled head down super-star coder to solve. What they really need is someone who can get the big picture of their business space, and know what to do to accelerate that business through software. The type of person they really need, and that are really valuable in software are the people that know what not to code, and how to get what needs to be done done, in a sustainable way. Startups don't need the guy who swivels his chair around, taps his fingers together, and does the magic they want. They require the guy who can stand there with them, help them figure out what they can do with what they've got, and what they need to get to do more, if they need to do more.

What they should be looking for are 10X EMPLOYEES, who have above average development chops. Then pay them appropriately. Not 10X, that's not sustainable, but value more than just the amount of code someone can write, value the overall gain someone brings to your product, and be willing to pay for it, and you'll do better than wasting time and money looking for Carmack to come help with your iOS app.

This article is missing something more fundamental: why pay more for talent?

Sports has very lopsided rewards, just by the nature of competition. In the Olympics, the winners often beat the losers by amounts that nobody would pay extra for under normal circumstances. But since the winner gets most of glory, it's worth it to be that much better. Team sports also have a lot of situations where being slightly better means you score points and otherwise you don't. Games are set up to have binary payoffs to be more exciting.

On the other hand, someone working in a warehouse could have an amazing talent at moving boxes, but they're not going to get paid much more, because the increase in speed isn't worth that much more to the business. (That is, unless someone wants to set up a contest?)

If you want to know why businesses pay a lot for programmers, you have to start by looking at the rewards to the business. Startups have very high and difficult to predict payoffs, so people are willing to pay a lot for talent that they think might give them an edge. This will be true even if the edge isn't all that great objectively speaking.

Elite programmers absolutely exist, but not because elite software developers are smarter or more brilliant than normal ones. Instead I think that the best software developers do the following

1. Ability to rapidly prototype responsibly - make good choices about which short cuts can be taken, and making sure everyone understands the implications of those shortcuts. There is some curve of doing things right and doing things fast, and the good people I've seen can walk this line appropriately given the business demands.

2. Ability to not get bogged down in writers block or analysis paralysis, which I've seen take out weeks of productivity in less experienced programmers (everyone gets this some time, regardless of experience)

3. Domain knowledge of the problem at hand - so that you know what you build will actually be useful. Everyone can be told what should be done by sales or whatever, but combining knowledge into one head rather than 2 is vastly more productive

4. Enabling the above 3 things for the rest of your team.

+1 for your 4th point. Rockstars are not much use if they can't bring up the whole team's performance a notch or two.
+1 for your last point - scaling your abilities (even if they're not elite) beyond just yourself makes you elite. (assuming you're a net positive producer, I suppose)
Elite software developers definitely exist especially when you measure the magnitude of contributions made to the industry and how influential the contribution was. I would definitely place a guy like John Carmack in the elite class considering his contributions to many notable video games over the years. This type of measure is not all that different than sports where an athlete's greatness is measured through the number of championships won and individual stats and records. I would definitely argue that the difference in talent between a competent/average individual in software probably isn't as big as in sports. If you quantify how "elite" an individual is in software by their influential contributions to the industry versus championships won and records set in sports, you're definitely more likely to achieve "elite" status in software. Take Ruby on Rails as an example, DHH is a hell of a programmer considering he's built a multi-million dollar business in Basecamp and how popular and influential Rails has been to web development. Now consider the confluence of factors that allowed Rails to get huge. Things such as design, code quality, timing, marketing, luck, etc. all played roles to differing degrees. If you compared this to something like being an elite basketball player there are even more factors out of your control. Being elite in basketball is pretty much impossible. If you're 6ft and 180 pounds there is no way you can reach the level of greatness of a guy like Michael Jordan. In a sport like basketball genetics plays a huge role in establishing the base for an individual to become elite, and obviously a ton of hard work on top of those genetics too. If you don't possess the combination of height, athleticism, strength, speed, long arms, big hands, basketball intelligence, etc. there's absolutely no way you can reach Jordan or LeBron's level.

With every industry where you need some sort of specialized skill and are able to quantify influential achievements in some sort of way, there are always going to be elite individuals.

There is a fait détail you sud not point out : in sports or accounting, the art is stable. Wereas in software programming the langage is nit stable at all ... ans it changes vert much the évidence of a stable-élite programmer.
Meta: I've seen a couple of comments like this on social media recently, with odd French-like accents. Was this auto-translated from French to English?
I wonder if we're evolving scoring systems right now. Not so much with hackathons and sites like codefights.com but through data mining github. I'm thinking of a recent post to HN in which successful github projects were correlated with a contributor who added more code than all other contributors combined. I suppose if I were looking for a 10X developer, I might reach out to people like that?
A couple things:

First to the authors question regarding a similar profession - It would seem to me that actual musicians and performers would fall into this category. I haven't seen any definitive measure for identifying an actual Rockstar, or a Rockstar Actor (to use the same vernacular), or Comedian. I don't think salary alone would identify this type of person, since its highly a highly subjective area that are influenced by personal tastes.

I think software shares this as well. What makes a good piece of software? Moreover, what makes a good software developer? Is it ingenuity and intellect? Or is it somebody who is content with the more mundane aspects of a software project, isn't going to write a new Graph API, but consistently and methodically develops clean and working code? In a theoretical scenario - lets say a single guy was responsible for all of the Bash scripting that went into the Init system millions of servers use today. There's nothing cutting edge in those things, its a lot of "start this, then this, and if this happens call this" type of linear design. Would he qualify as a "Rockstar" based on the fact that millions of people rely on his scripts to start machines up? Is he worth more to a potential employer than, say, John Carmack if your developing/supporting a Software as a Service platform?

I've been seeing a lot of articles exploring the Rockstar complex in the past year or so, which makes me think its more or less an invention of marketing than an underlying trend in the industry. Its basically asking "Are there software developers who are insanely good at writing code to solve problems?" The answer is yes - I dont think it merits scientific inquiry.

But there's a more interesting question for me that nobody seems to address; Why the sudden fascination (demand?) for "Rockstars" in development? In my personal experience it seems to be because of a (false) perception that people who write good code are hard to find. And even when you have somebody writing good code, because of the abstract nature of the work, its difficult to deliver something quantitative and tangible on a consistent basis.

I think one huge failure of the industry so far has been to agree on even a basic set of what would qualify somebody to work professionally in it. If I'm a civil engineer, no matter how brilliant I might be, or what my pet projects look like, there's no way in hell i'm getting around a municipal project or getting a contract to build a bridge for a city without at least a PE certification.

Why doesn't something similar exist for programming? It would make sense given that programmers are responsible for things like Air Traffic Control systems, Automated dosing of drugs in hospitals, and a lot of "mission critical" systems that impact millions of people.

(comment deleted)
The only plausible way to understand the 10x programmer is that this person is someone who accelerates productivity 10x, by inventiveness or whatever else.

For example, the person who wrote the first parser generator was a 10x programmer. He may have written less code altogether than the first client of the parser generator but he made generations of programmers more effective.