back
77 comments
Having been responsible for a team of developers I can honestly say I don’t agree with this. At least, not entirely.

Every team needs a few "Rock Star" programmers (to use the author’s terminology). When hiring those folks I think his advice is spot on. But the reality of programming a project is that there will be some tedious work that the "Rock Stars" will find boring. In my experience those types of developers actually do pretty mediocre work when forced to write no-brainer code.

So I’ve found the best mix is to have a few of these rock star developers mixed in with folks who enjoy development and are hard workers but who are at a point in their life where they don’t have time for side projects. These are the guys who were probably rock stars in their younger years but now have spouses, kids and all the trappings of that (soccer practice, dance recitals, et al). Since they aren’t looking to work for the majority of their fulfillment they tend to be ok with the tedious stuff and since they are still decent developers they turn in solid code.

But in a early stage startup you better off with few of the rockerstars types, then a lot of average coders.

You can really do more, with less.

In a early stage there is probably a lot of stuff to do, lots of features to keep the smart people engaged, and with fewer more productive people you have less overhead, less meetings, less political bs.

in a early stage startup you better off with few of the rockerstars types

Sure, but the article should make a point of including this qualifier. Because, of all the teams of programmers in the world -- even if you just count the competent ones! -- a very very small percentage are involved in early-stage startups, despite PG's best efforts. And a lot of those teams benefit from a mix of personalities, ranging from the energetic free electron to the dedicated day worker to the manager who actually kind of enjoys all those tedious meetings where (s)he evangelizes your work to upper management.

Rands in Repose has a useful take on "Rock Star" programmers; he calls them "Free Electrons."

http://www.randsinrepose.com/archives/2005/03/20/free_electr...

I agree with you completely. "Rock Star" programmers, or programmers who at least have that "Rock Star" mentality, are clever enough to realize that doing a shitty job on a project they openly dislike means in the future they won't have to work on projects they dislike.

Due to their "Rock Star" mentality they can rationalize this poor work ethic because they truly believe they are benefiting everyone: "it's far better for me to kick ass with the XYZ project then to do this crappy ABC project"

Trust me, I've been in that position (rock star). There's something more to "rock star" than just passion... they are aware of their rock star status.

IMO, rock star programmers are good if you can handle them. You need to make them believe that what they are working on is of the utmost importance that they specifically were assigned it precisely because of it's importance and because of their capability. That's the best motivation for a rock star.

Otherwise I agree with TomOfTTB: some rock stars, but more drones.

We just call them rock stars.

No we don't. We stopped doing that when other folks who were hiring "rock stars" failed to get a product off the ground, and proved their salaries couldn't live up to the livelihood of what a rock star expects to be compensated, thereby making the phrase "rock star" in any sense other than someone who does what Jimmy Buffet did overwhelmingly kitschy, and anyone using the phrase mind-numbingly foolish.

Thanks for playing.

I prefer "silly" to "mind-numbingly foolish", but I don't think he does himself any favors by using the term.
Yea, silly works.

If we really want to give programmers silly names fine I am a "Professional". Aka the movie "the Professional" where you have a problem, you pay me money, I solve the problem. Rock Stars are just another silly name people give out so they don't have to pay you what your time is worth. Look up actual rock stars they tend to end up broke because while it might look like the are making a lot of money most of the time they are getting peanuts.

Oy... if we're talking image... do you really want to be a "professional programmer"?

I think there is _something_ to the rockstar image... namely passion. Accept no bullshit, swear at the suits, light shit on fire to get results passion.

But I agree, "rockstar" A) doesn't cut it as a metaphor and B) is not a word a real developer would use to recruit a real developer

If you want to give my kind of programmer a nickname, save it for your business docs. My fathers already gave me one:

Hacker.

> The guy that takes a 10 minute set of verbal requirements, extrapolates, and builds a Web 4.0 Whooziwhatsit in a day, before you even know what Web 4.0 is.

