Introduction

It is the spring of 2024, and I am facing a perplexing problem.

I am trying to figure out how my view of human/software systems as information flows among centers can be reconciled with Christopher Alexander’s view of the built environment as a living whole made of smaller living wholes (centers). This is a crucial question that I’m hoping to address in the introductory chapters of Process to Processes.

In my view, a “center” is like a little machine that transmits information. Every part of a human/software system, from entire departments of a software company, to teams, to people, to apps, to pixels on a screen and neurons in your brain, is a center. Every center is built from other centers, recursively, all the way down to the level of atoms (in physical systems) or bits (in software). The purpose of every center in the system is to communicate information: to get information to where it’s needed, when it’s needed, and thus create the value that sustains the center’s existence. The purpose of software development is to arrange and shape centers to make them, and the whole system, better at information transfer.

Practical living structure: centers working together in a steam locomotive. "Steam Locomotive, St Jacobs, Ontario" by Bobcatnorth is licensed under CC BY-NC-SA 2.0.

In Alexander’s view, a center is not a machine. It does not exist for the purpose of information transfer or any other extrinsic purpose. He defines a center as any cohesive, identifiable structure in matter-imbued space. Each center is made of other centers (again recursively, down to the atomic scale) and defined by the geometric relationships among its sub-centers. Inherent in the structure of every center is a degree of what Alexander calls life. The relationships between centers can be “helping” or “harming;” centers gain more intense life when they are helped by other centers. A structure is thus living to the extent that it is made of living centers, and the centers are helping each other. People, like any other centers, become more “alive” when they are involved in a living structure, and we can feel this life within ourselves. The life that we feel in the presence of living structure is the reason we seek and create living structure.

Life in a small café in Vietnam. By PiktourUK, licensed under CC BY 2.0.

So: two worldviews, using the same terms, but utterly different. One cold, one warm.

You might say “so what? Ben’s just using the word ‘center’ to mean something different from what C.A. meant, and that’s the end of it. There’s no relationship, necessarily, between the two ideas.”

The reason I’m not quite satisfied with that, nor ready to abandon the language of centers to talk about software design, is that human-software systems also have degrees of life, which can be felt by the people in the system. This degree of life happens to correlate — quite well, in my experience — with the efficiency of information transfer in the local system.

Christopher Alexander described fifteen geometric properties of living centers — properties that occur over and over again in systems where we feel life. He described how those properties could be generated by an iterative process in which centers “unfold” from undifferentiated space. I’ve applied those same methods to computer systems, generating the same properties, and discovered that not only does the feeling of life in those systems become more profound, in exactly the way Alexander predicted, but that the systems work better, mechanically, as a result of my changes. They are better at information transfer.

So something really weird is going on.

I can think of three possibilities:

  1. My “centers” and Alexander’s centers are really two different concepts, and it’s just chance (or perhaps my wishful thinking) that causes the apparent consilience between them.

  2. My “centers” are the same as Alexander’s centers, and Alexander’s centers really can, somehow, be thought of as machines that transmit information. The life we feel in a joyous town square or a beautiful building is really, somehow, related to the efficiency of the information transfer that happens there.

  3. My “centers” are the same as Alexander’s centers, but my description of software centers as machines for information transfer is misguided. Instead, it’s more productive and humane to think of human/software systems as living wholes, in the same way that a building or a town is a living whole, and to say that a software system’s intrinsic purpose is to attain profound life.

I am not ready to admit (1) (and it’s not just me — software people have been finding value in C.A.’s work for a long time) but (2) and (3) just don’t seem to work. I do not understand how a building could reasonably be conceptualized as a machine for transmitting information — that’s not what a building does, dammit — and I also don’t see how it’s possible to create valuable software while focusing on life at the expense of information transfer. A software system is neither shelter nor a work of art.

Is there a (4)? An idea occurs to me as I write this. Something always bothered me about the fourth book of C.A.’s opus The Nature of Order, titled The Luminous Ground. It tries to explain what our experience of life in a system has to do with the geometry of that system, but IMO it fails to do so in terms that I can grapple with as a scientifically-minded person. Brutally summarized: C.A. says that a) people are centers b) centers create life in each other c) therefore geometric centers in a building create life in people. However, his explanation does not satisfy me. I have the feeling that it is punning, playing tricks with semantics, playing on our desire to make it make sense. But information transfer might go some way to explaining it. Isn’t the feeling that we get from a great work of art the result of (visual) information being transmitted?

But no. It doesn’t work for computers. A work of art is not a user interface. A user interface is not a work of art. And the centers in art and architecture don’t transmit information to each other, the way the centers in a software system do.

The disconnect continues to stymie me.

I begin to write down my thoughts in the hope of resolving my confusion, or at least explaining it to myself. The pages that follow are the result.