Monday, 28 August, 2006

You gotta have a Daddy

Did you ever wonder why some seemingly simple projects fail and others--often much more complicated--succeed?  It doesn't matter whether it's open source or traditional development, or if the development team is filled with highly experienced programmers or primarily with beginners.  I've seen big projects completed on time and under budget, and small projects drag on indefinitely.  What's the difference?  Adult supervision.

Seriously, programmers in general are terrible at time management.  We like to work on cool stuff.  Without somebody pushing us, we tend to work on a problem until we've figured it out and then move on to the next interesting problem.  That's fun!  Turning something we've figured out into a finished, debugged, tested, and documented unit is hard work and not terribly exciting.  Sure, we like to ship stuff but, like most people, we don't want to do the not-fun stuff.

The "cool stuff" disease also causes programmers to add frivolous features like skins to programs before adding the real functionality that makes the program useful and attracts customers.  I can't count the number of applications that have really cool UI features with customizable everything, but don't do the basic job they're designed for.  Again, the programmers worked on what they wanted to work on rather than concentrating on and completing the important parts of the project.

The job of the project manager is to keep the programmers focused on the final goal--shipping a complete, functional application on time and within budget.  Somebody has to be the Daddy.

The uninformed theory of open source software is that the development teams are this loosely-organized group of individuals who magically work together and do everything by consensus.  That's far from the truth.  I've notedbefore that almost all successful open source projects are controlled by a small group of "core" developers--often just one person--who reviews all issues and issues an edict if the group can't reach a decision.  This is often referred to as the Benevolent Dictator model.

Software development projects aren't the only places where you need a Daddy.  Wikipedia works because there is a social infrastructure that places a trusted person in charge of each topic.  That person doesn't have to rule with a heavy hand, but he does need to make decisions about the content and style of an entry.  Can you imagine the chaos if just anybody was allowed to make changes to a topic with impunity?

Any collaborative effort requires a Daddy.  Somebody has to be in charge.  Without a leader, the effort will fizzle and die, or explode spectacularly into flame wars and hard feelings.  Sure, some people won't like the tight control, but that's okay.  Nobody's irreplacable, and those who can't work under the rules of the game aren't worth trying to bend the rules for.