2024-06-07

Design


Christopher Alexander

This post takes it’s title directly from a chapter in Christopher Alexander’s Nature of Order II: The Process of Creating Life. While in this book he discusses the issues with the construction of buildings in the 20th and 21st century, a startling number of similarities can be drawn to the construction of software.

At the core of his argument is the idea that architects have become too far removed from the tactile day-to-day process of actually making the building, and this disconnect results in ultimately ugly architecture unable to support or nurture the people using it each day.

This draws a number of parallels to the “Ivory Tower Architects” I imagine most of us have experienced. Ultimately well meaning, but too far removed from the trenches to understand the actual forces at play that are influencing the construction of software.

What should an architect do?

I think Chris’ vision of what a traditional architect ought to do is equally applicable to software architecture. He divides the responsibilities of an architect into four categories:

Making - Practicing oneself the art of physically creating. Ultimately getting your hands dirty, and understanding where the natural joints lie in whatever medium you are using.

Designing - The high level planning and ideation of new ideas, most commonly captured in the form of architectural diagrams or documents. This must be informed by the practical lessons learned in making.

Building - Managing the logistical challenges that arise practically for large projects. Balancing budget, managing and influencing those performing the work so that the end product can shine.

Helping - Helping others to perform the same making/desigining/building tasks day to day, adding small touches to make the process smooth. Similarly creating generative frameworks others can use that practically and not theoretically produce quality.

Here I think the differentiation between making/designing/building is quite crucial to understanding this holistic architect. I think too often we use these words interchangeably. Similarly helping in this way is seen as a fundamental aspect of the creation process. We cannot create without our colleagues, and only by nurturing these aspects in each other can we increase what we all can accomplish.