Software is Clay

Everyone who has written a line of code knows what it's like to turn away from their monitor to extinguish a glimmering ember of a problem only to turn back and find that their train of thought has departed, left to try to figure out how to summon it back again. In that moment, the previous visualization of what that code was to be was discarded and a vague semblance of that construction was recreated. As if when their hands left their keyboard, as a sculptors hands leave the clay, their code immediately began to solidify. I think this analogy goes much further even than this though.

Like two sticky clay balls, fledgling software projects that need to interface run the risk of sticking together as their interfaces begin to mix and match. The less the software is intentionally kept separate while its worked with, the more likely this becomes. But like with clay, if we deploy the code as it is, fire it in the kiln as it were, that code becomes permanent. Even if that library or project is reused, all of the code that relies on it can theoretically be "washed" off. In this way, interfaces act as stability for a project.

On the other hand, when two incompatible clay pieces such as say a teapot and a spoon are fired, they can't ever be combined in a cohesive way without additional clay. Further, the fired clay hides an elusive feature described in the first point -- it can be shelved until it's needed again. This durability is simultaneously a benefit and a curse. Most pieces, like most code, provides little in the way of additional documentation or history.

As time progresses, the package as it sits unused (or in an arguably worse way, used) reaches stages where the original author not only doesn't know how it works, but what it was even intended to do. Like clay artifacts, you might be lucky to find someone who understands either of these things, but maybe not. Good documentation extends the life of the package in much the same way as the provenance for a piece of art. If the documentation is discarded or slides out of date, it still had value when it was produced.

I believe that this analogy could be extended further, but I'll leave it as it is until later.