The Spiritual Nature of Software Tools
The Spiritual Nature of Software Tools
At the risk of waxing philosophical and boring you, I want to discuss one other aspect of Simone Weil's "The Need for Roots". A persistent theme throughout her writing is how society must recognize the spiritual nature of work.
I read it on multiple levels. First, that people need to work to feel useful, one of the fundamental needs of a human soul. Second, how physical labor forces a normally active human mind, to slow down, becoming "subject to time in the same way as inert matter." In this way it has an impact on the human experience unlike aesthetics or logic. Couple that with the fact that we spend so much of our lives working, and it makes sense to say that work stands above "all other human activities" in spiritual significance.
The other aspect, which got me thinking more concretely, was how Weil considers tools in this context.
To labour is to place one's own being, body and soul, in the circuit of inert matter, turn it into an intermediary between one state and another of a fragment of matter, make of it an instrument. The labourer turns his body and soul into an appendix of the tool which he handles. The movements of the body and the concentration of the mind are a function of the requirements of the tool, which itself is adapted to the matter being worked upon.
Some might see a skilled laborer, and describe their tool as an "extension of their body," like a special limb. Weil conversely claims the tool dictates the motion of your body, which is further "adapted to the matter being worked upon."
Weil speaks almost primarily about physical labor, but there's some truth of this in software too. To write software is to turn your body and soul into an "intermediary" between two states of information. The transformation is not instantaneous. Code doesn't write itself. Our keyboards dictate the motion of our bodies, and a textual interface influences the concentration of our minds, as we write, organize, refactor, and debug code. This is further dictated by the requirements of the editors we use, and adapted to the programming language, the particular program being modified, and the particular idioms present in it.
Perhaps this is why people feel so strongly about their text editors and programming languages. They contribute to our spiritual experience of work in how they feel like extensions of our body and mind, and in how they facilitate and dictate our patterns of thought and concentration. That can also explain why discovering a new tool, which enables a new way to think, can feel transcendent.
By my casual observation, people feel more intensely about their tools the more they invest in learning them. An optimist might suggest one wants to share their efficiency gains. A pessimist might call it a rationalization strategy for time spent, whether it was truly beneficial or not. Weil's take might be that we have a spiritual connection to work via these tools, willingly consenting to labor with them, in a "perfect form of obedience." The immediate connection we have with the tools constitutes a sort of primal, basic truth that surpasses and outlasts the output of the work. This has side effects that are hard to pin down, because they imbue the self.
Concrete examples can't avoid sounding corny, but this is my Halfspace so I'm doing it anyway. If you know me professionally you know I use vim. I've written millions of lines of code in vim, both professionally and for fun. I've written research papers in vim. I wrote my book in vim. I recently edited my grandmother's autobiography in vim. I'm writing this newsletter in vim. I've been using vim since roughly 2008, but to be honest, of those millions of lines, maybe tens of thousands actually mattered for something.
Most of my schoolwork was throwaway work from a material standpoint, meant only to build up my mind and help me practice. I'm almost certain that all the code I've ever written professionally has been eventually thrown out or rewritten, with the exception of Google, where it may only be saved by recency. The value of all my professional software was only in the relatively short time it was running. How rare is it to find software that lasts?
But in that time, my relationship with my tools has refined and grown in a way that wouldn't have been possible without the cradle of work. I matured in step with my skills using vim. It has become an extension of my mind and body, and in turn it has shaped the way I think about solving problems. Both in the micro—my muscle memory for commands to edit text—and macro—vim is a software design touchstone. I even do things slightly differently, like outputting logs a certain way, in order to make the results easier to work with in vim, should the need arise.
Another example is the slide rule. During a recent family gathering, three of my wife's uncles excitedly showed me how to use a slide rule. We didn't have any particular project in mind, and I'm sure the days were long gone when anyone in the room needed one. Nevertheless, they all had fond memories of their desktop slide rules, or their pocket rules that they carried with them, and how efficiently they could wield the tool to quickly and accurately calculate. Though I didn't have this framing at the time, it was clear their spiritual relationship with the tool lingered long after their need for it died away. None of them had anywhere near as strong feelings about the pocket calculators that replaced them. My hunch is because the calculator required no skill, and harbored no room for personal growth.
By contrast, many modern software applications destroy the possibility of a spiritual experience by design. There's a pernicious ideology among UX designers that "users are dumb." The user's interaction with the application is therefore completely scripted in advance, so as to hold the user's hand toward predetermined outcomes. The belief roughly implies that any tiny obstacle a user encounters will cause the user to abandon ship. Of course, this primarily matters to the app owners in that users spend less time buying stuff, scrolling, and generally allowing the app's owners to profit.
Of course you want a tool to be as simple as possible. But "users are dumb" is a terribly self-fulfilling prophecy. You can't prove you're not dumb if your tool leaves no alternative. You can't have a spiritual experience with a tool that you cannot grow with, and which you cannot adapt to new circumstances. The ability to grow and adapt directly contradicts the assumption of stupidity.
The non-engineering software tools that succeed in providing a closer relationship with their user include spreadsheets, drawing applications (like the Adobe suite, connected to a Wacom tablet), video and music editing software (think Garage Band), synthesizers like Helm1 or the Teenage Engineering OP-1.2 Even some "tools" embedded in games, like Mario Maker, fit the bill. I have fond memories of the StarCraft 2 custom games editor, though I remember little about what I made with it.
Maybe this is all an elaborate way to say that customization and extensibility separate generally useful tools from limited-use tools. That a good tool is one that hones your form, and into which you can project your uniqueness and soul.
Curiously, I can't think of any "spiritually significant" tools for mathematicians. Unless you count the running joke about Hagoromo chalk, which I can attest is the Rolls Royce of chalk. Perhaps it's time for someone to build one.