Infinite undo

Two of my main interests, both as a hobbyist and a professional, are writing music and writing code. While I think there are some firmly fundamental differences between the two, there are a number of interesting similarities which I am drawn to in both cases. For example, both require you to acquire a new system of thinking, and then try to use that new system fluently, sort of like a language.*

There’s another similarity which has piqued my interest since I first noticed it a year or two ago. Both composing and programming are crafts of planning, so to speak. The way I phrase it to myself is that they both have “infinite undo”. Generally speaking, if you proceed carefully and save your work, you can always choose to go back and try another path until you choose to “finalize” your work, and even then, revisions can usually be made.

Isaac Newton by William Blake — he’s not actually planning, he’s measuring, but I still felt like it resonates

In music, this usually looks like me taking lots of recordings and saving every scrap of paper I write an idea on. Often, I don’t actually need these records, as I keep a pretty good model of the piece in my head as I work on it. But I’m still managing that pathfinding process, just mentally.

In programming, this is handled through software: the text editor and version control system both give you ways to undo your work or even manage multiple possibilities at once. Even without those niceties, rewriting the code is always an option as well. What matters is that it doesn’t have to be done until you say it’s done.

This “infinite undo” stands in contrast to many other kinds of art, where you must hone some kind of realtime skill. I think of potters or sculptors, whose actions on their works are irreversible. They have to practice, to cultivate the skill of doing something in the real world. The same applies to actors, dancers, musicians, and any other kind of performing artist. It’s a big part of what athletes do as well.

I think the perfectionist side of me is drawn to the idea that I could craft the “perfect plan”: the perfect code that does exactly what I wanted it to do, the perfect song that creates the moment I wanted to experience when I had the idea. Before that perfect moment, I can do unlimited test runs, infinitely re-experiencing this event which hasn’t happened yet. I can test my code or listen to what I’ve written over and over again, reinforcing my confidence that it really will be what I want it to be.

On some level, this may be part of what initially drew me to coding and composition, but I don’t think that perfectionism defines me, either. In both cases, I’ve dropped some of the perfectionism as I’ve gotten older. In my choral music specifically, I do still have a hard time with it. But in my other music, as in my coding, I’m much better at focusing on getting things working first and going from there.

What’s more, I do also practice the kinds of realtime skill-based activities I mentioned above. I’m a performer, formerly as an actor and now mainly as a musician. For what it’s worth, I think my performance anxiety is pretty low compared to the median. I generally don’t mind making mistakes; I can shake them off easily (maybe too easily, sometimes).

I don’t really know how deeply it’s worth analyzing, but I do think something about having “infinite undo” appeals specifically to my personality type. Maybe it’s an exaggeration of how I really am, but I find the exaggerated language to be helpful. It maps out at least one relevant framing of myself, which I can then take or leave.

Do you prefer realtime activities or more planning-based ones that allow for “infinite undo”? Are there things you wish you had “infinite undo” for? Do you have a perfectionist streak? Are you gradually getting over it? Let me know your thoughts at my Ctrl-C email: gome ​@ ​ctrl-c.club.

* I don’t think I’ve ever put it that way before; that idea itself could be an interesting future post!