Big transitions, no matter how clean or absolute, always leave a residue.

In my twenties, my day job was being a musician. Half of my life was spent touring the country, and the other half was spent in California recording studios producing records. I had no idea I would one day write code.

My conception of “programming” at the time was probably something akin to data entry, but maybe in a neon-lit basement with a large bottle of Mountain Dew and the Chemical Brothers on repeat. To be honest, it sounded mostly like carpal tunnel syndrome to me and my instrumentalist’s body. I had no idea that for each hour it was 58 minutes of pacing and thinking, followed by type-type-typing in three lines. I had no idea it was as creative as any fine art form.

Today, writing code is a well-worn, intrinsic element of my daily work. Yet internally, my past underscores my present in everything I do. It is my between-the-lines professional bio: I used to be an artist, now I’m an engineer. I used to think about aesthetics and emotions, now I think about problem-solving and planning. I used to hone my fine-grain antenna for intuition, now I cultivate my sense of conscientiousness. Every new task I point myself towards is first ensconced within this story’s arc.

This habit of mine continuously stokes a burning private question: is all that historical time spent thinking about beauty and feelings a hindrance to my current craft, or a boon? Working in the artistic world defined my process of making things — in what ways does this modulate my approach to software? And are those ways good, negligible, or terrible?


byrne and eno

From my vantage point, musicians and coders actually share the same basic challenge, and it is something like this: take scattered gobs of technical stuff and somehow jam them together in a way that appears simple, natural, and magically compelling to the outside world. If things go well, we navigate the swarm of causal details to keep the spotlight focused on the relevant effects. There is no avoiding such a swarm — our job instead is to contain it, arrange it, and point it towards what we judge to be the things that actually matter, while black boxing it to stakeholders. This is what a successful musical arrangement is. This is also what a successful computer program is.

It follows then that there might be some striking resemblances in process. And, oh hey, there are. Recording an album and building an app both tend to have timelines of several months or more, with discrete brainstorming, planning, execution, and launch phases. Both require persistent, committed decision-making in the face of uncertainty, at both micro and macro levels. Both often require organizing and coordinating effective teams, and keeping those teams happy.

There is one final thing, and it is my favorite: the moment where we finally get our thing to work. This moment is a shared and cherished universal of anyone who creates; both technicians and artists all know and hunger after the vivid dopamine aftershocks from those precious occasions. We even have the same phrases to describe them:

“Then everything came together.”

“Then things fell into place.”

“Then everything clicked.”

For a certain kind of person, such moments are peak life experiences. A resounding yes shoots up through us like a wave. That electric, child-like manifestor essence inside us jumps up and down ecstatically while clapping its hands. A deep internal smile settles in. There is scarcely anything better.

Writing this out makes me realize that the act of creation is the essential share-point. Whether previously as an artist, or presently as a coder, my livelihood remains perennially rooted in the unique labors and joys of birthing new things into the world. This is the bedrock connection. Even if nowhere else, the careful, studious technician and the wild, free-spirited artist can commune with each other upon these shared holy grounds.


die antwoord

Formidable contrasts, however, must exist. I hang out with both artists and engineers and this just seems… axiomatic. Plus, without such contrasts I have no good way to explain my own lengthy and often wince-worthy transition from one to the other.

First the low hanging fruit. While there are actual technical problems in music (guitar amplifier doesn’t work, etc), the real problems to solve are aesthetic. This means, how do you adjust things to make something feel more fragile, more aggressive, more like, oh I dunno, snow falling in a big city at night? Why does this one line of a vocal performance “work” while this other one does not?

To deal with these kinds of problems, you have to deal with the gestalt, the totality, the simultaneity of things. One takes in all aspects at once, makes subtle iterative movements toward the desired effect, and observes how those movements ripple outward to affect the whole. You take a bunch of linear elements, stack them all on top of each other, zoom waaaay out and judge the effect. In other words, your goal is to “make a good forest.”


Coding is the opposite. You take a naturally simultaneous process, chop it up into bite-sized, graspable components, and then string them all out like a clothesline into a step-by-step procedure. And yes, in a display of tidy symmetry, there are aesthetic considerations involved in coding, but the real problems to solve are technical. Roughly speaking, your goal as a programmer is to “make good trees.”



I want to return to that shared ecstatic moment of creation again and examine it further, as I think there is something important still hiding in there. The moment itself is undeniably mutual. What proceeds from there, I am realizing, is starkly different.

With art, eureka time is party time. If I play back my song and everything feels balanced and just so and makes the persons in the room feel the things they want to feel, I can pack it all up and call it a day. The only real uncertainty after the initial victory is, “will I still feel the same things when I play this back tomorrow?” (which oftentimes you don’t, because things feel different at different times and contexts, and all that is terrifying and mysterious, but that is another article) But really, you are more or less finished. The race is ended. You won.

Technical things are different. That first eureka moment is only the first leg in the race. Okay, this thing works, for a single user, in a single environment, in a single test. But will it work again? Will it work a thousand times in a row? Will it work for a thousand people at once? How about a million? When it doesn’t work, how will we know about it? As an artist, these were completely foreign considerations. Scale and consistency were not issues I had ever needed to worry about.

In my own experience, I think this is what I had to learn in order to transition meaningfully. It fits my history. I always created things with satisfying effects. I never missed the mark on what was supposed to happen. But once built, those effects often broke down. They weren’t tested enough. They weren’t resilient enough.

Driven by Drug Addiction

I have always been an endogenous drug addict. Early in my coding career, I was driven towards the highs of those deeply satisfying eureka moments, that feeling of, “Ah this is just, exactly right.” That feeling of pitch-perfection. That was my professional engine. Once achieved, I came down, packed up, and immediately moved on seeking my next high.

I think this totally works if you’re an artist, and without any meaningful liabilities. I think this is how most artists do — and should — operate.

Creative ecstasy is also a very real component of engineering. But, it is not all of engineering. More seasoned technicians will tell you that the real shit is what happens before and after the nucleus of raw creation. It is about the surprisingly immense power of truly careful planning, and truly thorough testing. It is about how trust in your tools and the data they provide can achieve things unimaginable by your creative impulse alone. By quietly and persistently seeking what is actually true, and then ceding ourselves to it completely, we extend our reach dramatically.

It has taken me years of on-the-job learning to begin to understand these things. It has taken even longer to begin to be driven by them. Despite sharing a core of creativity, engineering is different than art in crucial ways. But, it offers its own rewards. It has its own deep beauty. It has its own potent highs. One simply must be patient, careful, and quiet enough to notice them.