Coderific

rss feed

blog - why you don't want to hire rock star programmers

posted by witten on May 25, 2007

Previously (http://coderific.com/blog/post/556) I wrote about a particular kind of programmer with a certain unhealthy affinity for excessive abstraction. Apparently though, in some circles this trait is viewed as a positive.

Let's play a little game. I'll list off a few recent job posting titles from Craigslist, and you tell me what they have in common:

DHTML rock star wanted for hot consumer facing product
AJAX Rockstar: Search & Discovery
Technical Architect / Rockstar
Windows Mobile Developer - looking for rock star

Yes, that's right! All these companies are looking for rock stars! Let's assume for a moment that they're talking about rock star developers and not someone with long hair galloping around on stage with a guitar. (Although the latter would probably have a more beneficial impact on the company's bottom line. At least then they could perform at trade shows.)

Anyway, let me just get this out of the way now: You do not want to hire rock star programmers! If someone tells you that you should hire rock star developers, or that their company is so awesome because they only hire rock star developers, or that it's worth every penny to hire rock star developers because blah blah 10x productivity blah blah, then just save them the trouble and push them into oncoming traffic.

Let's explore what exactly a rock star developer is. First and foremost, a rock star developer is arrogant. Most believe that they're god's gift to gcc and/or Visual Studio. Rock star programmers tend to equate knowledge of a particular programming language with being a good software engineer, as if somehow knowing the contents of K&R by heart and strutting around the office with one's nose in the air are sufficient prerequisites for producing solid software products.

Rock stars also tend to hold a marked disdain for everything other than their chosen area of supposed expertise. They can talk all day about RTTI or factory methods, but ask them to write unit tests, document their code, or participate in requirements gathering, and they simply can't be bothered. If it isn't something that takes every ounce of clever in their body to do it, it won't get done.

Now here's why you don't want to hire a rock star. Observe the oft-quoted Kernighan's Law:

Debugging is twice as hard as writing the program, so if you write the program as cleverly as you can, by definition, you won't be clever enough to debug it.

Rock star programmers absolutely revel in writing tricky code and using esoteric language features. Uncommented bit twiddling? Par for the course. Inane inheritance hierarchies? You betcha. Template metaprogramming up the yin-yang? Oh, you better believe it.

This worship of cleverness means that not only will the rest of the team have trouble with rock-star-produced code, but the rock star himself often will be unable to read and debug his own programs! But that's okay, because the only thing rock stars love more than writing unmaintainable code is throwing out all their old unmaintainable code and rewriting it, replacing it with newer, shinier unmaintainable code. Why try to understand or fix bugs in old code when the constant churn will just cause it to be replaced within a week's time anyway?

"But, but!" I can hear you crying, "Paul Graham in http://paulgraham.com/avg.html says that with smarter people using a better language, you can get everything done faster and therefore get bought by Yahoo and become independently wealthy and never have to work for corporate schmucks again! What do you have to say to that?!"

Well, first let me say: Stop being such a PG fanboy. It's just not becoming on a grown man. Secondly, there is a difference between an arrogant rock star programmer as described above and a coder simply chosing the right tool for the job. You can use a powerful language without being an arrogant prick, without writing code half again as clever as you are actually able to read, and without ignoring all relevant aspects of software engineering. An argument against rock stars is not an argument for dumb programmers. An argument against rock stars is an argument for best practices when it comes to actually producing software.

"But what about Joel of On Software fame?" I can hear you scream at the monitor. "Doesn't he only hire the absolute best and the brightest and therefore get so much productive work done that they put out a full point release of Wasabi-based FogBugz once every other hour?"

I will contend that the best and the brightest are not rock star programmers. The best software developers play nicely with others, recognize the importance of all aspects of the software development process, and generally make high quality products. Sure, they may even be more productive than the average programmer by some large factor. I'll go so far as to say that this anti-rock-star programmer, the cream of the crop, will actually be more productive than a supposed rock star.

So the next time you're surreptitiously browsing job postings on Craigslist during your lunch hour with your trigger finger on alt-tab, be especially cautious of any company that claims to be looking for a rock star programmer. It is possible they're just trying to convey that they don't hire crappy Blub programmers, that they want people who really know their stuff. But more often than not, the company is saying they're looking for someone to strut around the office and make the CTO feel like they've got a "rock star" development team. Please, save the strutting for the guys with the guitars.

