Oscar Rambla wrote: > In his theory affirms that simple organisms are more symmetric than > complex organisms. Complex organisms maintains symmetry in what is > necessary for movement, attraction or other conditionants while tend > to become > more assymmetric in other aspects to improve its effectiveness. > > When programming (esp. when programming in an 'organic' manner, without reams of specifications that have been hammered out by someone else), we tend to look for the essence of the system we're trying to build, and focus on that in our code. We're looking for simplicity -- the "do one thing, and do it well" motivation that is so apparent, for example, in the standard Unix command line tools. Pure systems must adapt to meet human needs, however, and must fit the problem at hand, not hold tightly to abstract concepts like simplicity, purity, even efficiency. And since people are asymmetric by nature (!), perhaps it follows that systems with which people interact must be antrhopomorphized, and must grow irregular bumps, extra handles and dark corners. I'm reminded of an excellent essay, "Disappearing into the Code", excerpted from Ellen Ullman's book, "Close to the Machine": *The project begins* in the programmer's mind with the beauty of a crystal. I remember the feel of a system at the early stages of programming, when the knowledge I am to represent in code seems lovely in its structuredness. For a time, the world is a calm, mathematical place. Human and machine seem attuned to a cut-diamond-like state of grace.... Then something happens. As the months of coding go on, the irregularities of human thinking start to emerge. You write some code, and suddenly there are dark, unspecified areas. All the pages of careful design documents, and still, between the sentences, something is missing. Human thinking can skip over a great deal, leap over small misunderstandings, can contain ifs and buts in untroubled corners of the mind. But the machine has no corners.... In the painstaking working out of the specification, line by code line, the programmer confronts an awful, inevitable truth: the ways of human and machine understanding are disjunct. ....A long list of exceptional situations is revealed, things that occur very rarely but that occur all the same. Should these be programmed? Yes, of course. How else will the system do the work human beings need to accomplish? Details and exceptions accumulate. Soon the beautiful crystal must be recut. This lovely edge and that are lost. What began in a state of grace soon reveals itself to be a jumble. The human mind, as it turns out, is messy. http://archive.salon.com/21st/feature/1997/10/cov_09ullman2.html Thanks, Oscar, for starting my Friday on a lateral note -- an enjoyable diversion. :-) -- Graham