I can't think of anything worse in my team than someone that just constantly dives head first into code. Great coders stop and think, discuss, then code. IMHO.

I can. The guy who is always listening for chances to jump in and prove how smart he is, instead of actually hearing what the other person is saying.
We have both of those guys on our team. But hey, they do usually get stuff done.

The guy who is not interested in good software design, can't learn or pick things up for their job, who requires constant repetition and babysitting, and finally breaks your software out of ignorance is worse than both of these.

Why does he have this need to prove that so bad to other people that it trumps everything? Doesn't he know this himself already?
good point
You should never hire a secretary who doesn't type for fun.

You should never hire a caretaker who doesn't mop floors for fun.

Doesn't actually work, does it? Why are programmers "special"?

You should never hire a musician who doesn't play for fun.

You should never hire an artist who doesn't paint/draw/whatever for fun.

Seems to work ok for creative professions.

Trying to lump all of programming into the types of things you have worked on is a narrow view of the field. Programmers produce everything from high art, to plumbing but it's much closer to engineering than a musician. While some parts of programming is creative as a profession you get the full range from creative work to simple trial and error.

EX: There are a lot of programmers who spend a lot of time interfacing with buggy API's which is soul sucking work, because the bugs are random.

PS: If you are building a boy band you probably don't are about artistic talent. It might be useful but it's far from the most important trait.

You should never hire a chef who doesn't cook for fun.
Ah, now we know that programming is an art! Nice discovery!
A secretary who typed for fun or a caretaker who mopped floors for fun would actually probably be more productive than one who didn't. More specifically, someone who IMs all night long is probably a faster typing than someone who avoids a keyboard after clocking out.

What makes programmers special?

1) There are actually people who program for fun. If you looked for rockstar janitors who mopped floors for fun, you wouldn't find any.

2) There is an order of magnitude or two difference in the productivity of great programmers compared to average programmers, whereas a great janitor or secretary may be something like twice as productive as an average one. It's more important to find a good one.

3) Filtering good programmers is notoriously difficult - it's not like typing where you can give candidates a simple test and get a straightforward, quantitative answer, so every bit of information helps.

If you looked for rockstar janitors who mopped floors for fun, you wouldn't find any.

In honor of my late grandmother, who devoted about twenty years' worth of Saturdays to cleaning the floors and bathrooms of her local church -- for free -- I must inform you that this isn't true.

Whether or not she was maximally productive is quite a different question. A lot of ritual activity isn't especially intended to be productive.

Don't know about mops, but apparently there are people who broom for fun: http://en.wikipedia.org/wiki/Curling

Canada. I don't understand it either.

That is a killer national slogan, I'd go there just for the country with enough of a sense of humour to use it.
Because you can learn typing without loving it and you can learn mopping without loving it. Not so with programming which is ultimately a creative task. I know plenty of people who went through university and learned the mechanics of programming without really liking it. These people will never be good programmers just like most people who wrote essays in college will never be good writers.

Ironically a mediocre programmer really compares better to a secretary than to a great programmer. He may be able to churn out code when given detailed instructions, just like the secretary will type out your letter when you dictate it to her. But the great programmer on the other hand; he decides what letter to write...

Not so with programming which is ultimately a creative task.

90% of programming - sometimes 99% - is forms or reports. Validate and store some data, or retrieve and format some data. No-one does that "for fun". You need professionals who can execute at a high level of competence true, but "creative" is a bit of an exaggeration.

Don't knock secretaries. My mother spent a number of years writing letters for her EdD boss, who was close to functionally illiterate. (He was hardpressed to compose a grammatical sentence, much less a coherent paragraph.)
I guess because hiring a mediocre secretary or janitor will not jeopardize a software company in the same way as hiring a team of mediocre engineers.
You would be surprised. A kick ass secretary will make all the "sticky" points of running a company go smoothly. I have seen 2 great secretaries that if they replaced would have a significant impact to the efficiency of a company.

