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.
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...
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/
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.
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.
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.
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
FACT: A good team of average people, working together, will accomplish more than a single person over the course of two months.
This is categorically false. Individual output of programmers vary by an order of magnitude (10x source). Literally one guy can be worth ten others. And this is why the "do you really need rockstars" is always a yes. Even if you are not trying to solve hard problems you can either hire 10x guys @ 50k a year or one guy at 150k a year. You make the choice.
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.
I dunno, I think the guys in the band without a rockstar make a lot less money.
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.
"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."
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.
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.
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.
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.
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)
everyone knwo what they mean:
Guru,(80s)
Then prima donna,(early 90s)
Then [insert made up name] (97-2000)
Then unemployed. (2001-2005)
now it's rockstar.
Next week it will be 'earwig' or some other nonsense.
Completed that for you.
If you think I voted for Trump because of this post, you're wrong. I voted for Dr. Jill Stein of the Green Party. Again.
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
Forget "rockstars", I'm more interested in a working definition of a "numbnut" now. What is the definition of a programming numbnut that manages to be marginally retainable/employable?
Here's to hot beer, cold women, and Glaswegian kisses for all.
Oh, you mean what some companies call Distinguished Fellows. Ya, keep them away from the code. The early founders of the company or code base often create a lot of crap, and they may think they still have the skills but the code has changed so much since they were there that they will break it when they try. Ie, the new employee says "why are our coding standings so wierd?" and you answer "The Stig's programming cousin wrote that, he's now in charge of special projects and has lunch of the CEO regularly, so we can't change it without offending him."
Worse is when those guys are in a high level meeting and say "that feature will be trivial to add" and then wonder why everyone in development is such a moron because it's taking months for them to complete 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
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.
.. 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 ?