"If you were launching a technology or developing a product, would you rather have five great engineers rather than 1,000 average engineers?"
The 5, in a heart-beat. If you were painting a mural on the ceiling of a large structure that you want to be admired for generations to come- do you hire 5 brilliant painters or 1000 average painters? Even happily ignoring the exponential communication overhead that diminishes returns significantly as he does in the original article, there are leaps of imagination that a small brilliant team are more likely to make than any-sized average team.
Edit: Also, his case examples are not coding related. Obviously a non-software-technologist not knowing or understanding the unique background behind the comments in the context of software development and, particularly, software startups. 100x productivity is of course a generalization and has received valid criticism, but examples from sports and trading are irrelevant.
"Also, his case examples are not coding related. "
Nor are they even correct. In fact they can easily be made to prove the opposite of what he claims.
Only someone completely ignorant of soccer/football would claim that this year's FC Barcelona lineup is one of the greatest ever because of their team-based approach - their best player is Lionel Messi, who at 23 is already being considered as one of the greatest players to ever play the game, right up there with Pele, Maradona, etc. He's so much better than not just the average, but even the closest competitor in the Spanish league. Cristiano Ronaldo leads in statistical categories like most goals scored but it's from beating up on weaker teams and he routinely chokes in big games, whereas Messi plays even better, like when he dribbled past half of the Real Madrid team in the Champions League semifinal to score the winning goal. You could've benched Ronaldo and it wouldn't have mattered - benching Messi would've dragged the match back down to more equal terms.
I don't want to transform HN into a sports-related forum, but since The Economist has also written on the subject, I guess I can give it my 2cents...
> Lionel Messi, who at 23 is already being considered as one of the greatest players to ever play the game, right up there with Pele, Maradona, etc
He can dribble, all right, but I'm not the only one who isn't regarding him as "an all time best", simply because he hasn't help his country winning a World Cup final (or even helping it to get there). At 17 Pele was winning the World Cup in Sweden, while Maradona almost single-handedly won the Mexico '86 World Cup for Argentina and helped them reach the final again, 4 years later (not to mention winning the scudetto with Napoli, against possibly the best club-team of all times, Van Basten's AC Milan).
And remember that Barcelona's lineup also includes Andres Iniesta, the man who scored the only goal against the Netherlands in last year's World Cup final, Xavi, Spain's bets man when they won the Euro 2008 Final Tournament, Pedro, David Villa, Alves (one of the best players on his position) ans so on and so on.
I agree that we shouldn't turn this into a sports flame thread, so let's just compromise and say that it's a team-based sport and that individual talent matters, not one or the other (unlike the OP). After all, the same argument about supporting players could be made for Pele and Maradona as well.
I couldn't agree more that his sports analogy is WAY off base. These athletes are all at the top of the top of the top of the top of the world in their sport. And they are getting paid millions. That model runs COMPLETELY against everything he is trying to prove.
However, to what order of magnitude you want to take the discussion can be looked at, 1,000 youth hockey players vs. 5 pros on the ice would be kinda hard to sort though....
As for his investment firm example, I think the who you know, and your firms institutional knowledge play a larger part in that game. So much so that it's not a valid analogy.
I disagree. I don't think there's a technology company in the world that can identify talent reliably enough to make the argument that they can find a team of 5 who will outperform 1,000. Even if the 1,000 people are average.
Painting is largely a solo occupation, and you can reliably judge the talent of a painter by looking at their past work. But it's basically impossible to judge the talent of a software engineer by looking at their past code -- there's too much context required. I think the sports analogy is better in this respect, because it's much harder to separate the the record of a sports superstar from the team that they're on. So it is with non-trivial software.
And also: five "brilliant" painters might be so socially dysfunctional as a team that you'd rather take the 1,000 average guys who can take direction well. You wouldn't automatically get a great work of art if you told Van Gogh, Matisse, Monet, Munch and Seurat to collaborate on a mural -- but you see all sorts of great murals that were painted by teams of less-talented artists.
In the early stages of a company, where you need creative thinking, new ideas, rapid iteration, and are building the technical foundations of the company, you need the 5 brilliant engineers, and wouldn't have anything to do with the 1,000.
In the later stages of the company, when you have 500 enterprise customers creating support requests and you have internal payroll systems etc., then you need the 1000 engineers.
And in technology, if you don't have the 5 at all times, you're on borrowed time. Look at what Steve Jobs, Jonny Ive, and pals did to Nokia.
> But it's basically impossible to judge the talent of a software engineer by looking at their past code -- there's too much context required.
I'm not really sure how this is true. I find that I can judge a software engineer very accurately based on his previous work, and intuit from the code a great deal of the context.
In fact, if I can't determine an engineer's talent without having more context, they are likely an average to below average engineer.
> I think the sports analogy is better in this respect, because it's much harder to separate the the record of a sports superstar from the team that they're on. So it is with non-trivial software.
I think what you're actually doing here is elucidating the difference between a 'superstar' and a 'team of average'. A senior high-quality engineer will have a considerable amount of new code that they've architected and implemented, whereas a team of average will have a considerable amount of code they have maintained.
Like most software organizations, our projects are divvied up into components and subcomponents, and individual engineers own components/subcomponents individually, with conformance to a broader set of development standards. The more junior an engineer, the more likely that they'll be assigned maintenance or improvement work rather than writing a component from scratch.
It would be very easy to evaluate the senior engineers by evaluating their components, whereas the junior and/or average engineers can only really be evaluated in context by the senior ones.
"I'm not really sure how this is true. I find that I can judge a software engineer very accurately based on his previous work, and intuit from the code a great deal of the context."
To each their own, I suppose. Applicant-submitted code samples don't correlate strongly with hiring decisions, in my experience. They're too easy to fake, and don't capture the things you want to know about interpersonal communication, thinking style, etc.
Crass Generalization: I think people who strongly emphasize code samples over everything else are sacrificing a chicken to the hiring gods. It smells very cargo-cult.
"It would be very easy to evaluate the senior engineers by evaluating their components, whereas the junior and/or average engineers can only really be evaluated in context by the senior ones."
Nah, it's always really hard. Some senior engineers don't write a lot of code, but are superb at managing and mentoring teams. Others hole-up in their geek caves, churn out code of varying quality, but are dismal leaders.
My point is: once you've got more than a few people, team dynamics matter at least as much as "rock-star" coding ability (probably more), and you can't tell anything about this from code samples.
> To each their own, I suppose. Applicant-submitted code samples don't correlate strongly with hiring decisions, in my experience.
We evaluate their open source code or paid challenge project, not applicant-submitted code samples of unknown origin.
> They're too easy to fake, and don't capture the things you want to know about interpersonal communication, thinking style, etc.
All of those skills are important, but they're moot if an engineering applicant can't actually code.
> Nah, it's always really hard. Some senior engineers don't write a lot of code, but are superb at managing and mentoring teams. Others hole-up in their geek caves, churn out code of varying quality, but are dismal leaders.
You're conflating quite a few areas of responsibility here. Some people are good leaders, but leadership is also where poor engineers will run to if they can't actually code -- this is not something you want to occur in your organization unless they actually belong in management, and even then, you risk those individuals pushing for poor engineering decisions from a position of authority.
If a senior engineer isn't actually designing and writing software, they're not an engineer anymore, and should be evaluated by a distinct criteria. If you require non-coding engineers to provide a small engineering team with direction, then you likely either have an overly junior team, or too many directionless/mediocre engineers.
> My point is: once you've got more than a few people, team dynamics matter at least as much as "rock-star" coding ability (probably more), and you can't tell anything about this from code samples.
Nobody (least of all me) ever used the term "rockstar". There is simply an enormous difference between the efficiency and code quality of great engineers as compared to mediocre ones.
Most of what you're saying sounds like the standard bandaid approaches to big-enterprise engineering management with mediocre teams.
Applicant-submitted code samples don't correlate strongly with hiring decisions, in my experience. They're too easy to fake, and don't capture the things you want to know about interpersonal communication, thinking style, etc.
Yes, by themselves they're not much good, but if you explicitly ask for a recent piece of code that they're proud of, you can ask them questions about it: "Why did you use data structure X?", or "How does function Y work?" Much, much harder to fake.
The key untested question then, I think, is whether you can successfully identify the 5 vs 1000 when recruiting. I think it would be pretty easy to show that there exist teams of 5 that outperform teams of 1,000 (certainly teams of 20 outperforming teams of 4,000). (be grateful you haven't had to work for any of the latter)
A secondary open question would be whether an existing team of 5 who currently outperform some larger number tend to continually outperform them after being acquired. I would bet that the performance gap would be close to the same. At the very least I would suggest that the cases from other industries give us next to no insight for software development.
"I think, is whether you can successfully identify the 5 vs 1000 when recruiting."
Hm...I think the question is, can you do it reliably? Anyone can get lucky once, but we're talking about acquihires for tens of millions of dollars. You've gotta have a pretty high degree of confidence in your decision to shell out that kind of cash for the promise of the future productivity of a team.
"A secondary open question would be whether an existing team of 5 who currently outperform some larger number tend to continually outperform them after being acquired."
If the research cited in the article is to be believed, most super-stars cease being super-stars after acquisition. Maybe the odds get better for teams, but it sure seems like a lot of brilliant product teams get acquired by big companies (even "good" companies, like Google), never to be heard from again.
This line of reasoning has always sounded like Valley Conventional Wisdom to me. Take a small, high-performing team and stuff it into a big bureaucracy, and the culture of the bureaucracy is going to win.
5 great vs 1,000 average, it depends on the technology and the application they are working on, and the stage of the product.
First, the logic in the original article is not valid. Sports and software engineering are basically incomparable. What they share as team activities don't justify the reasoning in the article. A simple counter example. In professional soccer games (like in the top leagues in Italy, Spain, Egnland, etc.), a second-tier team of ll players could quite possibly beat a top-tier team of only 9 players (the other two players are kicked out for whatever reasons). In software engineering, it is quite safe to say that 5 great engineers can outperform 30 average engineers.
Back to my original point, it depends on the technology and the application they are working on. If the technology and the application require high creativity and innovation, 1000 average engineers cann't lead it long. Most probably, it will lead to a mess that has to be cleaned up and rewritten later. On the other hand, if the application is already well designed and well-established, and the primary jobs are to add new features within the architecture, 1000 average engineers may deliver more than 5 great ones.
In reality, a good combination of both types might be the best scenario.
I would take the 1,000 and come up with 199 other projects, five of which would be oversight of the other 194, and two of them would be to come up with crazy new ideas. Monitor the progress and I guarantee I can find another 5 brilliant programmers in there. Meanwhile, I'll iterate over 1000 projects and blow your socks off with 5.
No, what I'm saying is I have a bit more faith in humanity. How extraordinarily pessimistic to think people couldn't be more productive in other circumstances. It does tend to fly in the face of anyone who ever moved to California.
Agree with you, but he has a point about the "talent acquisition" hires. They do tend to underperform when acquired (perhaps they feel 'accomplished' + there 's no pressure since they no longer work on a startup). Can someone name a few developers who did better after they were 'acqhired'?
The 5, in a heart-beat. If you were painting a mural on the ceiling of a large structure that you want to be admired for generations to come- do you hire 5 brilliant painters or 1000 average painters? Even happily ignoring the exponential communication overhead that diminishes returns significantly as he does in the original article, there are leaps of imagination that a small brilliant team are more likely to make than any-sized average team.
Edit: Also, his case examples are not coding related. Obviously a non-software-technologist not knowing or understanding the unique background behind the comments in the context of software development and, particularly, software startups. 100x productivity is of course a generalization and has received valid criticism, but examples from sports and trading are irrelevant.