Thursday, May 21, 2009

Requirements are a finite set of rules.

[A]ny finite set of rules is going to be a very incomplete approximation of reality.

— Douglas Lenat (Stanford University)
In the above quote, substitute "requirements" for "rules." Requirements are necessary to bound the problem, but insufficient to fully define reality. This is a major reason why "Big Design Up Front" (BDUF) has an unblemished history of failure.

The quote comes from a very interesting story in the New Yorker, partially quoted below, and a whitepaper with more details.

In 1981, a computer scientist from Stanford University named Doug Lenat entered the Traveller Trillion Credit Squadron tournament, in San Mateo, California. It was a war game. The contestants had been given several volumes of rules, well beforehand, and had been asked to design their own fleet of warships with a mythical budget of a trillion dollars.
:
:
Lenat had developed an artificial-intelligence program that he called Eurisko, and he decided to feed his program the rules of the tournament. Lenat did not give Eurisko any advice or steer the program in any particular strategic direction. He was not a war-gamer. He simply let Eurisko figure things out for itself. For about a month, for ten hours every night on a hundred computers at Xerox PARC, in Palo Alto, Eurisko ground away at the problem, until it came out with an answer. Most teams fielded some version of a traditional naval fleet — an array of ships of various sizes, each well defended against enemy attack. Eurisko thought differently. "The program came up with a strategy of spending the trillion on an astronomical number of small ships like P.T. boats, with powerful weapons but absolutely no defense and no mobility," Lenat said. "They just sat there. Basically, if they were hit once they would sink. And what happened is that the enemy would take its shots, and every one of those shots would sink our ships. But it didn’t matter, because we had so many." Lenat won the tournament in a runaway.
:
:
"Eurisko was exposing the fact that any finite set of rules is going to be a very incomplete approximation of reality," Lenat explained. "What the other entrants were doing was filling in the holes in the rules with real-world, realistic answers. But Eurisko didn’t have that kind of preconception, partly because it didn’t know enough about the world."

BDUF, "IBM Master Programmer", and naive outsourcing strategies are "Eurisko programming." ... the resulting program may meet the literal requirements, but is not going to be very satisfactory.