Ask Slashdot: Are 'Rock Star' Developers a Necessity?
An anonymous reader writes "Do you think so called 'rock star' developers are necessary at every company? Personally, I don't think so, and I equate it to not needing a college degree to work at Walmart. If you give every problem a complexity value from 1 to 10, and your problems never get higher than a 6 or 7, do you need people capable of solving the 10s? I work for a large software company and I'd rate myself a 7. There are more technically proficient developers, but I don't have an ego about my work, I work well with coworkers and customers, and I bring people up around me. Most 'rock stars' I've seen have been difficult to work with. Most of them are no longer with the company because they were terminated or quit for more money. Is this usually the case? Is it worth the trouble? (Note to any managers reading this: if you have a rockstar who is a pleasant person, pay them well; they are very rare.)"
My coding is mediocre at best, and I know it. I still want to feel useful. Please say something nice to me. Please make me feel better.
The term "rockstar" is subjective and only douchebags use it. You could be considered a rockstar because you say you are bringing those around you "up" and are probably doing that by learning and training others about what you learn. You may not know how to develop something in a way when you start but you can learn and apply it when you do. I f-ing hate terminology like that.
AC posting a nothing "news". All together now: aaassssttttrooooturfing. Click away, comment some more, ad-ad-ad-impressions. moneymoneymoneymoney.
As Above, of being an AC prevents this being a boast...
If Rockstar had no developers then how would Grand theft Auto V be completed? ;)
These comments are my own and do not necessarily reflect the views or opinions of my employer or colleagues...
There are two problems. (a) arrogance on behalf of management thinking that they dont need to pay their staff, (b) arrogance on behalf of rockstars who think that they can disrupt the company as a result of their ego.
Now...while this sounds obvious, what about those rockstars who do not disrupt the company? Personally.... I'd rather have 10 rockstars who can work together than 10 average people. Yes... its unlikely... whoever is posting this is short-sighted.
FACT: Rockstars will find creative solutions to the impossible - if you will let them.
FACT: A good team of average people, working together, will accomplish more than a single person over the course of two months.
FACT: Not have both working together is a result of POOR MANAGEMENT.
I'm only unpleasant when you expect me to spoon feed you what I learned the hard way.
You're conflating two unrelated things: Competence and attitude. You might find The No Asshole Rule an interesting source. People who can't cooperate with other people are not a necessity, no matter how amazing they are.
But... When all you have is a hammer, everything looks like a nail. The thing that makes exceptional developers exceptional isn't their very specialized ability to solve weird problems no one really needs to solve. It's their ability to spot an opportunity to replace a hard problem with an easy one, or to massively improve performance by solving a slightly harder problem. And that really is that useful, even if you don't directly see the benefits. You can do nearly everythign with plodding, methodical, mediocre work. Doesn't mean you won't be happier with the results if you have someone better available.
My blog: http://www.seebs.net/log/ --- My iPhone/iPad app: http://www.seebs.net/seebsfrac/
Thanks to my special luck being an AC prevents people mocking me for leaving out the word "course"
Why only talking about developers.
If you agree to have average Sellers, Average Marketing, Average Management, Average customer support sure you can have average developers.
You are just jealous you are not Cliff Blizinsky, or John Carmack or John Romero and are stuck in a job where you already hit your pay limit because you are an average programmer making average programs and not cutting edge software. But the industry in general no longer has rock stars because now most of the work is done overseas.
I've worked at companies where the main programming was done in eastern europe, the artwork was done in columbia and the sound was done in China. We just had a handful of programmers who could put it all together and be able to know how it all works, etc.
I was growing up with posters of star developers on my walls. I rate myself as 7
And now, I'm one of them.
Believe in dreams, man. And one day they will come true.
Rockstars beget and cultivate other rock stars, sometimes through obvious mechanisms like apprenticeships but many times passively by simply raising the standard of what is considered acceptable code. I'm amazed at the number of times I've worked with engineers who wrote poor code simply because they've never seen what good code looks like. This is especially true for our compatriots arriving from overseas, where code construction is not taught at the university and where they had no peers/rockstars to set an example. They didn't lack aptitude - they simply didn't know what was possible.
I'm a tech lead at a startup and have worked at mid-size companies (I've avoided large corporations). Even if your problems are difficulty 10, you don't need a "rockstar" to solve them. My experience with typical rockstar developers has been similar to yours, they work poorly with others, communicate poorly, and often write inscrutable code. I firmly believe that nobody is invaluable. No company can afford to have a person that were they hit by a bus, or just left, the company would fail.
There are plenty of developers out there that wouldn't be considered "rockstars" in the stereotypical sense but when given a problem, I know they will produce good, well thought out, performant code within a short period of time. During development they will seek out criticism from their peers (and they see the rest of the team as their peers) and the final solution will be respected and understood by the team. I think of these people as seasoned engineers, not rockstars and certainly not developers. Engineers break down problems and build a solution before they ever write a line of code. I also believe you can become a seasoned engineer rapidly, possibly even straight out of college. It's about perspective, not necessarily experience.
One of the most important things in an engineering group, in my opinion, is the ability to walk into a room, argue out a solution, possibly admit you're wrong and somebody else's solution is better, but know when to fight your corner, then leave the room as friends and colleagues, ready to build the solution together. The ego rockstars carry makes that scenario impossible.
A good "rockstar" coder in my books is one that you can ask reference questions to and get fast concise answers. "How do I do foo?" - " Lookup bar and baz on google" The quick redirection to useful information is super helpful to a large group of programmers.
The "rock start" developers are absolutely necessary, because in a *real* project they contribute the majority of the *tough* code for a system -- the code that is "greek" to the rest of the team, but which works.
I don't consider myself a "rock star"; rather I am dedicated and stubborn and hammer away at tough problems until I find a solution. But sometimes I fail to find a solution, especially with complex prioritization and queueing algorithms that have just too many special cases (one recent project in particular comes to mind.)
But I have great respect for the "rock stars", and I think it's worthwhile to deal with their idiosyncracies. But I'm good enough at my job that I can *talk* to them, and I'm egotistical enough to get in full-bore arguments with them and *demand* their respect in return.
Team efforts have never been for the faint of heart, chip-on-the-shoulder personalities. Your ego will be bruised and crushed if your teammates are worth working with, because *good* people have opinions, and will often disagree with you. Be prepared to defend your own opinions with vigour, and stop crying that people aren't being "nice" to you. The road to success in this industry is littered with the bodies of "nice" people.
Kaplah!
I do not fail; I succeed at finding out what does not work.
...but if you can get someone who's really good, and can also play nice with others, then I think it's well worth it. That's a pretty rare combo though.. Sometimes just because "others" sometimes won't play nice with people that are better than them because they're threatened..
If you ever have a problem of difficulty 8, and you've got a programmer of skill 7, don't even bother trying.. You're just gonna get a mess..
If you don't want a "ten", be prepared to pay double the "ten" rate to un-fuck the crappy code your "five" and "six" players crank out. Or ten times more if you hire offshore players because they are typically level zero or one, at least the ones the PHBs will hire.
In my experiences as a C++ developer our challenges are mainly architectural. None of us are C++ wizards, we all have many C++/STL books on our desks and are frequently scouring forums when we don't know something. C++ knowledge or the lack of it has never been a problem. Chances are that one of us knows how to do that whacky thing you want to do but can't remember how to do it. If we don't know, its really not that hard to experiment a little and figure it out. Worst case were posing on stack exchange or some other forum.
Knowing how to develop a piece of software with an OO architecture in C++ is the skill that we find to be more important and harder to find in new devs. We have a few open recs right now and although we get many guys with years of C and C++ experience, few if any know anything about OO. Out of the current employees, less than half are 'good' at OO design.
I have worked with guys who can crank out thousands of lines of real time, embedded code for industrial applications. Globals everywhere, no understanding of encapsulation or data hiding, nothing even resembling an interface. That sucked.
Give me a good designer over a "rockstar" programmer any day.
No. Your question has too many variables and attempts to assign an absolute to it. If you don't need a 10 and only need up to a 7, then ask yourself if you'd fire the 7 who is an egotistical narcissist. Having said that, you may find that the 10 can look at your 7 problem and say "but if you do it this way, your 7 problem is now a 4 problem".
NO. The answer is NO, absolutely not, but only because the people you've been told are "Rockstar Developers" are actually promising rookies having smoke blown up their asses so hard they are floating on the air pressure.
Real top-notch developer talent doesn't have "3 to 5" years of experience. Real rockstar developers aren't working at your crappy web publishing sweatshop slinging Joomla and motherfucking jquery.
Rock Star developers are necessary for people who need them. QED.
You need to define your question better.
If you mean "A coder who is very good at solving problems," then yes. Every project develops problems that brute force and more manpower can't accelerate. Someone who can break the logjams is useful everywhere.
If you mean "someone who is super-smart but also an ass," then no. I'd rather have a solid team beat on a problem for a week then allow a morale-killing ass to poison the environment.
Because 7 is terrible. You mentioned Wal*mart.
In short, even if they are brilliant, if they are an asshole (and many are) they will be miserable to work with, you will lose team members who will not put up with their shit, and in the end, your projects will not get completed. Oh, and they hate to document their code, because they don't think anybody else but themselves could maintain it, and they often whitewash error handling (their code is perfect and elegant afterall).
Suppose you were an idiot and suppose you were a member of Congress
Is a rockstar someone who refuses to share knowledge with other people, thinks his practices are best practices and refuses to accept input from stakeholders? If so, no, you probably don't need one.
Otherwise, if by rockstar you mean someone who knows the domain knowledge and development roadmap, keeps track of decisions made and knows how they'll affect the application so when someone says "hey lets make the baz function frobulate things" they remember that the bar function 3 years ago needed the baz function to wibble them and save everyone a whole lot of debugging when things suddenly stop working.... you probably don't need one of them either, but it sure would help.
Yes, they are worth it. However they need to be socially aware. And they need to be working in a decent environment. Perhaps some other criteria too. If they have this then they can take charge and accomplish magnitudes more than the normal time pusher. It's because they understand what is needed, have the tools to do it, are socially aware so they can foster team effort across departments, and a decent environment where there are no malignant workers to destroy from within.
Rock star status in any job is always a problem... Not just in coding but particularly the flashy rock star CEO/CTO that get hired for obscene amounts of money. Which is where there driving force is incidently... Rock star status and money. Its the quiet introverts who are typically the best in these jobs.. For the long term IMHO. I am an extrovert BTW...
Start up willing to take the risk of 1 person building and controlling the code and possible the direction of the company? sure. I wouldn't but like I said weigh the risks.
A high paid specialist? absolutely.
A salary employee and an entrenched company to routing development ? absolutely not.
My rule is:
You can act like a prima donna, but you damn well better be a prima donna.
The Kruger Dunning explains most post on
I'm an above average dev recently promoted to director. I now manage a rockstar type guy who's output and code quality are leaps and bounds greater than anyone else in the company. To me, as far as the rockstar performers go, it boils down to personality. Luckily, the guy I manage is very friendly, forgiving, and honestly try's to bring the other developers to his level. Ironically, most of my work with this guy is keeping the project managers from taking advantage of him. Rockstar devs are such a rarity you can't really define them as a necessity. It's more like "look what i've found!" and then doing everything you can to hang on to them and keep them happy/motivated.
Since different companies make different products, they need different skills at varying levels.
More importantly, a "rockstar developer", as commonly understood, has only a very limited skillset; boundless technical creativity.
Sure, they may be awesome at thinking up solutions, designing algorithms and turning it into code.
That does not mean they have the right character traits to create solid testcases, hunt for all the bugs, tie up all the loose ends, write documentation, understand end-user needs, etc. All the other aspects that go into creating a finished product.
There is no such thing as a "team of rockstar developers"; such a group of people would simple be too limited in non-technical skills to cooperate on a single product effectively.
Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
Many development project don't need a 'rock star'. They can be done with "typical" architectures, existing frameworks, and just need "assembly-line-type" workers for all of the steps. I'd even say "most" projects are like this and any project can survive without a rock star.
There are also different types of 'rock stars' and they can help on even the most basic project. In general, the 'rock star' can do any/all of these things, but what do they do on a day to day basis varies based on their individual "specialty"
* some can architect the "difficulty 10" projects so it can be implemented in assembly-line fashion by "typical" developers
* some can implement the "difficulty 10" projects that wasn't architected well (when a team of N "normal" developers would end up with a late and buggy implementation)
* some can debug like nothing most people have ever seen (they don't usually create difficult-to-find bugs but are a huge asset to the team when the bugs come up which can happen on even the most trivial project)
* some just implement so well (speed of development + lack of bugs) that they literally will be cheaper than a team of N people (so, to the manager they aren't necessary but would be preferred)
* some can mentor, and find other people's strengths, and reorganize efforts on the fly. they can help everyone else be more productive, and can adapt the process/team as requirements change and can be critical to delivering on time and above requirements especially when things go wrong.
* some can help where ever needed (front-end, db, back-end, sysadmin, security, build, etc) and can step in without losing a beat when another member of the team is out (sick, vacation, left for another job).
* some can find bugs in 3rd party libraries or system components (without the source code). find workarounds and/or patch those libraries to continue development quickly while sending the bug fix and appropriate level of explanation to the library developer to get a permanent fix. If you've ever been on a "difficulty 5" project which found a show-stopper bug in a critical 3rd party library during QA, you'll really appreciate this skill. I have seen one case on a "trivial" project where this skill was necessary and a few other cases where it really helped.
I've worked with a very small number of "rock stars" over 30 years. They all had multiple of the above skills. I've worked with 3x as many people who were considered "rock stars" (by themselves and sometimes others) but weren't. In almost all cases, the "fake rock stars" slowed the project down more than they helped and the team would have been better off with one less member.
There are three things that people really care about in an employee, quality work, meeting deadlines, and a pleasant attitude - and you only really need two out of those three. If you do good work and it's on time people will put up with how unpleasant you are, if your work is good and you're easy to get along with people will put up with missed deadlines, if you're on time and always a pleasure to be around people will put up with work that's not as good as everyone else. Ideally you want to shoot for three out of three, but sometimes you have to settle for less.
No definition provided.
The concept of "ROCK STAR DEVELOPER" is a fiction invented by professional recruitment outsources. All developers are "Side Men" - even if some are in the "Musical Director" category.
"Flyin' in just a sweet place,
Never been known to fail..."
If you don't have anyone who has handled a 10, how do you know you're really dealing with a 7?
I worked in consulting for a few years, and at some point i worked with a company where PMs felt they could do with only ever hiring college people and work on retaining them for 5-10 years+. So the majority of people in the department had never seen another company.
They ended up with fairly complex project, but had no clue they were complex.
A (much simpler but extreme example, this is a discussion forum, there were actual hard problems involved...) was when they had a database with products and prices, and to handle promotions, would add/substract the promotion from the ACTUAL PRICE. So if the base price changed between when a percentage promotion started and ended, the base price would be completely hosed.
Now that's a big "Well, DUH!" moment, but imagine the same situation with deep architectural problems.
I am considered a pretty good developer (the word "rockstar" is stupid to me - maybe I am, maybe I'm not). I came in at a startup almost 2 years ago, and to this day I am still fixing problems that the original developers left.
If the code had been written correctly in the beginning, we would have saved millions in man-hour-dollars. Millions.
No, you don't need them all the time, but when you are building a foundation, you need it done right.
Just because the U.S. is a republic does not mean it is not a democracy. Democracy/republic are not mutually exclusive.
> If you give every problem a complexity value from 1 to 10, and your problems never get higher than a 6 or 7, do you need people capable of solving the 10s?
I think "rockstar" is overused, but never mind.
It's important, I think, to have a few rockstars around if your environment is even moderately complex. It takes someone with serious skills, experience and insight to foresee what would otherwise have been "unforeseen consequences". Odd interactions with other apps, race conditions, initial condition issues, migration issues, maintainability issues, in "5 or 6" level apps may not be readily seen by a 5 or 6 level programmers.
It's probably true that not every programmer needs to be a rockstar. There's room for mediocre programmers just like in most other fields.
Oliver's law of assumed responsibility: If you're seen fixing it, you will be blamed for breaking it.
Based upon my 10+ years of experience as a developer/consultant/manager I would say that the difference between a good and great developer is huge. The great (or the rockstar developer if you prefer) has the ability to improve the output of every developer on a team by figuring out the best solutions, the best architecture and comes up with innovative new ways to solve old problems. I have never been to a place where *every* problem is a 6-7 on a scale to ten. There are always some problems which are more important. Had life been fair some developers would earn 10 times more than others (regardless of industry, quants don't count). I have never seen that happen, but I would gladly pay twice as much for a rock star developer than a mediocre one, since I know that his output will be more than twice the average.
Oh and also, some developers are basically just sinks, who take resources away from every one else. Throw them away as soon as possible!
"Engineers are now starting to get paid for their true value, which arguably has not been case for a long time, but it is now, and Google is at heart of this. Google discovered an algorithm change can generate another $100 million in revenue. So now companies are more willing to have superstars, and there are engineers at Goggle making tens of millions of dollars."
http://www.eetimes.com/document.asp?doc_id=1319417
"If you're not passionate about your operating system, you're married to the wrong one."
My experience is that any project is as good as the best member of the team, eg: 100 monkeys will not produce something higher quality than a single monkey, but throw a single smart dude in the mix and things will look a lot different, though the smart dude may get tired of doing all the work of 100 monkeys and may develop an attitude (he might need more than a few extra bananas to stick around)
Help! I am a self-aware entity trapped in an abstract function!
You never know you ever needed a Rock Star developer
until you find out what they can do for you.
Frequently it boils down to cost. They find a way to do
something with half the resources, or they find a way to double
your throughput with the same resources.
Either way, the bigger the company, the more it means.
Your day-to-day tasks should be solving problems below your competency level. A 10 should be solving 7-9 problems, and a 7 should be solving 4-6 problems.
I would never hire someone who actually finds their projects engaging and moderately challenging. It you want to be challenged, start a project on GitHub, or contribute to other open source projects. If you're working for me, I want to know that this is the 3rd or 4th time you've solved this exact same problem, and you already know what the code looks like in its entirety before you even fire up your editor.
So, do you need 10 programmers? Absolutely, because there's lots of 7-9 work to get done.
That said, I _encourage_ engineers to do open source work. They need to increase their skill level, and they can even do it on my dime, but they shouldn't be doing it by experimenting with the projects I assign them.
It pisses me off when an engineer talks about some super great idea they have for solving some problem. You know what? If it was really a super idea, then I should be hearing about in the past tense, and you should be showing me the hundreds or thousands of lines of code you've already written and perfected. Sell me a polished product, not an idea.
they want people who can do the work of 3-5 people as in areas that may need 3-5 different people covering each area. They want 1 person to do that work OT with no added pay and be a super star in all areas.
I just read the book Multipliers. It is targeted towards managers, but I think it is useful information for just about anyone. This dev (who has so far shown no interest in joining management) certainly took it to heart. The book compares "diminishers" and "multipliers".
Diminishers, like your company rockstar. They need to know everything and have the last word. They can appear to be a team player when they're really just using people around them to prop themselves up. They strike fear into people who challenge them. They make large decisions by themselves, or take input from a small inner circle of people. They are at their A game, but diminish other people's output and potential. When people work with diminishers, they feel like they're giving 50%. It is a net loss.
Multipliers create an environment where people can give input with confidence, make mistakes, and learn from them. This doesn't mean they are soft. In return for this they expect greatness and weed out those who can't give it or who can't work with the team. They identify genius (described in the book as an innate, exceptional ability which someone may not even realize they have) and try to flourish it. A multiplier can still be at their A game, but puts emphasis toward helping others grow. When people work with multipliers, they feel like they're giving 150%.
It sounds a lot like some management BS and I'm sure I'm not selling it well, but it really is a great read. It has a lot of studies within tech companies, so it was generally very relateable. It helped me identify areas of improvement in myself, not just in my attitude but also to find opportunities to help others grow where I otherwise may have just taken control and pushed someone out.
What qualifies a developer as a "rock star"?
I work in a particularly tough field, prefer to be called an engineer due to the research and modelling I do in order to build a solution. I am continuously praised by management and respected by my peers and receive a more than fair chunk of coin for my dedication and the quality of my timely work. I'm very confident, in personal and work sense and perhaps time to time can be a bit arrogant.
However for all of that, I'm not a diva, I don't deal in petty bullshit office politics or ask for more money than I know the market will pay for the same level of work. And when I'm not doing a 13 hour day, I'm likely at the pub with the guys from work getting smashed and trying to find some chick who wants to make me breakfast.
If I'm a rock star, then so are the rest of the team at work because they are all just as talented and live similar work hard play hard lifestyles.
They use drugs, trash their instruments, wreck hotel rooms. They have even been known to spontaneously combust.
Each school is different but some a overloaded with theroy also CS is not really the desktop / sever / networking side of stuff.
Also 4 years pure classroom is to long / to big of a block.
everyone knwo what they mean:
Guru,(80s)
Then prima donna,(early 90s)
Then [insert made up name] (97-2000)
now it's rockstar.
Next week it will be 'earwig' or some other nonsense.
The Kruger Dunning explains most post on
so you can tell VCs you have a rockstar.
guh.
The Kruger Dunning explains most post on
I think pretty much any opinion on the primary question already been offered. However I would add that whether or not you feel that your needs are challenging and/or require great programmers, a great programmer may very well be worth every penny they cost you and more.
Take a look at the daily wtf or other similar sites to see the huge cost a mediocre programmer can be to a company even in very simple applications. Even a minor change to a system can be done well or done poorly, and too many items done poorly can be a catastrophe.
You might not be doing mission critical projects, but when generating a TPS report coversheet brings your network to its knees because some mediocre programmer doesn't know or care what she's doing, it sucks and it costs money.
-Lod
I'm sick of posts on this web site, and others, where writers whine that no one appreciates them because they don't have a degree. Better educated people know more than less educated people, and this affects their work in subtle ways.
I'm a CTO at a small (80 employee) software company. In my day I have been referred to as a "rock star". I didn't like that idea too much because usually it implies "prima donna". That said, the thing about a rock star dev is that they can be insanely productive. Where this matters most is with problems that might normally take a team of, say, 3 people. If one person can keep the whole problem straight in his or her head, then you can gain a lot of efficiency by not needing to coordinate between multiple people.
I like to keep a couple of guys like that around. Someone who you can throw a problem to and give them the extra freedom to solve on their own. But there are clear expectations regarding how they share information, how they collaborate, and how they take direction (for instance they have to still get their architecture reviewed). Not all guys who are "rock star" level can handle that; some want complete autonomy, and have some serious issues working well with others, especially those they consider beneath them professionally. That's fine, but it doesn't work on my team. I'll sacrifice some of that desired productivity for someone who works well within a team with players from A to C level. Call them a "rock star lite", someone who performs as a solid pro day in, day out, but when called upon, steps it up to all-star level.
Agree. I have a similar perspective. I was once hired to do the work of half a dozen people. I had to once explain to my boss's boss's boss that my negative productivity (as measured by "metrics") was because I was *undoing* the work of half a dozen people. The negative productivity programmer does exist, and can be lethal in quantity.
Your head of state is a corrupt weasel, I hope you're happy.
I work by myself on small projects assigned by the company which I am wholy responsible for. I have complete freedom of language, frameworks, data formats, etc... I get a job, give a time estimate and do it.
It's cool having that amount of freedom but the lack of peers hurts my growth, I'm sure many times I've reinvented the wheel. Then after some thought I reinvent it again in a better way.
How does one to about rating someone's programming abilities on a 1 to 10 scale in a somewhat objective way? Peer groups will affect our perception of what is easy and what is difficult. Are we judging based on speed? Use of patterns and anti-patterns? Code reuse?
If I change jobs and work with a team my perspective widens but how do I know how my local team compares to others?
Cwm, fjord-bank glyphs vext quiz
The value-add is that the rockstar developer does a task in like 1/10th the time of a normal developer. So the task is doable by others, but granted that first-mover advantage is frequently everything from the business perspective, managers loved that rockstars where I worked because they solved problems overnight where other developers would take weeks.
Now, while the rockstars were doing that they were also crapping all over the codebase with broken interfaces, undocumented functionality, completely gibberish procedure and variable names, etc., and thus crippling the ability of all the other developers to get work done the next day. But managers can't see that, all they see is "Rockstar fast, others slow".
So while I'm not fond of rockstars, the argument is not over whether they can do task X. The argument is whether their speed at X is counterbalanced by their leaving so much debris behind and slowing down everyone else at the shop.
We know where leadership by an anti-intellectual "strongman" who scapegoats minorities and likes boisterous rallies goes
How else are we going to get the next Grand Theft Auto?
Low end developers will not get their head around the whole codebase. They will add to it in ways that increase complexity unnecessarily. Eventually they will have diminishing returns. High end developers will create paradigm shifts on a routine basis that create simplicity out of complexity and thus create increasing returns. But these rules apply: Inscrutable code != rockstar: If the code is not self-documenting, or if it doesn't follow the established naming conventions, it is crap. Ego != rockstar: the motivation of other developers is also a factor of productivity and one of the best things you can optimize. Gold plating != rockstar: And not just feature gold plating, there is abstraction gold plating and design gold plating, which many alleged rockstars suffer from. But given the choice, I'd wade through 10,000 resumes to find a rockstar.
"rock star developer"
www.chihuahuarescue.com- Help to end dog abuse, abandonment and cruelty
I'm not even going to pretend to know what the op means by rockstar except a really really really good developer.
One of the interesting problems is should you hire people just good enough to do the job?
On first glance, many people would answer yes.
But this brings a structural problem. There are 'hard' problems that need to be solved. That might be a new architecture, optimization problem, integrating a new product...
But all you have are people who are 'good' enough to do the basic problem.
Whenever you run into one of these problems, you now have to scour and try and poach a 'rockstar' or perhaps hire a consultant. This is a very hard task. Also considering you have only hired 'average' developers, how is your organization going to be qualified to know who is the right 'rock star'?
Not only is this bad for the individual company doing this, it is actually bad for the industry at large. If most companies simply hire average developers, there is no one to grow potential into being a rock-star and most likely, many opportunities simply go unmet. The people capable of being rockstars simply leave the field.
I'll liken this to say the medical profession. I'm going to go out on a limb here and say that 90% of what your family doctor does can be done by a nurse, some looking up on textbooks/websites, and be pretty standardized. Heck, the way some family doctors work, it might as well be a pre-made tech-support script.
Have this and that ailment, order such and such test...
Now the question is should we then allow nurses and others to perform the job of a family doctor? On first glance, again, my answer is yes... as it would save lots of money.
On the other hand, you have to look at it from the doctor's perspective. Why would a talented individual invest a decade in a career where if they didn't make it to be 'top surgeon or specialist', that they could not just be a family doctor?
It's largely the same in tech. More and more talented people are unwilling to make the investment to become rockstars; especially rock stars in specific fields (graphics, networking, database...).
As to arrogance and working well with others?
It just depends on a person by person basis.
Some are worth it, others not so much.
Quite frankly, part of the problem is professionalism.
Without a proper apprenticeship or professional training, many developers don't get to learn the people side of things. When you learn from a mentor, you don't just pick up technical skills. You also learn how to act.
One of my friends is on track to be a doctor. He's just one of the guys. But when he was doing his schooling and residency, they teach them what to wear, how to address people...
I'm sure there are doctors who are complete jerks. But I think their training allows them to function well enough to hide their jerkiness.
What would Linus rate himself and how would he rate everybody else.
I've heard about, read about, and witnessed for myself the idea that executives and sales folk need big bonuses to 'attract above average' executive 'talent'.
What I've also witnessed in my decade plus career are many organizations that have average executives (earning above average wages and bonuses as if money makes people more talented, rather than just attracts people who already have more talent), above average sellers (unless constrained to selling only what already exists, then they become below average sellers), almost always below average marketing (whom become average liaisons to the outsourced marketing firm), and usually one or two rock stars (who were there when the company started, so they are receiving average pay) supported by a team of average to above average developers; or in some cases average developer turned manager of low budget low quality off-shore team.
So back to what I was originally responding with:
Good point about average everyone else. How does a 'rock star' overcome a situation where they become snared by an average company's average management which often requires many hours of average meetings?
Example of what happens when a properly funded start up hires a real rock star: 9 months of development by the average (3 member) team gets scrapped and the new rock star's more complete version that was developed in 3 weeks while he or she was waiting for a call back from one of the busy but average team members gets adopted instead.
I'd write a list of what real rock stars do so people know how to recognize them, but it would be easier to say what they do not do:
Rock star developers don't sleep (and if they do sleep, they do so as the tree falls in the woods)
So if you're a rock star, don't go apply at Amazon for that 9-5, you'll be bored and quit or get fired; get down to the nearest local VC firm and go make some real money, leave the average and mediocre development to the average and mediocre developers and managers.
If you are not a rock star, well I don't know what to say. I think all developers these days are rock stars even if just in the idea that as a developer you have a unique talent and ability to do a job that requires frequent heavy critical thinking. I think there is a lot of good to be said about someone who is even average enough of a developer to hold even an average developer job; this is probably a smart person even if they develop some stupid things sometimes (haven't we all). If you want to be a rock star, be more excited about what you do.
Rock stars are the opposite of what you describe them. Rock stars demand people to write good code, they demand good programming style, they demand documentation. Other programmers are pissed at them because they don't want to do these tasks. That's where the conflict starts.
In my book a "Rock Star" is somebody who *thinks* he is good and has actually convinced some group of people that he IS good. It's all about appearance and has little to do with performance. Many of the "rock stars" I've met and worked with (Some of whom where REAL live Rock stars (Van Halen, Amy Grant)) where so full of themselves it was hard to take them seriously. I've worked with developers who where the same. Some are all about the showmanship, not about the art; all about taking credit but care less about all the work it takes to set up the stage, lights and sound.
None of the best programmers I've known where rock star types. To a person, they didn't strive for the limelight, but would work behind the scenes if necessary to *make it work* and most where always ready to teach others what they could. These folks are the *real* stars, but like the stage hand I used to be are content to work in the wings and improve the work of others when necessary.
So, my advice is to not worry about making yourself into a "rock star" programmer with all the flash. Make yourself into the best programmer *you* can be. Master as many tools of the trade (languages, Operating Systems, development tools) as you can and be ready to train others when necessary. Be as useful as you can, work on as many different projects as you can. Learn as many things as you can. Be willing to take on tasks and be faithful to finish them the best you can. Don't be afraid of asking for help when you need it.
I'd rather have a programmer who can *figure it out* and make it work over the flashy, temperamental, "I'm better than you will ever be" programmer who refuses to work well with others and insists on it being his way or it's wrong and he won't touch it.
"File to fit, pound to insert, paint to match" - Aircraft Maintenance 101
Yep. I've worked with a few people I would consider "Rockstar" programmers in the "non-asshole" sense. They were fun to be around, considerate, polite, knew their shit inside and out, and tutored / mentored me and others to become more effective at the parts of the project we worked on.
These days, the first interview question I throw at new candidates is "Tell me a story about a time you had a technical difference of opinion with another person or group, and describe what you did to resolve your conflict and move forward". It's a behavioral interview tactic I picked up from a former big employer, and it tends to be fun to note how much they squirm while recounting past bad blood. Now, no one has really ever totally bombed this question, but making them talk through some of their uncomfortable scenarios provides some good insight into how much experience people have when they inevitably have to deal with conflict resolution... and the mere fact that we ask it kinda prompts them with the expectations we have of our employees for cooperating with others in our environment.
I don't like the "rockstar" label, but excellent software developers are more than worth it, as Fred Brooks knew years ago...
I don't have the book in front of me, but there is a reference at http://en.wikiquote.org/wiki/Fred_Brooks.
That book is worth rereading every few years.
"Rub her feet." -- L.L.
You claim to bring up others around you. Well, a great 'rock star' should do the same. So, if you have your '10' he/she should be not only providing the grey matter solving/development to the projects and company as a whole but to those that they work with.
If not, they aren't truly a 'rock star'.
EOC.
If you think that none of your problems require a solution that exceeds 6 or 7 on a 10 point difficulty scale, then you simply lack anyone able to see a 10-point solution.
There are always solutions that are more elegant, more intuitive for end users, require less effort, etc. The fact that you can't see them doesn't mean you shouldn't hire someone who can.
This signature is false.
Have you ever considered that people do not like being "managed"? That reaching stardom is the ultimate goal of a technical person who loves his work, because this is the only way to (partially) shield against b*llshit manager is capable to unleash on you? That this status is the only way to get in a position where you could honestly say what you think to your superiors without getting a boot next morning?
There is a sea of difference between striving to build a business (a machine with replaceable people instead of cogs) and living the dream (that is enjoying doing what you do better than anyone else, enjoying squeezing extra ten cycles or writing a new parser framework overnight).
If you'd understand that, you'd also understand why some people find rockstars intolerable and others adore them. You'd also understand how to work with them, not "manage" them. Fuck "manage".
Whether or not those rockstars are also assholes is irrelevant. Mediocre skills will get you mediocre results. You need visionaries, and people who think outside the range of 3-7. Their ideas often fall outside the range of acceptability, and as a result aren't always implemented, but thats where part of the arrogance you're talking about comes from. They may come up with 15 ideas to solve a problem -- none of which get implemented. If they didn't have any self confidence they'd be discouraged (much like you are). It takes self confidence to be on the edge of something, and have the confidence to walk it.
I'm a consultant, and I've worked with a lot of startups. The ones with rockstars do great things. The ones without, trod along, and sometimes don't die.. but rarely do great things. That being said, the world needs 7's too. In fact we need more 7's than we do rock stars. But great things don't happen on their own. We need rockstars to push them forward.
-- "I feel a strong disturbance in the for.."\*Segmentation Fault*\ (core dumped)
There's no room for rock stars in my tightly organized classical and jazz ensemble.
I let go of 2 rock star developers in May. Their stars were so bright they did not seem to understand what they were actually being asked to do. I helped them on their way to finding challenges suitable for their skills and have been cleaning up after them ever since.
I completely respect people who take the art of application development seriously and do want to attract that kind of talent. What rock star implies to me is something more than a soloist, it's someone with an almost pathological urge to show off his or her talents by solving challenges. A challenge could be a bug, or an infrastructure issue, or something else, but they have to address it the moment they notice it. Feeding this urge is not quite the same thing as participating in a structured process for delivering solutions to technology challenges.
I have had guys with such talent they could build web applications sophisticated enough to be unrecognizable as web sites and completely unusable in terms of core functions. The code does something interesting in the background, but I really don't care because the project is suddenly 300% over budget and there's no end in site. Their project managers don't always know what's going on because these developers don't actually tell anyone what they are going to do - they do what they feel like and you get to live with it.
Case in point: the 'KC Box'. This name comes from a rock star developer some might think at the level of a Van Halen, with the way he promotes his personal brand. He was the lead developer on a website built for a client using an open source content management system. 9 months into the project, 100% whitescreens, user logins had been shut off, you could not enter new content, etc. Literally nothing worked, but he did get some interesting contributions to a css preprocessor out of it.
This is the kind of thing I eventually end up with from rock star developers. It's not like they are building things that are sustainable or that other people can contribute to, they are building things to satisfy some internal need.
What's more valuable to me is people who can learn to see the goals of the group of people they work with, contribute to it, communicate about the areas where they see issues and put processes in place for how to address them. I don't have some meaningless label for them, I just get better results with structured development processes and people who know how to work in teams.
Yes: Sheeple have no business designing architecture, if only for that reason.
If the company you work for is terminating people, you may want to think about leaving ;-)
And if these 'rock stars' are so bad, why are the other companies offering them more money?
Waterfox - a Firefox fork with legacy extension support, security updates and better privacy by default.
Rockstar developers are the one you use to build an A-Team to create an innovative piece of software from fairly abstract requirements.
Once the proof of concept is done, you then move it to average developers for polishing and maintenance.
That's how R&D works in most companies.
The problem that makes "rockstar" devs unmanageable is lack of hierarchical development groups. There is the project manager who is hands off coding and the coders. Somewhere in between there should be a system architect. That is the role for the genius "rockstar" dev. If you put the rockstar on the same level as everyone else of course everyone will hate him (either because he will be correcting their small errors or finishing his work weeks ahead of timeline).
Let the rockstar solve the algorithmic problems, the efficiency logjams, etc and everyone else code. Everyone will be happier. Sadly management of coding projects is never very well thought out.
You will get two answers, depending on reader interpretation of 'rock star'.
One connotation is that they are high maintenance douchebags, that might or might not be competent too. This comes from the fact that *usually* the only way such douchebags stay employed is having great talent. By no means is this sort of person generally required. If you have a talented person in this category, you will be screwed when they go away or stop caring, because no one will be able to do anything with their code.
The other connotation is that they are a great developer. These people are greatly valuable. You may still have retention problems due to competing offers. They can churn through problems easily and assume a leadership role. They can work with people. If someone is in this category, losing them is still a great loss, but not nearly as fatal as those who assume themselves too good to work with others.
XML is like violence. If it doesn't solve the problem, use more.
Do you think so called 'rock star' developers are necessary at every company? [...]
If you give every problem a complexity value from 1 to 10, and your problems never get higher than a 6 or 7, do you need people capable of solving the 10s?
Those are two entirely different problems you mix there. No surprise you are confused.
"rock star" is mostly an attitude, not a skill level. Some of the very best are not famous, and many of the famous aren't all that good. That is true in all areas, not just music or coding.
So on that question: A "rock star" developer is necessary if and only if he adds value for the company. If you are selling your technology, say you are id software and your main business is selling your game engine to other developers, then a rock star can help you a lot to sell more licenses. Otherwise, no you probably don't need him.
But on the other question: Absolutely yes. Unless your company is tiny, you really, really want at least one brilliant guy on the team. You think in a simple, linear way. The real world rarely works like that. You may be perfectly able to solve that standard problem, but your 10 coder may be able to solve it faster, better, or in a more generic way that can be applied to other problems. Or he may be the one to ask the right questions to make everyone understand that you've been solving the wrong problem all along. If nothing else, he provides a benchmark and an aspiration for everyone else.
If you've never worked with a real pro before, you should. The difference between someone competent and someone brilliant is staggering, and it goes way beyond the difficulty levels of problems he can solve.
Assorted stuff I do sometimes: Lemuria.org
You need those Level 10 developers to fix the level 10 bugs that the level 6-7 developers can't fix.
I abhor the term 'Rock Star Developer'. Maybe that makes me a 'Lip Sync Developer', but more fitting taxonomic slang could be coined.
This post is entirely subject to your definition of 'Rock Star'. Are highly-technical staff with zero social skills a necessity? Absolutely not. In fact, they are often the main toxin of company morale, and cause of proximal turnover.
Siloed devs with horrible attitudes who hold companies hostage via obfuscated critical functions still exist, and may continue to. Are they any more necessary than excess managers competing against one another to sign their name on a new feature? What about HR personnel and recruiters? I dislike jerkwad devs with a passion, but measuring them against departments/staff/leadership who add little to zero value to the organization (sometimes while earning much more) leads me to believe that organizations who keep and protect them usually deserve them. All this company baggage usually breaks down processes and projects enough to become the janitorial bread and butter of external consultancies.
If people are calling him a rockstar programmer thanked probably not tht difficult to get along with. If he was an excellent programmer and a dick, the being a dick part would win out in people's heads. There can be a wide variane in ability in programming. Orders of magnitude. And the complexity of the problem is not the only metric that it applies to. There's productivity, efficiency, robustness, flexibility, etc. a good programmer is that way because they have more working memory an "stack spa e" and thus can see more of the problematic at a time and therefore come up with a better, more perfect solution, quicker, and they are also motivated and driven to meet the needs of who they are writting the software for. And there's a snowball effect here. People go to them more because their stuff works and they get it done fast. And so they hear about things more. E.g. "Because of this issue with the software, we had to go through six thousand records one by one, thankfully we still had paper records - our manager is trying to move away from them..." The first thing on a programmers mind when they hear this is "oh shit!" They will focus more on being carefull, by understanding and empathizing with the people effected by their decisions, they're going to concentrate harder and work harder. And they will make less mistakes. And people will notice that. And they'll give them more work. And the cycle continues. By the end of the day if you feel he's being a but curt with you, consider how hard he probably is on himself, given that he hears first hand how every little mistake effects people, and consider how overworked he is. Perhaps he's curt simply because its a big deal, and he has other big deals that he needs to deal with. And other people, other non-programmers understand this, and appreciate it, and that's why they call them a rock star. It's their way of saying thanks.
What if they are right and they do, generally speaking, know more than the other people in the room? Might that be a cause for misery or frustration?
I know I've been away for a while, but when have Anonymous Cowards been able to post stories? Isn't the whole point of Anonymous Cowards is that they are in fact, Anonymous Cowards? I'm pretty sure Slashdot doesn't work for the BAD so create an account and post like you have some balls. Unless you are afraid of Rock Star programmers, in which case I understand. I myself subscribe to the John Nash school of genius, stay on this side only long enough to accomplish your objective. Most people will leave you alone when you go home.
In several companies I've seen several developers go from awesomely capable, really nice people, to frustrated crabs with no time to do good work.
It's easy to resent them when they get to the latter state. You know they're good, but they don't have time for you.
Also, we all think we're better than average. We can't all be right.
I have been in many places where they had a bunch of perfectly good programmers. Things work well and all seems good. But I have also been in places where a few guys were Fake rock stars. They would blow their own horns from one end of the room to the other. These people were usually very destructive. A common symptom was the whole not invented here. They would spend months (or more) reinventing the wheel. I am talking wheels such as network code to download a file from a website. These of course are areas where there are awesome libraries programmed by real rock stars.
But in those companies where there were real rock stars these people were often best used not in the day to day work but helping other people out of trouble and sometimes just left to their own devices. The result of helping other people would be to go into an area where a fifth server had just been added to handle the load of some part and, using some discrete math, would reduce the problem to a point where it became a light load for a single server. Also the true rock stars would show up on Monday with a new version of the company's product for this new Apple iOS thing that recently became available. Then they would pull the same stunt when this new Android thing came out.
With fake rock stars you often see them claiming seniority and other programmers hiding their projects from them. With the real ones you have other programmers wishing they had more access to them. Another way to detect the difference between the fake and the real rock stars is which programmers are quitting because of them. With the fake ones you lose the genuinely good programmers. They can't take the BS anymore and just leave. With the real ones you lose the bad programmers who are made to look bad when the rock star comes into their disaster project that is 6 months overdue and does it better in a week or two; for the third time.
First of all, every time I hear the term or see it in job advertisement I tend to throw up a little in my mouth ...
Most of the time they just look for people on whom they can dump a bunch of shit on at random times and they will come up with some solution. Most places do not look for a good programmer who can make a program (design, develop, test, document) from scratch, but someone who will be responsible for a group of lesser trained/skilled/experienced people or to maintain 10 different codebases, because they can, they are good. In that situation they will hate you, quit and spit on your grave. They look for a multitasking work-whore, not a thinking entity.
I can really understand the behaviour you are explaining though I don't think I am a "rock star" programmer ... ... .. well... at 11 pm they didn't even try to work yet....
I am just a dude who spend a lot of time in front of the screen and spent 20 years between coding and system administration
However even with this, I know that I am annoyed by system admins who confuse bits and bytes, and who you have to send to a training so they can install Apache MQ for you in a way that it doesn't shit itself on day one.... I am also annoyed by programmers, who are capable of spending the day looking at "cute cat videos" and then get upset if someone asks them why they didn't submit a line of code for 4 days into the repo... or when I figure out, that all the dev servers are down, but none out of the 10 developers actually noticed/reported it... because
I am sure "rock stars" who are far superior than me can get pretty nasty about these if me (lesser mind) is so much annoyed by them....
That said. Good programmers tend to quit shitty places. A players play with A players and many times are complete asses to others. The truly good coders I knew were always normal to normal people. It is not skill and knowledge only. It is attitude. Many times it is not skill or experience who divides A and B, it is dedication, interest, willingness to learn, willingness to spend 100 hours on a problem, willingness to write 10 POCs before deciding with a technology/library/language.
Rating yourself a 7 or anything at all I think is a bad idea. It is a much better idea to find out in what task you can be an A then pursue that, or chose where you are a B and then make yourself an A.
That's how I see it....
That said, at most places where I worked I did not find the technical aspects of the job even slightly challenging. What kills me most of the time is really the laziness of most and the total lack of logical thinking (as in common sense).. Want an example? HP backup engineer, first expends the Veritas file system, then makes the backup (from a system, that had no backup, only the live copy), or first killing my VPN then asking me to help (reading a 100 line shell script code on the phone as I had no access).... this is the kind of lack of logic you deal with every day....
To put it more simply: the more experience/knowledge you have, the less you tend to tolerate STUPID. I guess some of these "rock star" coders got to the point where they have zero tolerance towards stupid, they are tired of explaining the same shit over and over, they are tired of sending the same mail over and over (after first documenting, emailing, then explaining it the first place).... they are sick of rules that are made to govern the lazy, they are tired of working 8 hours, knowing that they do more in 4 then the idiot next to them in a week .... etc etc...
I don't think you have to be a "rock star" coder to see these things. If you ever worked with people who just didn't make any sense at all, and they were slow, lazy and .. .well maybe not that bright, then you can imagine how the "rock star" feel about the rest of the population...
Just my thoughts...
This term is just an example of arrogance, either on the part of the developer or on the part of the hiring company. In either case it is a symptom of lack of experience.
But, you argue, I have seen rockstar developers with my own eyes. Well, I would argue that you actually saw a well-organized and well-run development team that created the right support environment for all developers to flourish. In other words, rockstarness is a characteristic of the environment, not of the individual.
However, beware. One way to creat rockstars is to have a dev environment where there is a lot of repetition. A lot of the same old thing dressed up in different details. This helps developers get real good at creating a certain type of app, but if you take one of those rockstars and ask him to build something completely different, even in the same company, it will not work. The rockstarness is not inherent in the individual.
There are likely to be exceptions to the above rule, especially with older developers in their 50s and 60s who have seen a lot of water under the bridge and have decades of hard won experience developing in shifting environments. But even these folks will still have their comfort zones where they really shine as mentors and teachers, and the grayer areas where they are still learning at a voracious pace, but might not be so good at explaining it to others,
(I work in a small but successful company as the lead developer.)
To be honest, most companies produce fairly bad software, fairly inefficiently, and you really don't need really good developers to do that. You can make a good amount of money just supporting existing products someone wrote a while ago, adding small improvements for marketing purposes, and/or writing something which is not particularly complicated, but profitable (see: 95% of apps for mobile, internal enterprise apps/scripts, template-based web sites, etc.).
You need "rock star" developers for only a few things:
- Doing cutting-edge research type programming and/or optimization (eg: DB design work, compiler design, optimizing embedded firmware, etc.)
- Doing necessarily complex functionality, and only if you _need_ it (eg: highly multi-threaded apps, lock-free programming, etc.)
- High-level design, organization, and/or refactoring for large/critical projects (eg: re-organizing the Windows/Linux kernels)
- Writing "optimal-to-maintain" code to do more with less people/time/resources (eg: having less than five people writing and supporting high value, expansive enterprise apps)
If you don't have one of those cases, "normal" developers will probably be fine (assuming reasonable management and organization structure). My 2c.
As far as the definition you are referring to, "Rock Stars" are people that can solve all level 10 problems. Every competent developer can solve at least 1 level 10 problem, but no one can solve all. Everyone is better at something, i.e., everyone has had experience in something that someone else has not had experience in.
On the other hand, if you define the makers of Twitter or Facebook as Rock Stars, any average developer could have easily coded the beginning of those. It was the creativity that launched them to where they are now -- and with Facebook, the ability to be more competent than MySpace (which doesn't take much effort). Einstein was a genius for his creativity, not because he could solve level-10 math problems in 2 seconds.
The G
But you do need competent ones. Does your HR know the first thing about what makes a programmer "good", much less a "rock star"?
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
Without the right developers, every project will seem like a 10. Complexity is as much in the solution as it is in the problem.
He touted that he was writing these incredible large code changes each day. I was working on the code fixing his mistakes. It was a cluster fuck
The reason he had such large amounts of code checked in each day was because he would implement a function and then to implent a similar function he would copy and paste the same code and maybe change less than 1% of the paste. Compound this by implementing 10 similar funtions.
Now here is the kicker. When an error was discovered I was tasked with fixing it. Since the logic was duplicated 10 times I had to make the same change 10 times. I truly grew to hate that pompous idiot.
The guy who's a 5 is going to generate solutions that are a 5, whether the problem is a 7 or a 2. Even easy problems can be solved poorly. (Which means they may not be that "easy" after all). Few problems are so trivial that the 9 guy can't produce a solution that's superior to what the 5 guy would produce.
In a start-up, a rock-star is typically someone who can build great things in short periods of time. These "great things" are usually the bane of everyone's existence 5 years later, as the code is written in a 48 hour caffeine (and or alcohol/drug) fueled coding binge, and the technical debt is never addressed. Meanwhile, a rock-star 5 years later is someone who can take that pile of spaghetti and turn it into a service with 5 9's of availability. In my career I've worked with a couple hundred engineers, and only one person was capable of both.
What's really unfortunate is that your early-stage rock star frequently has no place in the later stage company, either by adhering to practices that don't provide the reliability the company is looking for, or by becoming frustrated by the drag in pace associated with a maturing company. Unless the early stage developer can happily transition with the company, they're likely to find something new and shiny.
That being said, the late-stage rock-star often has no place in a new company. There's a dramatic shift from "build this well" to "make this work now," and too much lean towards well (re: slow) can destroy a startup (which may be executing on minimal funding and with a lot of competition). A lot of folks in the industry are great at what they do and how they do it, but it takes a special person to transition back and forth, and those are the only true rock-stars. The only proven rock-stars (IMHO) is those that have succeeded in both environments.
than the next guy, it's not because he's solving all these hard problems. It's just the opposite. Newbies and the untalented struggle because they make everything harder than it needs to be. And even - and especially - those walking around with a master's or better in CS do this. So many create such disasters of design and architecture, shining dreams of pristine theories blown into the hell of over-complex ugliness, revealed almost immediately for what they are by their first practical application. Those stuck in the world of OO with no knowledge of functional design, slaves to the GoF, and most particularly Java developers - they are the worst offenders. Call the highest-paid and most arrogant of them 'rock stars' if you will, but they are not nearly the best or most productive programmers.
Please, do not confuse highly talented with being an A-hole. People who use their talent as an excuse to be jerks are simply deficient. I am good at what I do. People on my team come to me for solutions when they can't solve it themselves, but that doesn't mean I can act like a 2 year old. I think it is always good to have a top developer on a team and never worth the trouble of having a prima-donna on the team. In job interviews they are easy to spot. They're the ones that have never seen your system and are already telling you how to fix it.
His 1-10 ranking of task difficulty & how he correlates it with task analysis is reductive and omits several behaviors in work that demonstrate competence.
Lets assume you *can* assign some sort of 1-10 number on the 'difficultly' of a task.
If it requires a 7 why have someone who can do more?
Intelligent people work smarter *and* harder. They find ways to automate time consuming tasks where lesser workers just put their head down and do it individually.
They find ways to overlap work.
They have better habits, including consistency, attention to detail, communicating actively, etc.
This 'Ask Slashdot' is dumb...you want capable people in every position, and to have a plan to let them grown within your company.
Thank you Dave Raggett
A lot of confidence is due to not understanding the problem. You need to see results to be able to tell the difference between that and "here's one I prepared earlier" confidence.
After that it's just a matter of deciding where to put someone with a difficult personality so they don't disrupt others so much. After a while a lot of people will get used to them even if their ego is based on overconfidence or lies.
I equate it to not needing a college degree to work at Walmart.
Somebody at Walmart has a college degree. Perhaps not you, but then that's why you are a greeter and they are somewhere higher up the management chain making big bucks. Is this person a 'rock star'? I don't know, but I imagine that a few of them might be. These would be the sorts of people who cook up innovative marketing deals or supplier contracts. They are the ones that keep customers walking in your doors, where you work.
If you think your business doesn't have anything greater then a 6 or 7 level of complexity, perhaps there is a competitor out there with a level 10 idea who will take your market away from you.
Have gnu, will travel.
Take a read at this post: http://www.myplanetdigital.com/article/why-we-hire-fit-first-skills-second
i've worked with some amazing team players and leaders out of MIT. Guess there's a stereotype, but I haven't encountered it.
My God can beat up your God. Just kidding...don't take offense. I know there's no God.
Those are the key words: "Large software company." Large software companies tend to pigeonhole people into tiny roles, just do your little job and hand it on to the next person. No, you don't need a lot of talent for that. It's a good thing, because most rock-star programmers go NUTS in a big company, tied down by red tape like Gulliver in Lilliput.
In a small, innovative company, you need people who can do everything, without being told exactly what to do or how, and at lightning speed. In turn, the small companies really appreciate their work, which is what the rock stars crave even more than the gym memberships and discount clubs that the big companies offer.
So...it ends up working out for everybody!
What you want, as a manager, is predictability. You predict the job will take X months, and cost $Y. A team of average developers is the way to get there. you *might* get there in X months and Y dollars with a rockstar, but you might not, if he/she gets in a snit, or your problem doesn't match the narrow specialization, or your problem is deemed *boring*. Unfortunately, if I don't deliver for Y +/- small delta dollars in X +/- small delta months, I don't get the next job. So, while it's loads o' fun to have an incredibly talented person on a small team; it's also a bit scary.. scary, unpredictable, adventure is fun. But now that I'm not in my mid 20s anymore, and have a real life, I'd rather get my adventure somewhere else.
I've seen these so called college graduate rock-star developers.
Very bright, but arrogant and sloppy, making gross refactors without even attempting to test their changes; then not telling anybody what they did.
Later some other poor bastard has to come after QA finds their bugs and fix them.
So don't hire the rock stars because they don't fucking test their code.
If you really excel as an engineer, you will go independent instead of being an employee.
Bram Stolk http://stolk.org/tlctc/
You're a product manager, post on / AND know proper error handling?
Where do I sign up? ;-)
but I do dress like one
I consider myself as one as far as technical competence is concerned, though not as much by attitude. I would typically rate at 10 in most of the teams I have worked.
But having managed a few high profile developers later in my career, I would definitely say they are detrimental to the health of teams. In most teams, you just need average or above average developers who can churn out pages of code, once specifications are given. This is very much true in business computing, though it may not be valid in product development and system software.
Rockstars have their uses though. When the time is short, or during critical situations when quick thinking and a fast hack is required, they come in handy. So most teams tolerate having one of them around. So long as there is a decent manager who can keep such developers controlled and balance team dynamics, they won't cause too much trouble.
That sounds exactly like a situation we are facing at work. Thanks, I'm going to pick up that book up and try to better understand this. Perhaps it can give some pointers at how to be a better multiplier too.
I think this highlights the problem with the "rockstar" label though, no one knows what it actually means.
If we're going by the definition that rockstar developer are brilliant at coding but arseholes to work with then I think that's a myth. The only people I've ever met to fit this version of the rockstar label have simply been all talk. They talk the talk and they're effective at making dumb people believe they're incredibly amazing and talented but when it came to they were mediocre at best. Everyone I've met who believes they're incredible talented and a step above the rest really isn't, they've just convinced themselves and people worse than them that they are.
If we're going by the definition that a rockstar developer is simply a good developer as you've defined them then I agree they're worth having around and are genuinely talented.
By rockstar I've mostly encountered the former definition though and I think in that case no, you never need them. You just need developers covered by the latter definition.
I think there's an inherent reason why the former definition of a developer whose incredible but awkward to work with is a complete and utter myth and that's that in my experience those who are genuinely really good, the best at what they do, are this way because they're capable of introspection, they're capable of looking at themselves, spotting areas for improvement and improving on them and that's how they just get ever better and better. Rockstars in the former sense simply couldn't do this because they already believe they're perfect, and that's why I think the former definition above of a rockstar is a myth.
Chances are if you've hired someone who is an arsehole but believes and makes you believe they're incredible then they've pulled the wool right over your eyes and you've paid over the odds for a mediocre developer with a shit attitude. What people recruiting should be looking for are the people you describe - those who don't need to shout out about their brilliance but just are brilliant.
Perhaps the term "Rockstar" should be reserved for the blagger wannabes, and for the genuinely great developers you mention who aren't arseholes we need a better term, like "Maestro"?
Ah, the sweet self-indulgence of mediocrity! "What's with that guy that keeps saying things I don't understand? He's clearly unnecessary, 'cause I can't imagine why would you need things I don't understand. He's like a rock star or something, oh my head hurts already, let me go to the boss who is a person I can understand, and tell him to fire that scary weird man".
Don't do that. I used that for for my interviews. 6 Months and I'm still looking for the first member of my team.
Considering how the term "rock star" has both positive (dedicated and passionate) and negative (self-centered, abrasive) connotations, I'd say the folks who claim "rock star" developers are generally great guys who work well in teams are the ones misusing the term.
The whole question is idiotic. It frames the issue as if a programming job consisted of discrete puzzles with some hypothetical difficulty rating X to be solved . Since we don't have hard problems to solve generally, why buy the services of someone who can solve them instead of someone less capable but cheaper?
Ever program? Because if you had you'd know that mundane code written by your cheap developers leads very quickly to *puzzles* no one in the world is smart enough to solve, i.e. problems which are intractable. Guaranteed you have a lot of those in your code base. You also have things less grievous than the classic "big ball of mud" being generated all the time - ways of solving ordinary problems which are just bad and wasteful of time and resources.. this the invisible drip drip drip that causes IT projects to go over budget and miss their deadlines. Nothing is obvious wrong, it's just that mediocre developers are mediocre across an entire range of activities, not just "top prize " problems and competent developers carry that competence around with them and bring it everything they do.
Think smart people are expensive? Just wait until all those devs you hired are standing around doing nothing waiting for one of their kind to figure out what the blocking issue is. Just take the salary of each one and multiply by the number of such people updating their FB profiles to pass the time, times the number of hours they spend doing that, times the number of times one of their kind causes another such incident. That's their REAL hourly rate.
If your company doesn't innovate or do anything game changing... If they don't even do anything especially well but their job is to do something very consistently, then they might not need the rock stars.
I'm not being insulting here. There are companies like that. A good example might be a power utility. They typically aren't doing anything innovative. They buy power plants from companies that make them... possibly they install and maintain them entirely themselves. But they don't have to do anything innovative. Just follow the instructions and do the regular maintenance. That sort of business can survive pretty much indefinitely so long as they provide a high quality of service through rigorous reliability.
The rockstars are selling their ability to come up with things others won't. To come up with great ideas and then implement them in new ways.
Lets say you don't have that. Well, do you have something else? It might not be worth as much but it is probably very important in other situations. In the above example, I talked about reliability.
Another thing that is important sometimes is a near autistic attention to detail. Some jobs require EXCEPTIONALLY anal attention to detail. You'll find this in many scientific, financial, engineering, and of course computing fields. Situations where the details are everything and there are a LOT of details.
So long story short, I don't think rockstar developers are always required. That said, it is nice to have at least one around or one you hire on contract. The reason is that some times you need to change the way you do things and the rockstars are going to be better at that then the people that mastered the old way.
In any case, best of luck to you. As much as the various trolls here will beat you up for your question, the reality is that pretty much none of them could qualify for the rockstar position themselves. That's the case for most of us. I'm not a rockstar either.
I'm good at what I do. But I win more through being extremely cautious, very patient, and pathologically non-conventional. When I do things differently, it isn't because I'm innovating or trail blazing. I do things differently because I deal with security a lot. And the systems that get hacked are the systems that the hacker understands.
My systems are inscrutable to anyone that hasn't been briefed BY ME on them. Which means my systems have never successfully been hacked. Ever.
Now is that because my systems are unhackable? Or because I'm so amazing? None of the above. I'm worse at a lot of this stuff then other guys that have been hacked over and over again.
No. My systems are unhacked because the hackers literally don't understand them well enough to hack them. They're weird. They're weird on purpose. I do things in a odd way and don't publish how they work. My systems are obscure and strange. I do get lots of people TRYING to hack my systems. I can see the logs and you can tell the difference. But their automated attacks either fail or their manual attacks are given up on. Why put in the effort to hack some weird system when there are a dozen others that you can break into right now? And so they leave me alone and hack someone else.
I take my ques on defense from nature. Nearly all creatures make use of disguise, misdirection, or obfuscation to hide themselves. That is what I rely upon.
That isn't genius or a sign of my rockstar nature... because I'm not one. It is a product of my inherent paranoia and methodical approach to security.
I like to think I'm not smarter then other people... I'm wiser then them. Who can say.
If you're not a rock star, find something else you're good at doing that they cannot or will not do... and do that instead.
Remember what old darwin said. Survival of the fittest doesn't go to the strongest or the fastest or even the smartest. It goes to the most adaptable. The lowly cockroach in the scheme of things is a better specimen then the mighty lion.
I don't need to walk around with ins
I've decided to stop wasting my time responding to AC trolls/sockpuppets... so if you want a response from me... login.
Rock stars are the opposite of what you describe them. Rock stars demand people to write good code, they demand good programming style, they demand documentation. Other programmers are pissed at them because they don't want to do these tasks. That's where the conflict starts.
The conflict starts when the team disagrees about what is good code and good style.
There are three things that people really care about in an employee, quality work, meeting deadlines, and a pleasant attitude - and you only really need two out of those three. If you do good work and it's on time people will put up with how unpleasant you are, if your work is good and you're easy to get along with people will put up with missed deadlines, if you're on time and always a pleasure to be around people will put up with work that's not as good as everyone else. Ideally you want to shoot for three out of three, but sometimes you have to settle for less.
You forgot the fourth criterion, works for peanuts.
And the only criterias that matter are the peanuts and meets deadlines.
The type of talent you describe does exist and are sometimes indispensable - in times when your project really has high difficulty or extremely tight timelines. The middle management in my company likes to hire good developers with good attitudes as the backbone/core of the team and then fill out the peripheries with targeted hires - these are usually multi-decade veteran, cream of the crop developers and scientists. We like these people because:
Admittedly, these people are difficult to deal with personally. This causes friction which I've learned was a necessary cost for the amount of expertise they bring to our team. Again, this is more relevant because our team really does have open-ended, highly technical problems with very short time to delivery requirements.
Me: BA in Math, Physics, Computer Science.
Coworkers: BS in Computer Science.
I'm a rockstar compared to them. I spend 8+ hours programming a day and 3+ hours learning as much as I can about new ways to do things. They spend 8.75 hours a day programming and the rest of it playing XBox or PS3.
I output better code, in less time. "Better Code" meaning far fewer bugs, easier to maintain/support/fix, and self documented. I do it because the projects have to get done and my coworkers won't put in any extra time to get it done. They also don't put in time to learn to do it better. After all, they have me to pull the slack.
Do I like being lumped in with people who are considered egotisitical, rude, and self absorbed? Not at first. But, after trying to explain how to correctly use the .NET String.Format method 10+ times and explain the ASP.NET event model order for when web pages are loaded over and over and over again to people with a 'real' college degree, I get pissy.
"Rockstar" as a comparison to other developers should carry a caveat of "Sometimes, those other developers actually are F*-ups."
So, call me a Rockstar if you wish. Just keep in mind that I'm a god-damn rockstar because no one else will try to be a good programmer..
.. in a law firm
I have a friend who is a very junior lawyer at a local firm. The senior partner she reports to charges 8 times what my friend charges per hour. I asked her how they could justify this rate considering she was technically equally qualified, albeit way less experienced. She answered, because he can get eight times as much done in a hour as I can; he doesn't have to look stuff up.
Rock star programmers are the same. They are the guys who can just get to grips with the problem, and don't need to look at the reference books or google around to see if there's a library that they can use; they already know one exists, the names of several of them and probably the basics of API of one off the top of their head. In one hour of being left alone, they can do the work of eight hours of a 'regular' programmer. Yes they deserve to be paid eight times the other guys, if they get eight times the stuff done.
That being said, they don't have to be assholes. I've met a number of "rock star programmers" that were pretty easy to get on with. The one thing they do tend to have in common though, is that they don't suffer shitty developers gladly. They will happily tell management a) don't hire him, b) fine, don't make me work with him, c) it takes more time for me to delegate a simple task and watch that he does it right, than to just do it myself; he CAN'T PROGRAM. The problem there are a lot of so called developers who really cannot program, so the rock stars look like they throw their toys a lot
I never really looked at myself in this way before, but if the definition of a rock star developer is someone who can do the work of several average joes, who is more trusted by colleagues than others and has the ability to visualize design instantly, then I guess I fit that description. I've never been paid the same as the many people I can (in theory) replace, but then again neither has anyone else whom I've met who fits the bill.
In my mind, being the "rock star" is about more than just a little skill. Everyone can develop skill, it's also about work ethics. good memory (or good organizational skills), education, commitment and confidence.
Admittedly, there may be one or two of these confident types who are a bit much. but a strong confidence, coupled with knowledge and skill tends to breed arrogance (and how can it be arrogance, if you're right ?)
I've never considered myself invaluable though. But I also know that those who work with me, are very happy that they have me instead of someone whom may not be as good at getting things done. So I would agree that invaluable is a wrong term to use. But undervalued or underappreaciated might better fit the bill. Indispensable then ? Hardly. I always see my highest goal to make myself totally superfluous. If my boss ever finds me with my feet up, he will know that everything is in perfect working order. Maybe that is the real difference between the "rock stars" and the average developer: I dont care about my job, only my work..
--- To err is human... Am I more human than most ?
I've knows some programmers who are awesome guitarists. They know the lingo, have awesome memory, both for syntax and the workings of their own code, and can type really fast and pound out working code quickly.
But the songs they write are mediocre. That is, they do things the hard way, they create functional but unintuitive interfaces (and APIs), they make organizations dependent on fly-by-night technologies, they meet stated objectives but can't fill in the blanks where users don't know what to ask for, and nothing they create is every attractive or compelling to users.
To be a rock star, somebody in the band has to compose awesome music. That is, somebody on the team has to know how to solve the right problems.
I have worked under two different rock star developers and the one thing I noticed about them was that they wrote HORRIBLE code. The first one I worked under wouldn't comment his code, he wouldn't structure his code in a logical way and tried to do everything with a single line. He didn't do anything with out complicating it and never produced clean code. His code worked and he could write it super fast and solve large problems but no one could his code. The second one I worked with was a joke, he talked about his skills like he was a god amount men, he never really wrote any code and what he did write I had to re-write. He was a joke, my point is that I don't think any true rock star developers exist, I think to be a rock star developer you need to write rock star code and not complicated, unusable code that stinks of a teenager getting compile happy and trying to over optimize everything.
"FWIW if you ever have to work with a graduate of MIT, you will experience this too, even if they are a wanker"
I work for MIT and, unfortunately, I have to agree with your statement.
Sounds like somebody isn't a rock star programmer.
If by "rock star" you mean an arrogant a**hole who programs at 200 mph, but constantly insults and POs others, then no. If by "rock star" you mean someone who quickly and effectively produces high quality work, continuously invents simple solutions to complex problems, and generously conveys technical knowledge and good work habits to others at every turn, then yes.
Interesting. I once managed a very bright and young developer, whose coding was exceptional. He was very often (but not always) right. But he was also rude and completely lacking in any social graces. And it wasn't enough that he was right - he also made everyone else feel stupid and frustrated.
I had to find solo projects for him, as the rest of the team ended up flat out refusing to work with him - and I didn't blame them.
90% of all development doesn't require "rock star" talent. Most code that needs to be written is not running the space station or dealing with microsecond financial transactions. And in my experience, you're better off with competent code monkeys cranking out predictably and processful-ly rather than geniuses trying to replace the wheel. Your organization is not as different or unique as you think it is.
The dirty secret in software development is that it's mostly driven by what is amusing and gratifying for developers rather than what is necessary or useful to solve the problem.
In my experience, you have principle engineers that know what they're doing (pushing the envelope at 9 and 10 on the OPs scale) and you have Rockstar Developers. They are not the same. I've met "Rockstars" that couldn't push 8 on a good day.
The last time I worked with a pair of these so called Rockstars, they were a real pair of assholes that got whatever they wanted. Salary freeze for the whole company? Well, not really, let's say everyone but the rockstars. This pair were called "the Genius Twins" by the rest of the engineering team, and everyone knew they weren't as smart as management figured. Proof came after 5 years on a new development project that involved a customized version of Tomcat that was supposed to replace a 13K line codebase of bog standard C code. The product provided by that C code continued running - unsupported - for at least 4 years after I left 6 years ago (no idea if they're still using it), but this 5 year effort to add a few simple modules (yes, simple, at least according to the Genius Twins) to Tomcat did nothing but destabilize the whole thing. After 5 years, the money guys wanted a concrete deadline, and the Twins had to admit defeat - they just weren't capable of stabilizing their own code. But everyone that said they couldn't do it years before was "stupid".
My advice? When someone is referred to as the resident "Rockstar Developer", avoid them like the plague. Look for the real principle developers and work with them. They still have quirks, but they're generally not a bunch of whiny little bitches that get a boost out of slamming other people.
It sounds like you're not really saying Rock Star so much as pretentious developers. In a free-market a person with extraordinary skills is entitled to be paid accordingly, but that doesn't make them a jerk.
yeah me too
agree...I actually hate the notion as well...it's ridiculously reductive
I could imagine using codes to assign value to tasks however.
Thank you Dave Raggett
They're not needed.
Rock Star developers don't _have_ to be assholes.
They do however have to answer questions truthfully and when an asshole boss asks for something stoopid and is told by the developer that the idea is stoopid, the dev gets tagged with the diva label by the asshole boss. That's how those labels get improperly applied.
Rockstars are in every field. Rockstar CEO's - do you need one? No, but it MIGHT help the portfolio. Do you need Rockstar Managers? No. Do you need Rockstar ANYTHING? No. Do you WANT them? Are you willing to pay them? (Including $$, ego, office, quirks, etc) companies do, and if they did not get a precieved rate of return on investment, they are normally gone. Apple got rid of Woz, and still did OK. They got rid of Jobs, then let him back when the 'ones that were left' couldn't keep the water out of the leaking boat. Was Jobs NEEDED? No. But neither is Apple, M$FT, IBM, XEROX, Polaroid (are the last two still there?). We know the pioneer computing giants Sperry Univac is toast, so is DEC and DataGeneral and a host of others. They all had rockstars. Linux has Linus and a few others that help get things done and keep things on course. At this point with 'good management' they aren't needed and one day WILL be replaced by V2.0 or whatever. Bethoven was replaced by Beatles who was replaced by Miley Cyrus? Ok, it doesn't always work out. It still doesn't detract from the good folks have done even if they go on to unworthy lifes. ... Now back to your daily diatribe on life ...
I can't get a cite. but a few years ago I heard of a study that compared self-image with competence. It found an inverse correlation. People who know their stuff and its limitations also tend to under rate their competence. People who are less accomplished but want more attention for what they think they know and rate themselves more competent then they really are.
We can view this along the lines of personality types and flaws in character that gravitate to roles in life. People who get more by conveying an image may not really understand the limitations and complexity that knowledge brings, those pesky details and gottchas, they may be less competent, but their strength may be to lead others to focus their efforts to a goal at the risk that the goal is ill-considered or even fraudulent. The real achievers may not be good at sales or persuasion, especially of most people, but as befits their exceptional character, they create most of the advances. They are also less likely to rate their achievements as important as they really are, and often not resting on their laurels before rushing off to the next challenge, leaving the credit taking to lesser folk.
The ever-present danger for leaders and business people is that they are biased towards to the sizzle and less towards the stake. Managers need to keep this in mind, that the self-promoters may not be the sharpest tools in the shed and that some of the shy and even less attractive people may be able to help much more.
Clarification of who you are. You are a mediocre to below mediocre programmer with an inferiority complex.
Wow, you're a sad, bitter asshole, aren't you? Either that, or you just turned thirteen, you are out for some of teh lulz, and you forgot to check the "Post Anonymously" box.
Which raises the question, would you talk like this to a 13-year-old, really? I'd call it child abuse if so. So at least you must regard what you don't know about the person on the other end of the conversation. I dont have anything to say about the assumptions in the top of the thread. It may confirm my belief that there is an inverse relation between self-promotion and competence.
Take a look at http://en.wikipedia.org/wiki/Turbo_Pascal !
Turbo Pascal was a runaway hit specifically because it broke with UCSD's version which was slow as molasses.
It also allowed you to break out of the straightjacket whenever you needed, including dropping down all the way to inline asm/hex codes.
37 kB for a complete IDE with editor/compiler/linker/debugger/run time library.
Terje
"almost all programming can be viewed as an exercise in caching"
The question posed captures an oversimplification of reality. I would be considered a "rock star" by the CEO whose company I effectively destroyed by leaving. I left because there were no interesting challenges and much bigger players were offering much more money and much greater benefits. I'm dynamite at math, CS, and coding, and I'm only about 50% socially inept. ROCK STAR.
You may not need a "rock star" in most situations, but they can often be found doing the work of N > 3 people of average technical competence in companies operating on a tight budget.
... and what's even better: A rock star programmer can even WRITE a library within a short time (usually hours or a few days) when no library exists or no existing library can be used.
I might describe myself as a near 'Rock Star' - or ex Rock Star type dev. I was about the best in the circles of people I met during training and early work, and when I was at uni I was maybe second or third or fourth out of about 200 people and constantly had people asking me for help. On the other hand I had also tried my hand at games development and it had been a dismal embarrassing failure. - I was both sides of that Rock Star equation - good and bad. Like others have said the coding of 'Rock Star' programmers can be very difficult for others to read or understand, and in my case as I got more proficient I found myself fighting the C++ language itself more and more and I did things that in hindsight could only be described as unbelievably dumb - and almost impossible for others to follow. Both sides contributed to that ego thing, the undermining and needing to prove yourself after failure side was just as powerful as the adulation and joy at creating things that worked side.
I was or probably could have been quite a good programmer or systems analyst if I had had different luck or different circumstances. But I fell into the classic 'Rock Star' hole and got hooked on my own super project which ultimately destroyed me. The project was Strong AI, consciousness driven machine intelligence, and on that 1 to 10 scale above it would be about a 20 - probably the ultimate pinnacle in the whole of programming. The thing could still succeed, and someday soon someone will succeed at it, but I got buried in my own labyrinth and got so deep that I ended up having a nervous breakdown and ending up in a mental hospital. After I recovered I found that ordinary computing had moved on and that I couldn't really program so well anymore, and have since shifted my skill set to new areas - though I still occasionally think about going full stream on restarting my Strong AI project.
( The (first) big problem with strong AI is that the final result promises something worth 100's of billions or trillions but it is totally speculative and always 10+ years away, plus getting there requires huge investment and risk, at least £10 million. Another problem is that the learning curve for working in Strong AI is almost vertical - and even if you can climb that mountain later returning to normal dev work afterwards is likely to be very difficult, so getting people to work on it is not exactly easy. Ultimately though the architecture requires a computer with an absolute OO encapsulation and self complete mathematics, and it requires a complete new design from the ground up - CPU, memory, interfacing, OS, HL language, and the AI itself. Not an easy task even today. )
The lesson is that the people at the top are delicate and fall to pieces, they can drift and become distracted by their own projects, and like anyone can burn out if pushed to hard. They are also often governed by hubris, and if that ego gets too well fed that's the end of everything.
Below the speed of light Special Relativity is one of the most accurate theories in physics - above the speed of light..
Noone wants, or needs, the divas.
I'm not sure what a rock star is, but it sounds like someone that sometimes does something brilliant, but behaves like a diva and it takes a whole team to clean up after them...
As for needing brilliant people - if the work is remotely on the edge, you can really use one or two brilliant people to guide everyone else along. Put them in software architects, mentor roles, in larger companies. If they can't guide anyone else, or explain what their thoughts are, they are not that useful.
The only exception would be pure hitman roles. Stuff needs to be fixed yesterday, the star fixes it in 10 minutes, and it's ok that it takes weeks to clean up because now the customer is happy and actual clean code can wait until the next release. (Still, all the better if those 10 minutes doesn't require any cleanup.)
I'm what people call a rockstar programmer, but I think the name is silly. I'm the opposite of a rockstar. I'm a skinny, nerdy guy who wears big glasses and am almost certainly Aspy. I work a lot because I like to solve problems, and I'm also really fast. People come to me a lot with problems, and I basically always solve them, and often I solve a whole lot more than what the person came to me with, stuff s/he didn't even know about but is happy to have solved after the fact. I try to be easy to get along with, but I'm not naturally good at interacting with people: I'm awkward and nervous around people. The biggest problem I have is getting hired in the first place, though it's possible next time my references will be so stellar that I'll get past the problem I always have with human resources and even management and devs (namely, that I'm very awkward and shy). Message to employers: there's nothing wrong with having some socially awkward people in your company. There's plenty for them to do behind the scenes, and it actually makes a really big difference to have a really fast, hardworking dev on your team. It's like a catalyst in a chemical reaction: everybody else works faster, too, because the problem-solver is there to get them unstuck.