Software is a Sugarmill
About a year ago, Google acquired Revolv, where I led the Cloud team. I coined the code names for several of Revolv's projects, including our primary cloud platform. I named it Sugarmill.
But I never told anyone the reason. It was long-running joke that I wouldn't say why I named it. Frankly, I never wanted to say because the reason was more melancholic than jovial. It was not intended to be full of whimsy, but rather was to serve as a stark reminder of what we, as software developers, really do. And why it causes us so much pain.
Creating software is not a "job" for me. It's not something I do just to pay the bills. It's a vocation, in the true sense of the word. It's a thing I find fulfilling. I get to do it 9-to-5, but sometimes I do it just for fun. Some people enjoy crossword puzzles or sudoku or working jigsaw puzzles. I enjoy solving puzzles in code.
Maybe it's beyond that, because what we software developers build is intensely creative. We build new things; useful things. And when I finish that thing that "scratches an itch", I get this feeling akin to a sugar rush. I feel excited and buzzed. The French word jouissance captures the idea better than the defanged English equivalent. It is more than just enjoyment.
The Old Abandoned Factory
In the city of Longmont, just north of Boulder in Colorado, there is a giant Great Weatern Sugar factory. Made of brown brick, iron, and whitewashed concrete, the factory towers over its surroundings. Its tall silos glow in the morning light. With Longs Peak and the Colorado Rockies behind it, the sugarmill stands like the Parthenon on the eastern edge of the city
But its glory days are long gone.
The sugarmill was closed down in 1977. It has stood abandoned ever since.
It is vacant. Lifeless. But it is still there.
Condemned to Irrelevance
Software is a sugarmill.
When it is new, it is beautiful. It is functional. And those of us fortunate enough to create it feel the sugar rush of building something.
Good software provides for people. It gives them something they desire. And it fills a need. Good software creates jobs or even defines industries.
But it doesn't last. Like a factory, software is built for a specific purpose, but using the tools available at the moment. As newer, faster, better tools become available, what was shiny yesterday looks dull today. Worn. Perhaps overly complex. Antiquated. It was once innovative. It has become obsolete.
The philosopher Saul Kripke is attributed with introducing the term "Primal Baptism" as a way of describing the act of naming something. It captures the idea that naming is an initial act that is so powerful that even if the reasons for its naming are lost, the name retains its relationship with the thing named. (This theory of naming is called antidescriptivism.)
When I named our application sugarmill, my colleagues assumed this was a lighthearted gesture. And we made it so. I once gave out the "sugarmill awards" to people who contributed to the development of the project. What was the award? A pound of sugar decorated with rainbows and ponies.
But I picked the name for a different reason. I picked it as a reminder to myself.
As excited as I was to be building the cloud platform for a cutting edge Internet of Things platform -- one still unrivaled -- I knew that today's breakthrough tech would be yesterday's news. And, as Elvis Costello put it, "Yesterday's news is tomorrow's chip paper."
Sugarmill meant "tomorrow's chip paper."
Code is Art
In Jacques Lacan's theory of psychoanalysis, jouissance involved not only pleasure, but also suffering. (Anyone who's ever written software can relate.) I certainly would not go as overboard as Lacan in his subsequent analysis. But he taps something profoundly true about the nature of the creative act: it hurts.
Friedrich Nietzsche, too, captured the idea in the famous preface to The Joyful Science (or, The Gay Science, depending on your translation). He uses the metaphor of childbirth to talk about creation. It is painful, but it results in the introduction of something into the world that wasn't there before.
Nietzsche was thinking of art. We who create software can sympathize. For that is what we do. We create things that were not there before. We create things that humankind has never before seen.
Science discovers what is there. Engineering assembles. We do some of each. But we do more.
We create things that never before existed.
And for that reason, we are artists as much as scientists or engineers.
But Nietzsche's childbirth metaphor stopped well nigh of its ultimate conclusion. What is born also dies. The things that we create may be novel when we create them, but they will age, and they will die. Over the last fifteen years I have buried the same T.S. Eliot quote in code comments, variable names, and unit tests:
This is the way the world ends
This is the way the world ends
This is the way the world ends
Not with a bang but a whimper.
It comes from the aptly named poem, The Hollow Men.
Eliot's words capture the fantastic truth that we software developers build worlds. We are applied metaphysicians. But the sober note is that these worlds become wastelands, most often with the whimper of bit rot and vanishing user bases.
We Are the Avant Garde
When Édouard Manet (and later Claude Monet) rebelled against the Beaux Arts, creating the style of art called Impressionism, they sought to capture the fleetngness of the world. The classical tradition dominant at the time was obsessed with the Greeks and Romans, along with the Italian Renaissance. The subject matter of art was the immortal realm of mythology and empire.
The Impressionists balked. They did so by painting fast. Outdoors. With rough brush strokes and unblended colors. And in their furious attempts to capture the moment as a moment, the Impressionists captured something else: the celebration of the temporary. We need to learn that lesson.
Software is a sugarmill. Today it is full to the brim with sweetness. Tomorrow it will sit abandoned at the edge of town. The moment Monet captured in the garden is long gone. The sun has set on the water lillies. But the art remains. The Great West Sugar plant no longer processes sugar beets. But as a monument it stands.
Can we write software that is a sugarmill? Can we write software that looms as a monument long after it has been abandoned? And even if we cannot, have we produced anything less than art?
There is something in our vocation that transcends the utility of software. We are the new avant garde. It is up to us not just to create new things, or even to create useful things, but to create beautiful things.