|
Monday, September 26, 2005
My comments on "Hitting the High Notes"
Two months ago, Joel Spolsky published an essay entitled Hitting the High
Notes in which he uses the metaphor of vocalists to explain something about
software developers. In a nutshell, I would paraphrase his article like this:
Great software products don't
happen without the very best software developers, just as certain musical
performances simply don't happen unless the performers have someone who can hit
the high notes. These "peaks" in performance are the result of certain
individuals with extraordinary talent, and there is no substitute. You can't
reach these peaks through the sum of talent levels. Your opera score says the
tenor needs to be able to hit a high B. Adding baritones won't help increase
the vocal range. It just makes the group louder. Similarly, adding mediocre
programmers doesn't increase the talent range to the point where they can
create something insanely great.
I really like this metaphor, but it's a two-sided coin. High
notes are amazing, but harmony is powerful. I am not disagreeing with Joel's
metaphor. Rather, I like his metaphor so much that I want to finish it. Joel
spoke of individual talent in terms of a soloist. I want to speak of team
talent in terms of a choir.
A serious choir
Mention of the word "choir" can conjure up lots of different
images. Perhaps the first thing that popped into your mind was your child's second
grade holiday program. Those events are special memories and the reason why we
buy camcorders, but that's not really what I'm talking about.
Maybe when you think of a choir you think of your church
choir which does a special song on the fifth Sunday and where the average age
of the women in the alto section is 92. I think it's great that churches
create opportunities for people to sing, but that's not really what I'm talking
about.
I'm talking about a serious choir, which is a choir that
could be described like this:
- All of the choir members had to audition to get in, and
lots of people didn't make the cut.
- The director is formally trained.
- All of the voices start and stop at exactly the same
instant.
- When the choir is singing softly, there is no less
intensity than when they are singing loudly.
- When they perform What
Child is This? at their holiday concert, nobody takes a breath
in the middle of a line. (In the proper singing of that piece, the
singers are allowed to breathe four times per stanza, not eight.)
- The people in the audience are not wearing jeans.
If you have never heard a truly excellent choir, I highly
recommend that you invest the time. Most universities have at least one
serious choir. Go listen to their next concert. The experience can be very
moving. You might be amazed.
Anyway, back to the point. Like I said, Joel's metaphor is
a two sided coin:
- The "high notes" side of this coin speaks of what you cannot
obtain through addition. You cannot get the range of a soprano by adding
several altos. A really outstanding programmer is ten times better than
an average one, but you can't get the same results by hiring ten average
programmers.
- The "choir" side of this coin speaks of what you cannot
obtain without addition. The most talented vocalist can't sing a chord.
In music, there are things only a choir can do. In software, there are
things only a team can do.
The most obvious thing here is simply the benefit of size.
Even Fred Brooks would
agree that there is usually a positive correlation between team size and its
production capacity. Suppose you have two teams, one with 50 people and one
with just a single person working alone. Hand each team the spec to develop a new
CAD system. No matter how many high notes the lonely coder can reach, I don't
think he's going to finish first.
A plurality of programmers offers other benefits as well.
Things like pair programming,
brainstorming, and code reviews all make sense only in the context of a team.
Okay -- enough stating the obvious. We all agree on the
value of good teams.
The needs of the many outweigh the needs of the few...
For a soloist, hitting the high notes is an essential
skill. In a choir, the essential skill is the ability to blend. Some of the
most gifted soloists just don't have the stuff it takes to fit in a really
great choir.
Sometimes, they can't blend. Their voice is the
problem. A really distinctive voice is an asset to a soloist but is a
disadvantage in a choir. They can't blend because that's just the way their
voice is.
More commonly, they won't blend. Participation in a
serious choir requires a generosity that simply is not present in everyone.
Choir members don't get individual accolades or fame. Soloists do.
It happens in music, in sports and in software development.
The super-talented people are often the very same people who have trouble
blending into a team. Serious choirs (or software teams) are successful when
they are built with people who genuinely want success for the concert (or the
product) more than they want success for themselves.
So are you saying we should forget about the high notes?
Certainly not. I am not suggesting that you hire "mediocre
programmers". By all means, continue to look for people who can hit the high
notes. But I daresay Joel would agree that any team built exclusively with that
criterion is likely to develop other problems. Be it a choir or a team, you
want every member to be at the highest possible talent level. But the people
on your team have to be willing and able to blend.
Two kinds of talent
So Joel is right: Creative technical genius (the ability to
hit the high notes) is a critical ingredient when building insanely great
products. But it's not the only one.
In every choir I have seen, there are certain vocalists which
surface as leaders. Their leadership is visible only to the other members of
the choir, never to the audience. As an example, let's consider Jane, a
soprano who sings in the third row of the Fog Creek choir. During rehearsals,
Jane sings her part confidently and with full voice, because she is highly
talented and has the ability to "sight read" the musical score. The sopranos
near Jane are probably talented as well, but to at least some degree, their
confidence is being increased by listening to Jane.
At concert time, the audience can't tell that Jane is any
different from the rest. She isn't hitting notes any higher than the other
sopranos. She is blending, just as she should be.
Is Jane one of those vocalists who can hit the high notes?
Probably. Maybe not. Either way, she is applying a talent which is just as
valuable in the context of a choir: She makes everyone around her better.
The same effect is visible in software. Great developers don't just
make the product better -- they make everybody around them better.
So when hiring developers, always ask both questions:
- The "high notes" question:
How much talent does this developer have to help make our product great?
- The "choir" question:
How much talent does this developer have to help make our team great?
If you only ask the choir question, you might end up with a group
of highly cooperative people who work very well together as a team. But they never
create anything worthy of buzz. Instead of high notes, they produce a peaceful
chord as they build boring products that nobody wants.
If you only ask the high notes question, you might end up
with a group of highly talented people who will reach great peaks as
individuals. But they never really work together. Instead of harmony,
they produce noise as they build poorly integrated products that draw attention
but not users.
|