The Truth About Hiring "Rock Star" Developers
snydeq writes "You want the best and the brightest money can buy. Or do you? Andrew Oliver offers six hard truths about 'rock-star' developers, arguing in favor of mixed skill levels with a focus on getting the job done: 'A big, important project has launched — and abruptly crashed to the ground. The horrible spaghetti code is beyond debugging. There are no unit tests, and every change requires a meeting with, like, 40 people. Oh, if only we'd had a team of 10 "rock star" developers working on this project instead! It would have been done in half the time with twice the features and five-nines availability. On the other hand, maybe not. A team of senior developers will often produce a complex design and no code, thanks to the reasons listed below.'"
No-one who identifies himself as a rockstar developer is a rockstar developer, and no good developer would call himself a rockstar.
I agree 100%. I've had the good fortune to work with some extremely talented developers in my career, and the best of them tend to be very humble about their skills (mostly because they tend to seek out the company of other engineers who are as good as they are.) "Rockstar" is a bullshit term used by dotcom promoters and headhunters.
-jcr
The only title of honor that a tyrant can grant is "Enemy of the State."
Exactly.
If your "rock star" developers are over-engineering the problem, writing bad code or whatever, then they weren't "rock star" developers, but a bunch of ill experienced or underqualified amateurs that's kind of the fucking point.
The article will be better labelled as "If your rock star developers aren't, then they'll produce just as shit a product as developers who don't even pretend to be capable of doing the given task".
I think you've probably just been fleeced.
""Rock stars" - we called them divas in my company - are notoriously unmanageable: many of them are temperamental, don't work well with others"
To me this means they weren't rock star developers. Being a great developers means being excellent not just at writing fancy algorithms, but being able to architect great code, being able to communicate with the project stakeholders to find out what they really want, being able to organise and train other coders to improve their level of competence. If your "rock star" developers were problematic, then I'd argue what you actually had were a bunch of people who managed to sell themselves as being more competent than they were - they told you they were "rock star" developers and you believed them, but in reality they weren't.
"tend to do what they "know" is right instead of doing what they're told"
I take issue with this. Surely the whole point in hiring the best of the best is that they know from experience what the fuck they are doing. If you don't listen to them then you are hence the problem, why hire them if you're just not going to listen to them and do things your way anyway? If you know better then you don't need them in the first place. If you do need them, then fucking listen to them.
Really, it's not difficult. The ones who really do deserve the "rock star" developer title are the ones whom you'd never have any of the problems you listed with (bar the one in the last paragraph which I believe is a flaw with your management rather than them). If you're having those problems then you've hired a salesman. A salesman who is a pro at selling himself at an overinflated price, but not really the person you were actually looking for.
Having an ego runs completely counter to being a great developer or engineer, because if you have an ego you're not capable of introspection, you're not capable of noticing your flaws, your weak areas, and improving them. If your devs have an ego then they're never going to be as good as the ones who quietly and happily just self improve. Take John Romero and John Carmack, one of these has a massive fucking ego, an ego so big it can fill a football stadium, the other has a long history of writing pretty impressive cutting edge code without ever displaying an ounce of ego. The latter has had an impressive career developing cutting edge tech, the former, when he went it alone became probably the biggest flop in the industry and his studio was only saved by a bunch of other previously nameless devs who worked on a separate project away from him.
Egos are a trait of wannabes, real superstars just get the fuck on and do what they do.
Bullshit. The definition of a "Rock Star" developer is that they have a history of producing hits. It's not relative.
I have a history of producing software that gets the job done; sells pretty well; people like using; is very stable without too many bugs; and so forth.
I however would definitely NOT consider myself a "Rock Star" developer by any stretch of the imagination. I'm self taught and have glaring holes in my knowledge in quite a few areas. I often look at code from others and go "ah, that's a better way than I would've used" (and then try to use similar things in my own code in the future). For example, after a good 5 years of coding all day every day as my day job, I finally figured out the "right" time to use interfaces vs other methods. My code before that should've used interfaces worked (and worked well) but would be much more maintainable had I really known about their correct usage before. And vice-versa, I came across some REALLY old code of mine that uses interfaces when it makes absolutely no sense to do so (I assume it was when I first heard what about they are)
What makes me not a CRAP developer is that I know I have these holes in my knowledge and am willing to learn from others. That hardly makes a rock-star though, regardless of how much good stuff I've produced to date.
My book about LSD and Self-Discovery
Also on facebook as: DroppingAcidDaleBewan
No it is more of a case that most companies don't need a team of rockstar developers.
Because in truth you don't. For an average medium large project
1 Rockstar Developer
3 Mid Level Developers
6 Jr. Developers
The Rockstar works on the proof of concepts, and the base architectural design.
Mid Level make the core building blocks
Jr. Developers put all the pieces together.
If something is so important that you feel the need to post it on the internet... It probably isn't that important.
Indeed, the article is not actually talking about "rock stars" but about poaching senior developers. It is also quite possibly the most perniciously agist thing I have ever read. "People do their best work when their head is barely above water," huh? How about the "truth" that the person who's "slogged through it 100 times before" also knows where the pitfalls are? The entire article reads like a bad stereotype of crotchety old developers too arrogant to follow directions.
I sometimes ask revealing, often ignorant-seeming questions. Maybe they're harder to answer than you think.
You are describing a cowboy coder, not a rock star. The two could not be further apart. Rock stars are the ones who, by definition, get shit done right. If they cannot write maintainable code, then they are not a rock star, plain and simple. Maintainability is almost always the number one most important quality of any project. Anybody can get v1 out quickly. A cowboy does it by cutting corners and rushing. A rock star does it fast and right, which is what makes them a rock star. If your good, solid, dependable devs can do that, you might have a couple rock stars without knowing it. Remember that skill and ego rarely match up. Joel Spolsky's definition of a rock star is still the best one IMHO: smart and gets things done.
This "rockstar" term is so fucking stupid and abused. If you have millions of end-users who know your name and what you did, THEN you can call yourself a rockstar programmer. It's mostly a public image thing too, rather than quality or quantity of code. Programmed some lame server-side java app in half the time it takes most people? Not rockstar.
The only rockstar programmers I can think of off the top of my head are John Carmack, Tim Sweeny, Brian Fargo, Warren Spector, Sid Meier, Peter Molyneux, John Romero (classic rock I suppose), and Cliff Bleszinski. All of these guys are games industry programmers that are high profile. When's the last time you saw publicity on generic corporate coder #81635?
You are describing a cowboy coder, not a rock star.
The problem is that management equates "gets stuff done fast" with "rock star", regardless of the unmaintainable mess they may leave behind.