Tuesday, November 21, 2006

Angry monkeys and cargo-cults

A good friend of mine shared his experiences at the annual "No Fluff Just Stuff" conference. This event features presentations on the themes of Java and Open Source and is open for external participation. It spans several US states and in Raleigh is hosted at the SAS institute.

In his talk, Dave turned to the story of "cargo cults", the aboriginal religions grown in the South Pacific during WWII. The significance to software development was obvious even before Dave started to address it more directly on the topic of "cargo cult programming".

Dave also turned to the famous anecdote of "Angry Monkeys", where scientists supposedly started an experiment with five monkeys in an enclosed environment. One of the central elements in the environment was a banana-tree, which the monkeys immediately attempted to climb. Whenever a monkey attempted to climb the tree, the scientists hosed all of them with water until the offending monkey climbed down.

Over time, whenever a monkey attempted to climb up the tree again, even before the scientists reached for the water-hose, the other monkeys would readily beat the upwardly primate. After a few days, none of the monkeys attempted the banana-gathering stunt anymore.

Then the second part of the experiment starts: the scientists replaced, one at at time, the water-savvy monkeys with monkeys that had not been water-hosed before. The scientists replaced a watter-savvy monkey as soon as the new monkey ceased his attempts for banana sprints through the reassuring beating of the other monkeys.

In the end, once all the original monkeys were replaced, none of the new monkeys would attempt to reach for the bananas anymore, even though they had never been interrupted by a stream of water while trying to do so. They only knew that they should beat any monkey who attempted, no questions asked.

Now, I don't know about you, but how many of the original people that worked on your project are still around?

Dave's points in his speech were about how software developers will learn to accept self-evident truths and not attempt something new or beneficial because something has not worked before. The conditions in our industry change so quickly and technologies may have reached the absent maturity that made them fail in the past.