Saturday, December 19, 2020

My Comments on “Hitting the High Notes”

2005-09-26 16:36:45

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.

 



from Hacker News https://ift.tt/3p716d8

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.