Beauty to the inhuman

A dry stone wall is a formation caused and perpetuated by humans. Humans needed a way to set a boundary, to mark a place and limit the movement of livestock. A dry stone wall captures our imagination because it’s built for a clear purpose and helps us survive.

  • Modern architecture is a formation caused and perpetuated by capital ownership, working for hire, and the career maintenance of visionary architects.
  • Cell walls are formed and perpetuated through upkeep by protein reactions.
  • Humans care, but we are as cattle or proteins to the driving forces of modern architecture.

Christopher Alexander claimed modern architecture led to dead buildings[NoO1-01]. He called it less alive than the timeless way of building. He saw buildings immaturely constructed, but I see buildings built by something at a different scale than human individuals. I see the systems of society and the more extensive system of methods and commissioners of construction. I don’t think it’s dead; I think it’s alive and hungry.

Robert M. Pirsig went to great lengths to uncover a better definition of subjectivity and objectivity, first in Zen and the Art of Motorcycle Maintenance: An Inquiry into Values[ZatAoMM74] and then in Lila: An Inquiry into Morals[Lila91]. But I think even he missed something important about subjectivity because he failed to see people as extensions of the gene.

Subjectivity, in a general sense of some things are subjective, does not exist. The lens through which we view a relationship or the context provides the key to what is subjective. When melting ice, there is an objective amount of salt to use. With food, there’s a subjective amount of salt preferable to humans. For slugs, it’s objective. So, even down to simple things like this, we understand there is the subjectivity of the individual, the species, and the context.

So, when we talk about subjectivity, we must consider the subjectivity of what?

Where Christopher Alexander claims modern buildings are devoid of life, I counter with context. All buildings are alive but not necessarily alive in the context of humans and wholesome human interaction. Christopher Alexander seemed to believe that the artificial existed. But all artificial things were created by naturally occurring phenomena. Humans are natural, so therefore, petrol stations must be natural. We only think of termite mounds as natural because we think of termites as natural. A higher being beyond our comprehension would consider our 20-foot steel shipping containers natural. They may think of them as odd and not immediately understandable phenomena created by the creatures known as humans, similar in some ways to the hexagon grid of the beehive.

We must acknowledge that modern architecture is natural. Just because we fail to understand the goals and why it survives doesn’t make it dead. We need to understand what its environment is and why it is fit for it. What makes it better than traditional architecture in this environment? When we apply systems theory, we can ask: What do we need to change about the environment to encourage the construction of better buildings? What would it take for more wholesome structures to thrive?

Imposing solutions

Modular designs are everywhere but only fit when the modules have no character and where the environment is free of life’s intrusions. What environment does modular design exist in? It has a survival trait of being easy to reason about when thinking about numbers, not people. It does better when fewer people are in charge of spending and allocating resources to do the construction work. So, one environment is where conscious decision-making time is limited. When you need to make sweeping decisions, modular design is easy to see as complete. And completeness is a virtue when you are not directly in charge of the budget.

Now consider coding rules. Many rules we follow make sense 90% of the time. However, there’s almost always a reason to ignore them at some point. Otherwise, we would change the language outright. Instead, we must use our judgement. The benefit of modularity in buildings comes when you need to devote time to applying your good judgement to the design of hundreds of plots. You can use modules and leave the building to those with weaker judgement because you can trust they can’t do too much damage. Coding rules are there for when you lack the capacity to think about the virtues of many sections of code. You select a set of rules that embody the majority of your principles and lock the developers into producing code according to those rules. Now, you can at least be reasonably sure they won’t deliver a load of garbage if they follow them.

Pervasive modular design is quick to build, dead, and dull. However, it’s only dead to the inhabitants of the buildings. To the environment of countrywide housing planning groups, it’s a natural fit, relaxing two opposing forces of costs and time while resolving a homelessness crisis. It’s a beautiful pattern to the system of government spending. Coding standards align developers and bring about a common baseline of quality similarly. It’s a way of saving energy and lowering the number of decisions people need to make in a decision-making-heavy task.

Cost of uncertainty

In conclusion, modular elements are a theoretically good solution to the problem in the abstract domain of budgets and spending. It isn’t easy to obtain numbers that show the costs and benefits of non-modular solutions, so we promptly discard them as certainty is more comforting. Standard practice states you need an architect to design a house. If we tailor each build to the environment, then clearly, the price will spiral out of control. Again, when you think in theoretical terms, it’s obvious you can’t have bespoke housing for a million individuals. And yet, that’s precisely how the world worked for a very long time.

What about coding rules? In almost every programmer’s career, they will likely remember a time when they didn’t have them. Some will think back on that time fondly because of the freedom. Others will think about the suffering and the pointless bugs caused by not taking obvious steps to increase clarity. But, 20 years on in my career, I still decide on a per-project basis whether I will follow any rules or try another approach. Sometimes, I find no real benefit to a rule; I gain by avoiding it. By not following rules, I often also learn why we have them. By experiencing and gaining wisdom. Oh, painful, painful wisdom.

So, who’s benefiting from the coding rules? Whose costs are reduced and needs met by these rules? Usually coders, in a sense that they get work done faster, rework less, and can work with others with less friction. But the organisation benefits too. Coders will primarily get to do what they want regarding how they arrive at a solution, which means they aren’t affected by the system above like it is with the government benefiting modular design. The most durable rules are those that make coding less wasteful. In that sense, beauty is to be found in eliminating decisions and the time consumed when verifying them.

However, we built a million houses before modularity gained traction. They were constructed with attention as a million individuals made decisions. People had the time and invested it. This is a connection between coding rules and modular housing. Coding rules are there to limit the number of decisions we are required to make before we finish constructing. There are many more undecided points in a software project than in a physical construction project because the effort in a software project is 99% design and almost none in the construction. So, for me, flexible, living coding principles, idioms, and quality guides with examples of how and when you can ignore or adapt them are some of the most beautiful elements of modern software development.