Make a home

Ryan James Spencer

I'd like to preface this article that analogies are rough comparisons. That is why, after all, they are analogies. We say that one thing is like another, but it is not to say they are the same, point-for-point.

The analogies to construction and architecture in software are abundant. We say that we are 'building' a codebase. We assign people the role of 'architect'. One camp of people regale The Big Ball of Mud, esteeming the progress they make as their rationale for constructing a wobblying shantytown. Another camp sit high in The Ivory Tower, planning the sanctuaries that may give their inhabitants stamina as they rest in its glory.

In Architecture of Happiness, Alain de Boton waxes,

Beneath the pleasure generated by the juxtaposition of order and complexity, we can identify the subsidiary architectural virtue of balance. Beauty is a likely outcome whenever architects skillfully mediate between any number of oppositions, including the old and the new, the natural and the man-made, the luxurious and the modest, and the masculine and the feminine.

What analogy sits between these two extremes? Where is the balance between progress and stamina?

I feel like it's building a home.

Recently, I watched a man building his own log cabin, slowly outfitting large portions while also doing his chores from day to day. You can tell the focus placed on making it a lovely, warm place people can relax but also the willingness to accept the mess where it need to be accepted. As Jonathan Blow eloquently puts it in a portion of one of his live streams,

We are ignoring [a pointer problem] for now and we are making a note that that problem needs to be solved. You don't [sic] so here's the thing, in a big project you just don't have to solve every problem at once in fact if you try you will not get very far at all. You'll just get crushed under the load under all the things you have to do and of never getting anything done ...

Jonathan goes on to state how he subdivides problems into ones he wants to seriously tackle now, and ones where he is putting in a rudimentary solution so long as it gains him progress. All of this, to me, is the same sort of balance that comes in the mental idea of having one's own house.

Most likely several things are demanding ones attention for fixing; you might need to get a wall repaired, perhaps a door is more important since it's front-facing, and you need to rake out front and put out the trash. Despite all this effort, you spend many relaxing moments in your home, recharging and growing with the environment built up around you. Alain de Boton feels homes represent our ideal lifestyles, and experienced programmers do the very same on their codebases; they make it home not only for themselves but for others.

Maybe we all ought to make homes so we can grow and feel happy in them, without sacrificing progress and stamina.