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.
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.
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.
http://www.randsinrepose.com/archives/2005/03/20/free_electr...
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.
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.
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.
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.
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.
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.
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 an artist who doesn't paint/draw/whatever for fun.
Seems to work ok for creative professions.
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.
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.
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.
Canada. I don't understand it either.
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...
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.
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.
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".
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.
This is the kind of day job one doesn't see here in Bangalore! Hereabouts everything is enterprisey this, soa that. :-(
To top it off, I have to update three timesheets daily.
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.Many works of creativity happen when there's ideas or feelings inside that are dying to get out.
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.
Secondly, not all things that need programming are "fun". Some are downright tedious, but nevertheless important.