The Catcher of the Exceptions
Some time ago, I came across three articles that attempt to answer the question from this post’s subtitle. Okay, I lied: I found Eric Sink’s Do elite software developers exist?, which references the other two. I have since spent some time pondering this riddle, and I think I’ve formed an opinion of my own.
Several terms have been used to refer to these (purportedly) extraordinary individuals: Rock star developer, 10x developer, and elite developer – among others. I’ll (mostly) stick to the rather prosaic exceptional developer.
Every one of the articles I mention is well worth reading, and I certainly recommend that you do. I will, however, attempt to very briefly summarize the gist of each of them. I also think I’ve discovered a few deficiencies in their reasonings, which I’ll try to address. Finally, I’ll offer my own contribution to this debate.
Note: I’m no Alfred Hitchcock (i.e., master of suspense), so I’ll just blurt out my own response now: I believe the answer is Yes, exceptional developers do exist. But there’s a lot more to it than that…
Scott Hanselman: The answer is No
In his post, The Myth of the Rockstar Programmer, Scott Hanselman posits that not only do exceptional software developers not exist but believing in their existence can be harmful. He then talks about unreasonable expectations, the possible (negative) effects on team morale, and the risk that these supposedly elite individuals might start acting like divas. As an alternative, he suggests you should, instead of looking for great individuals, concentrate on building rock star teams.
First off, I’d like to say that even though I disagree with Scott’s main premise, I don’t question many of the individual points he makes. For example, I would never condone anyone’s acting like a prima donna, no matter what abilities they may possess. But I know a lot of phenomenal people who are very humble at the same time. I also agree with the idea that software development is teamwork, and esprit de corps matters a great deal.
Where our views differ is the claim (perhaps not made explicitly but evident, in my opinion, if you read between the lines) that exceptional individuals and awesome teams are mutually exclusive concepts. This, I think, is a false dichotomy, and here’s my counterargument: Team sports. Obviously, as in software development, the performance of the team as a whole is the only thing that counts, ultimately, but superstar individuals still abound in this domain.
Greg Maddux, Michael Jordan, and Jaromir Jagr are all (former or current) exceptional individuals in their respective team sports. Yes, at the end of the day, their solo performances don’t really matter if the team loses, and there have absolutely been teams packed with superstars that failed miserably. However, not only do extraordinary people exist, but many of them are arguably so great precisely because they can instill fantastic esprit de corps in their team.
Paul Graham: The answer is Yes
In Let the Other 95% of Great Programmers In, Paul Graham opines that while it’s possible to train a lot of people to be perfectly competent (developers), it takes a talent to become truly exceptional. He goes on to argue that as the United States comprises about 5% of the world’s population, only 5% of exceptionally gifted people will be born in the country. Consequently, if the US wants to retain the superiority of its software development industry, it should modify its immigration policy to ensure it will “let the other 95% in”.
As always, I want my blog to remain apolitical, so I won’t talk about immigration per se. (Suffice it to say that I generally favor openness over isolationism.) Assuming, however, we would like to implement Paul’s proposition, my question would be: How do you tell who’s exceptional?
As immigration policy (of any country) is law, the expectation is it will establish a set of objective criteria for who should be allowed in. Yes, some room for interpretation may exist, but less is more, in this case, as you will want to ensure neutrality and fairness. As a result, these rules frequently favor young people with a lot of credentials (i.e., formal education) and “years of experience”. This, in my view, is exactly the way to identify individuals who, in Paul’s words, are competent but not necessarily exceptional.
Having many degrees, graduate degrees in particular, isn’t automatically indicative of great software developers, especially among practitioners (as opposed to scientists or academics). Anders Hejlsberg is an example of a phenomenal developer who apparently doesn’t have any degree at all.
You could argue that this is exactly the point that Paul makes: He wants the immigration policy changed. In response, I can only go back to my original question: How do you tell who’s exceptional? As this is very subjective, should more room for interpretation exist? If so, interpretation by whom? Visa officers who know nothing about software?
Note: I repeat: Immigration policy is completely incidental to this debate. The point here is to demonstrate the difficulty of establishing what constitutes “exceptionality” in software development.
Eric Sink: The answer is Yes (mostly)
In Do elite software developers exist?, Eric Sink explores two fields (mostly) unrelated to software development: Accounting and professional sports.
His argument goes like this: While you need a college degree to become an accountant, and not all people have what it takes to graduate, becoming a competent, successful accountant is mostly a question of having the right education and experience. Simply put, not much talent involved. (In his words, you “don’t hear people described as a ‘born accountant’.”)
Sport, on the other hand, is all about talent. If it isn’t in you, no matter how much training you get, no matter how hard you practice, you won’t become a professional basketball player.
Software development, in Eric’s opinion, doesn’t exhibit talent differentials as extreme as those that exist in sports but still a lot more pronounced than those present in accounting. Unlike sports, however, software development doesn’t have “good ways of keeping score”, which makes it hard to objectively determine who’s exceptional. (This is very much in line with my polemic with Paul Graham’s article.)
I don’t disagree, but I think I may have a better analogy…
Are software developers artists?
I don’t believe developers are artists – certainly not in the traditional meaning of the word. I do, however, think that the arts may represent a better analogy for talking about exceptionality in software development than sports.
Some artists, just like some sportsmen, are simply a lot better than others – exceptional. As in software, though, few “good ways of keeping score” exist. Leonardo da Vinci’s Mona Lisa may be the most extraordinary painting in history, but how do you express this quantitatively? The same goes for Paul McCartney’s Yesterday, possibly the most influential song ever.
Now, you could argue that I’m messing up exceptionality with success and fame. Leonardo DiCaprio is by orders of magnitude more successful and famous than an unknown actor from a remote local theater (no disrespect), but is he really that much better? That I don’t know – it’s subjective, remember? But if hundreds of millions, possibly billions of people watch his movies, he arguably creates a lot more value.
Which brings us to…
Follow the money
This may sound cynical to some (and blatantly obvious to others), but I think that possibly the fairest proxy metric for estimating the value of a software developer’s work is how much money someone will pay for it. I understand the drawbacks: A lot of great people will fall between the cracks. I think of it as a sufficient condition but not a necessary condition of exceptionality: If you’re paid a lot of money, you’re most likely exceptional, although the inverse isn’t necessarily true.
Let me be clear: I actually think it’s a very bad metric – just way, way better than any of the other “hard” metrics (education, years of experience, etc.). (Borrowing from Winston Churchill, “money is the worst metric … except for all those other metrics that have been tried from time to time” – just substituted ‘money’ for ‘democracy’ and ‘metric’ for ‘form of government’.)
If you consider how we approach exceptionality and fame in the arts, you’ll realize that money would in most cases work as a decent (if cynical) form of measurement here too. If an artist is exceptional, they’re most likely famous, and their work – whatever form it takes – is probably worth a lot. (Even if, say, in the case of authors who passed away a long time ago, this may be intellectual property in the public domain – the value still exists.)
You may point to examples where this seemingly doesn’t apply. My response, most likely, would be that it has to do with the subjective nature of exceptionality. Yes, Justin Bieber is exceptional, in the eyes of a great many people, regardless of what you and I may think :-)
Where does this leave us?
If you agree with Paul Graham and Eric Sink (and disagree with Scott Hanselman :-) ) that some developers create a lot more value than others – they are exceptional – it would appear fair to pay them accordingly, wouldn’t it?
What I’m suggesting is that you take the positive statement from the previous section (“you are as good as your paycheck”) and apply it normatively (“your paycheck should reflect your contribution”). Currently, this clearly isn’t the case: The software developer salary band is relatively narrow.
I think the problem is that while we (software developers) may see ourselves as sportsmen or artists – with huge differences in abilities between individuals – the rest of the world perceives us as accountants – mostly interchangeable professionals, either competent or not.
As Erik Dietrich argues in his intriguing book, Developer Hegemony, this may never change within the corporate environment. But that’s another story…