Tuesday 9 May 2006

Un-Natural Selection

Or, "be careful what you wish for". From GreyThumbBlog :
One of my favorite papers in evolutionary biology, which I have mentioned here before, is this:

Muir, W.M., and D.L. Liggett, 1995a. Group selection for adaptation to multiple-hen cages: selection program and responses. Poultry Sci. 74: s1:101

It outlines the group selection effects observed when trying to breed chickens for increased egg production in multiple-hen cage environments. In short, selecting individual chickens for increased productivity in a group environment didn't select for increased productivity. Instead, it selected for mean chickens. The result was an overall reduction in productivity. Only by selecting at the group level was productivity increased.
Apparently one of the Enron CEOs was a big fan of Richard Dawkins' book The Selfish Gene. He took Dawkins' (in my opinion) overly reductionistic view of evolution and proceeded to even further reduce it in his own mind to social Darwinism of the knuckle-dragging "survival of the fittest" (grunt, grunt) variety. Enron's HR policy included an iterative performance evaluation and firing step reminiscient of a reality TV show like Survivor or The Weakest Link. Basically, they would evaluate the traders and most other employees based on performance metrics and then fire the lowest 10-15% of the company population.

Think chickens and trading floors folks. Enron was a trading, brokering, and investment company. (Go ahead, shudder some more.)

Everyone knows that there are many things you can do in any corporate environment to give the appearance and impression of being productive. Enron's corporate environment was particularly conductive to this: it's principal business was energy trading, and it had large densely populated trading floors peopled by high-powered traders that would sit and play the markets all day. There were, I'm sure, many things that a trader could do to up his performance numbers, either by cheating or by gaming the system. This gaming of the system probably included gaming his fellow traders, many of whom were close enough to rub elbows with.

So Enron was applying selection at the individual level according to metrics like individual trading performance to a group system whose performance was, like the henhouses, an emergent property of group dynamics as well as a result of individual fitness. The result was more or less the same. Instead of increasing overall productivity, they got mean chickens and actual productivity declined. They were selecting for traits like aggressiveness, sociopathic tendencies, and dishonesty.

After a couple rounds of this selection experiment, these mean chickens could be heard on recorded intra-office phone communications laughing about "those poor grandmothers" they were ripping off via market scams. They changed the company motto internally from "Enron: Ask Why?" to "Enron: Ask Why, Asshole."

Of course, everyone knows the rest of the story. While these mean chickens weren't terribly productive (the company was losing money hand over fist), they managed to peck their trading consoles so as to give the impression of increasing productivity. This worked, for a while. Then this whole monument to Darwinian fundamentalism collapsed rather spectacularly.

I propose that the most significant root cause of Enron's collapse was this HR policy. Maybe CEOs everywhere should read more about poultry science?
What's good for the species may not be good for the individual: and vice-versa.

This illustrates a general law, one applicable to software engineering too. Be careful what metrics you use, because if you're not careful, you too will produce "mean chickens", code bloat, and unreliable systems. Measure productivity in Lines of Code/day, and what happens when some bright guy or gal finds out a better, cheaper, faster way of doing things in half the code lines? What happens with the Deadwood who churns out page after page of inefficient spaghetti? Measure in Function Points, and a suboptimal analysis can lead to astounding productivity, mighty labours to bring out a steaming pile of used food of no use to anyone. Any adequate programmer can produce a complex solution to a complex problem ; a great programmer can produce a simple solution to a complex problem ; but the majority of software written now is by incompetents who write complex solutions to simple problems.

There are 2 orders of magnitude difference in programming ability, based on utility of systems created vs effort expended. And it's not a Bell-shaped distribution, it's dominated by the under-achievers. Many of whom are better than the "worker bees" at office politics, so get recognition, while the others just switch jobs in disgust.

In software engineering, as in all human activities, we must be careful we're not just breeding "mean chickens".

No comments: