Yes, 10 times better. That’s the difference between an average software programmer on an average software team and a rock star programmer on a rock star development team. The difference is huge, and I’ve been reminded of this lately.
How is this different? How is the rock star team 10x better? How is it 10x faster? How does the average slug along or even survive?
Simple.
The average software teams barely get by. The average teams are almost always in a reactive mode versus a proactive mode. Often average teams only get proactive if they build up a huge bureaucracy around themselves, which just allows them to be average. Average teams might call themselves Agile but don’t follow any of the ideals, let alone the processes that actually enable the PEOPLE to be rock stars.
Over the years I have seen more than a few teams of 5-10 people, sometimes more, only produce what a rock star could produce alone. 5-10 people, $500k to a $1m per year, versus about $100-120k. That’s 5-10x the cost. When I first read about this I thought it was silly, nonsense, and generally impossible for developers to be that disparate in abilities. I know now that I was wrong. Developers DO differ that much in abilities.
Joel Spolsky wrote about it (and NO, even though I’ve mentioned him a number of times recently, I don’t always agree with him) and he’s spot on. Hiring and keeping the top programmers is key to success. Hiring average developers will sink a startup, drag an established company under, and destroy even the most stable of companies.
I’m going to cover some key points that prevent having average developers and prevent an average team sinking the ship. These aren’t, “well maybe we’ll do these things”, these are “things that must happen, all or at least most of them, for the success and continued success of a company”. This list is aimed at external observations of teams I’ve seen at Amazon, Microsoft, Webtrends, and others. Some of these things are done so that the companies keep as large a part of their work force as rock stars as possible. This is what makes these companies successful.
Successful Companies…
Successful companies encourage and perpetuate continued learning. Not “I read a new technical book once a year”, I’m talking about rock stars that read a technical book or three per month (get a new one now @Amazon), try new languages whenever a new one crops up (re: Ruby, F#, Erlang, others…), encourage quite work areas, collaboration online, offline, and elsewhere, plenty of white boards and open workspaces, and even funds for out of company education with training courses or otherwise.
Successful companies involve themselves, specifically their technical people, with the social scene around their core technologies the company is built on. Amazon & Microsoft have this fairly easy, as they’ve built their own social scenes around their respective technology. Webtrends has even done so to some degree. Smaller companies should be involved in some of these large companies scenes. Attending conferences, training, or otherwise being involved with these companies is a great way to do just that. This builds morale for your rock stars and rock star teams.
Successful companies provide optimal work environments. Of course, work environments and what is optimal is up for debate. But generally one can determine if the company at least involves itself enough to try. Successful companies continually ask themselves things like; are developers more productive in offices or not, do some developers work better remotely or in office, are developers different any some work better in some environments and not others? Usually companies that ask these questions realize the later implication that developers are different from one developer to another. Successful companies have leadership that can determine this and work with the developers to make sure they stay productive, challenged, and happy in their positions.
Successful companies push what makes their technology, product, or ideas interesting and fun to work with. This may not be super easy for some companies, but even a trash pickup company has to have a cool back end system that uses the latest and greatest and might be migrating to the cloud or something. Something is cool or interesting about what the company does, and that cool and interesting tech should be known and shown as a key reason the company rocks and should have rock star teams and rock stars on that team.
These are the top things that make an awesome team help build a successful company. Do any others come to mind? Please leave an idea or two, or disagree, tell me why rock stars aren’t 10x as productive or why successful companies may not need to focus on great development teams! There’s always a devil’s advocate somewhere out there on the Interwebs, so light up the fire.
Hello,
I suppose it depends on what is meant by “rock star.” I’ve met a lot of technical people over the years, some programmers and some hardware IT, — and plenty of the ones that I might call “rock stars” were arrogant pricks with the social skills of a cougar. I’d be using “rock star” to refer to someone who has outstanding technical skill and problem-solving skill in his area of expertise. The programmer who could pound out an MVC web app for tomcat in jEdit without having to get out a book.
Typical is a guy that I met on a job site, who had Java Certs and related training up the wazoo; we were working on a project together and I incidentally showed him jMeter. The next day, I came to work to find he’d been up most of the night learning the tool and creating a load test and running it against our project. I liked him, actually; but talking with him was like talking to a baby. If you could get a word in, he would just go right past it. He just was clueless when it came to social interaction.
Perhaps, “rock star” is just unfortunate nomenclature. But if my years of following linux development on the developer mailing list is any indication, I’d have to say there’s a reason the most brilliant programmers aren’t working in a corporate environment. They just don’t know how to play nice.
Real success, I think, comes to a company or group that can create a winning team out of “average” programmers, because by definition the vast majority of programmers _are_ average. Remember that movie a few years back, about the first black basketball team in the NCAA, that went all the way to the championship game? They weren’t “rock star” players — they were a _team_, dedicated to a goal and inspired by their coach. I think what you need is a “rock star” manager, who can look at his team and find the strengths in each member and bring those out.
I’m average. No matter how many technologies I play with, I’ll never be a “rock star.” But, I am the go-to guy when you need something done. I’m the guy that will work 60 hours straight to meet a deadline, or do the grunt work for a project when nobody else wants to. In my personal life, I like to say, “Here I am, Lord. Send me,” as Isaiah did. But I’m that way at work, too.
BTW, if you haven’t read it, I recommend _Built to Last_ by Jim Collins. http://www.powells.com/biblio/1-9780060516406-0
Definitive on creating a successful company.
If you have a team that goes all the way to the championship, it is by definition no longer average. It is be definition what is a “rock star” team.
All I mean, btw, when I refer to a rock star or rock star team, is a team or individual who tries and steps a bit beyond to do a good job. Someone who likes what they do, and doesn’t sit on their laurels waiting for each day to run into them, and someone who has a firm enough grasp on communication to do it pretty well.
Everybody has something they’re a rock star at sometimes. It’s a benefit if one’s career is something they like to rock. 🙂
For the record, as I am by no means a developer, I have learned a Ron from both short conversations with Mr. Hall and in the weeds working with Mr. Powe.
Anyone call tell you are both rock-stars, not by what you know, but how you assure there will be an answer tomorrow morning if you don’t.
The story goes that when forming U2, all agreed Bono had an average voice, but, his charisma and ambition could take them far. They were so right. How is that for a rockstar example. 😉
As a producer, I have worked with many types and have put together stellar and not so stellar teams. In all cases it was more the attitude from within than the talent I was hiring for that made the difference.
While continued learning is crucial, I think now and days it is more up to the individual to have the desire to learn rather than depending upon the workplace. YouTube and amazon alone provide better experiences than many training solutions put together by organizations.
Great topic… Obviously it got me thinking!
Late to the party on this discussion. I couldn’t agree more. The WebTrends Warehouse QA team was a rock star team.
I don’t think the existent technical ability or knowledge of a given team member mattered half as much as their ability to learn. By the 2nd year of the project I felt pride that I was part of a team that could solve any problem. I sincerely believed if you presented a technical issue to the team we’d have it solved for you, regardless of how much we knew about the technology involved at the moment the issue was presented.
Anyway, just wanted to agree with both of you. Technical prowess (ability to learn) combined with social competence is what makes a “Rock Star” team IMO.