Also an rock star secretary can work smart rather than hard finding ways to remove repetition.

A janitor could be a rockstar if they used methods to clean an office space to extreme detail with utmost efficiency.

Admittedly the more work moves into the physical world, the harder it is to scale with simple mental skill, but programmers are not the only ones that can become "rock stars." Also, WPM is not as relevant a way to measure a secretary's skills any more just as it isn't a way to measure a programmer's skills.

@brl: I know you just wrote a sentence, and this really isn't a reply to directly to you, but more to the elitist us and them content of this forum.

because it's mental work, not physical.

you can't force creativity. of course, not all programmers need to be creative, but some do have to be.

i agree though, it's a bit foolish to expect all your programmers to be "rock stars".

the suggested heuristic obviously works only if a measurable segment of people of profession x practice their trade for fun. but, it seems credible to me in the case of writing software (and not so much for mopping floors).
You know, it really is possible to be working on something which is the "fun code" in your life. I try to avoid jobs where I don't have real passion for the thing I'm creating.

Now, some of my "fun" might be in prototypes or similar concept testing or learning - lately it's been parser combinators - but ultimately it's all applicable to my day job, working on compilers.

"to my day job, working on compilers"

This is the kind of day job one doesn't see here in Bangalore! Hereabouts everything is enterprisey this, soa that. :-(

For what it's worth, you don't see many of those jobs in the midwest either... It's all SOA/six sigma/RUP madness here too.

To top it off, I have to update three timesheets daily.

This is a good example of an article whose entire worth lies in the headline, and there is no real reason to actually read it.
I think it's the passion for what they do that differentiates a "rock star" from someone who just does it for the pay. You can have passion without being holed up in your bedroom programming 24/7.
holing up and hacking away is more likely though, if you have passion.
Oh yeah, no disputing that, I do it myself :)
What if their idea of fun is taking slime samples from ancient damp caves in Northern California and graphing the mold contents compared with other similar caves in Oregon?I am just joking.

I think any employee that you hire should be questioned regarding what project they have been inspired by. I would ask something like: "Talk about the last 2 or 3 projects you worked on ( personal or work-related ) where you felt 'extremely' to 'incredibly' inspired"

  Dr. Egon Spengler: I collect spores, molds, and fungus. 
From the classic Ghost Busters.
I think that fun is the wrong word. Fun would imply laughing and smiling, I think.

Many works of creativity happen when there's ideas or feelings inside that are dying to get out.

Just like photons, "Rock Stars" emit light but don't have substance. I'd rather have a look at a programmers code samples to see if it's elegant, clean and efficient.
absolutely not. The rockstars I know (3 on my life), do really produce a lot of code, and get done things quickly (and two of them had to leave early from work, as they family and children to take care off, yet they could produce almost twice the amount of quality code from other people and that's why they are so impressive.

There are people that are all talk, and no game, but then they are people that can really produce code faster than you can think about a feature. Also, some of these people are able to do things that are too complex for any average programmer to even grasp. Things like implementing a very efficient interpreter, parser for a dynamic language, it top of something else, is only domain of people that really know their stuff. Sure, I worked on a interpreter, for a fictional language in CS class in college, but doing it for a production level language, is a totally different ballgame.

As I said, management might be impressed by people that know how to talk, but a good programmer will only be impressed by people that really can code and get done things better then them.

The only way to recognize one, is to work with one.

You should read up on photons. (I still upvoted, though.)
If a programmer codes for fun, he probably doesn't have a good idea of what real fun is.

Secondly, not all things that need programming are "fun". Some are downright tedious, but nevertheless important.

Don't ever work for a place that doesn't have fun things to code?
And don't join companies that seeks references ( != back ground check ) for programmers.
Why not?
The interviewer has failed to assess the candidate in the interview.
Just because a programmer codes something for fun on his own time doesn't mean he's going to have fun coding your app too.