[Update: Follow-up posted here: http://coderific.com/blog/post/582]

9 comments

Write a comment!
  • Disagree posted by polterguy on May 25, 2007 02:32 PM

    Quite funny blogm though it all comes down to your definition of a Rock Start Programmer!
    For me a Rock Star Programmer is that brilliant guy that gets the job done in 10x pace!
    If it for you is an arrogant sunna xxxx I'd too agree with you, the problem is that people are gonna think after reading this blog that we're better of with a shmerck that's gonna spend the next three years learning polymorphi...!!

    reply | quote

  • Re: Disagree posted by witten on May 25, 2007 02:59 PM

    You're right, it does all come down to the definition. It's just one of those phrases that often (although not always) means an arrogant coder with a disdain for software engineering, and so people putting "rock star" in the titles of their job postings should think twice.

    reply | quote

  • Re: why you don't want to hire rock star programme posted by jmcantrell on May 25, 2007 09:29 PM

    hmmm... when i think of a rockstar developer, i'm thinking of someone who is extremely knowledgeable and can expand that knowledge at the drop of a hat.. someone who can come up with clever solutions to problems.. someone who has pride in what they do and confidence in themselves as developers. It sounds like we're talking about the same people, minus the arrogance part. I've worked with people who I consider to be rockstar developers. some were arrogant, but most were not. I think it's unfair to label all rockstar programmers as arrogant. Even if that weren't the case, I would much rather have arrogant rockstars who get the job done right than mild-mannered code-monkeys who are mediocre developers.
    you sound like someone with a grudge. i would suggest a vacation.

    reply | quote

  • Re: why you don't want to hire rock star programme posted by witten on May 25, 2007 10:39 PM

    jmcantrell wrote:
    you sound like someone with a grudge. i would suggest a vacation.

    I'm on vacation. But thanks for the suggestion. :)

    reply | quote

  • Re: why you don't want to hire rock star programme posted by starmole on May 25, 2007 11:58 PM

    Well, the problem lays more in the name. They don't want a rock star programmer as you described it, they want a rock star which has also all this properties your described rock star doesn't have. They seek an "ubergeek", not a rock star. Chances that they get one by this ads are indeed nearly zero. Chances that they get a code monkey if they don't have a good evaluation process are pretty high ...

    reply | quote

  • Re: why you don't want to hire rock star programme posted by jet on May 26, 2007 09:42 AM

    It is a bad choice of phrase to describe a good programmer. I work with a guy who absolutely loves himself and his esoteric solutions. I think his work is junk. I prefer simple solutions and i produce high quality work. He does produce some work a bit quicker, but then a couple of weeks later I will be in there fixing it and generally having to throw it away becasue what he wrote is entirely unmaintainable. When I see adverts for rockstar programmers I am put off. Thanks for this post i feel much better about not being a rockstar. That doesnt mean I aint a genius ;)

    reply | quote

  • Re: why you don't want to hire rock star programme posted by BenFranklin on May 30, 2007 09:35 AM

    If you can't discriminate between posers and the real thing, you're a poser.

    reply | quote

  • Re: why you don't want to hire rock star programme posted by jobious123 on July 24, 2008 09:47 PM

    I know i'm like _really_ late to the comment table here but I saw a similar post on YC and liked yours better. I just think it's a common recruiting term that has the right "zazz" marketing, recruiter types are looking for, hoping to pull the chain of someone's ego. But underneath that description is a deeper meaning, why do they need someone to get the job done 10x faster? Is it because they suck at getting funding to get the job done right? Is it because they won't have the money to pay someone what they are worth but you get the dubious title instead? I think that job title screams "good opportunity for the unproven but confident developer who if you succeed will be almost guaranteed an easier, better paying job in the very near future" :) Good luck you would-be rockstars, good luck!

    reply | quote

  • Re: why you don't want to hire rock star programme posted by witten on July 27, 2008 08:22 PM

    I think that job title screams "good opportunity for the unproven but confident developer who if you succeed will be almost guaranteed an easier, better paying job in the very near future" :)

    That is certainly one of the more optimistic takes on why a company would put out a job posting for a "rock star" programmer. :)

    reply | quote