Tuesday, July 3, 2007

Failure by Committee

I'm reading Dreaming in Code and it's occurring to me at least one of the reasons that Chandler failed.  Chandler, if you don't know, is the Personal Information Manager application that is the subject of the book.  In my mind, Chandler failed because they didn't know how to make decisions.  Mitch Kapor tried to run the team in a democratic way.  Everything was decided by committee.  In my mind, he ran it so democratically that it had insufficient leadership.  For all decisions the book reads as if the team tried to create consensus.  Sometimes it is better to just pick a direction and ask people to follow.

This is basically why Andy Hertzfeld left the team.  He said, "To make a great program, there's got to be at least one person at the center who is breathing life into it.  In a ferocious way.  And that was lacking."  Think about Steve Jobs' role on the Macintosh team.  He drove the project forward.  He generated consensus by leading, not by hoping it would magically materialize just because a group of people was talking.  Instead, Kapor gets the group in a room, lets them discuss for a while, and then leave without really coming to a conclusion.  Decisions, once made, were often second-guessed by the next group of people as they tried to re-establish a new consensus.

An example is the design for the backing store.  There was an argument about whether to use ZODB or a traditional database or a resource description framework based on the concept of triples.  Any of them would probably have worked to one degree or another.  Yet, instead of picking one and going with it, they spent literally two years making that decision (Spring 2001 to June 2003 as I read it).  In the mean time, every other part of the project could only make marginal progress because everything relied on this underlying piece.

Joel Spolsky said he thought the program failed because it didn't have a central vision.  I think I'm saying something similar but from a different angle.  A solid vision is a decision.  By itself, it isn't enough, but it's necessary to start.  Chandler didn't have that vision.  It wasn't to be "revolutionary" but what does that look like?  No one defined revolutionary.  That meant that the project kept changing.  One of the early ideas was an address book but when Andy Hertzfeld left, the idea had been virtually dropped.  This despite the fact that he's written one.

What should we take away from this?  A successful project must know how to make decisions.  To do that, it helps to have a vision.  Vision doesn't magically materialize from a group talking together.  Instead, it is driven by one individual or perhaps a handful of individuals.  Those individuals don't have to dictate the vision.  Instead, they can cultivate it.  Cultivating requires encouraging those things that support the visions and helping to weed out those that don't.  Without direction, a group of people is like a garden without anyone to weed it.  The good ideas will be overrun by the bad and in the end it won't be very productive.

Talking is best when the outcome is a decision.  A decision is most likely if there is a shared criteria by which to judge outcomes.  The vision can be that criteria.  Without some bar to hold decisions against, they can always be second-guessed.  "Is this repository good enough for the project?  We don't know, but this one over here is better for some things."

1 comment: