Arbitrary Design
October 15th, 2008[ Software Development ]
In architecture, there’s often discussions about so-called simple cultures and how they are better, or worse, at designing and constructing dwellings that fit with their environment. Christopher Alexander differentiates the cultures as selfconscious and unselfconscious. His distinction being about how skills are taught:
“At one extreme (unselfconscious) we have a kind of teaching that relies on the novice’s very gradual exposure to the craft in question, on his ability to imitate by practice, on his response to sanctions, penalties, and reinforcing smiles and frowns. The great example of this kind of learning is the child’s learning of elementary skills, like bicycle riding….The most important feature of this kind of learning is that the rules are not made explicit, but are, as it were, revealed through the correction of mistakes.”
Obviously we North Americans are a selfconscious culture by this definition. We make the rules explicit, novices learn more rapidly by following general principles and education becomes a formal one. So my question? Applying this thought process to product development, are you building a selfconscious or unselfconscious team and process? Think about your answer before you read on, or better yet, comment below.
Here’s some more from Christopher, “Roughly speaking, I shall argue that the unselfconscious process has a structure that makes it homeostatic (self-organizing), and that it therefore consistently produces well-fitting forms, even in the face of change. And I shall argue that in the selfconscious culture the homeostatic structure of the process is broken down, so that the production of forms which fail to fit their contexts is not only possible, but likely.”
In other words, a selfconscious team is not only less capable of adjusting to external change, they are in fact likely to fail. Or so Christopher says. He also talks a lot about these complex systems and how they necessarily breakdown into loosely coupled subsystems in the unselfconscious culture.
“No complex adaptive system will succeed in adapting in a reasonable amount of time unless the adaptation can proceed subsystem by subsystem, each subsystem relatively independent of the others.”
“It is the inner nature of the process that counts. The vital point that underlies the following discussion is that the form-builders in unselfconscious cultures respond to small changes in a way that allows the subsystems of the misfit system to work independently — but that because the selfconscious response to change cannot take place subsystem by subsystem, its forms are arbitrary.”
He may have lost me but I think he’s going to argue that design in a selfconscious culture, or team, is nothing more than arbitrary. That being “a term given to choices and actions which are considered to be done not by means of any underlying principle or logic, but by whim or some decidedly illogical formula.”
So let’s ask that again, are you arbitrarily designing your software?