Thursday, March 25, 2004

Iteration in solving complex problems

Some thoughts on solving complex problems ...

One of the things that characterizes a complex system (system that appears complex to human beings) is our relative inability to predict its behavior, or the result of changes to the system. See Dietrich Dorner's "Logic of Failure" for a good example of the analysis of complex systems and their modes of failure. Dorner's examples have human beings tested in rule-based simulations of complex systems. Presumably, being rule-based, these systems are at least as predictable as real world complex systems, but Dorner's results reflect our inability to predict the cascade of secondary effects of our changes to the systems.

To me, an important implication of this result is that problem solving of complex systems usually has to be iterative, so that we can make changes and observe the results of our changes. Attempts to engineer a solution by making radical changes to a complex system all at once are likely to fail because of the secondary effects of our changes, the ways they interact, and our general failure to envision these secondary effects and interactions. The important lesson is not simply that we have to be careful about predicting these effects and interactions, but that it may be beyond our ability to do so in many kinds of complex systems, or at least so error prone as to be impractical. This has important implications for making changes to existing complex systems as well as creating new ones in a given environment.