The problem is this: I’ve built a lot of software projects over the 10 years. Every single one of them that is more than two years old does not exist anymore. Ones that were built more than six months ago are in varied states of disrepair.
In other words software projects steadily degrade and finally disappear completely over time.
I really don’t like this. As programmers we dedicate our lives to producing these projects. But what’s the point if they are just going to die so quickly? I mean I don’t need everlasting immortality, but dammit I want the stuff I build to at least outlast me! Without that it almost feels like we’re wasting our time.
Other professions don’t have this problem. Take being an author for example. A book isn’t like a software project. Once you write it, it is and always will be there, ready to be read. A book doesn’t break because the API it’s hooked into changed its spec.
We can still read Plato today 2,400 years after it was written. I guarantee that no software we write today will still be in use after 2,400 years.
What’s the point of doing all of this stuff if it’s just going to disappear so quickly?
A few days ago I was talking to my ex-girlfriend and she told me that she had started dancing again. She’s been dancing for 14 years, dancing for so long in fact that she developed a problem with her knee that forced her to stop for the last few months. Her doctor told her that she wouldn’t be able to dance the same way again.
“But,” as she eloquently put it, “I decided my doctor could go fuck himself.”
The interesting thing about dancing is its impermanence. Sure you can video tape someone dancing, but it doesn’t capture the state that a dancer is in when they’re performing.
In spite of this impermanence, she decided that even under the threat of constant physical pain she was going to keep dancing. Why? Because dancing is a release, because it’s an activity that you can get lost in, where nothing else matters. It’s a place to bare your soul.
The interesting thing about dancers is this: dancers are never not dancers. A real dancer doesn’t go home and forget that she ever wore point shoes. You can even see it in the way they stand. It’s this deliberate graceful tension between foot and thigh; the round-the-clock perfect posture.
My theory is this: programming is kind of like dancing. The product isn’t eternal but the moment is. The feeling isn’t lasting but it’s worth chasing.
Programming is a state. It’s a way of thinking. Like dancers, we’re never not programmers. We never turn it off. We sit in front of the computer to shape the world around us. As programmers the moments spent coding are the essence of our lives. Patches of memories stitched together by code and hard work.
This works for me. But I still want to know that I’m producing something that will last. Think about it this way: as programmers we are the leaders of a still nascent technological revolution. It’s hard to produce things of permanence because everything is moving so fast.
Let’s go back to the book example. Think about the production of the first written things. Think about how many texts were probably written and lost before what we call a book had coalesced into a formal construct.
We are the writers of those lost books, written furtively on tree bark and limestone. The only difference is that our canvas is constructed with silicon and transistors. Perhaps our actual work won’t be functional for very long, but with every line of code we write we sketch out the foundations of an industry that will last far beyond our lifetimes.
Now let’s go back to a dancer. Let’s say she’s a ballerina. She’s dancing to Pas de Deux. Everything she does is connected to every ballerina that has ever danced before her. Every dancer that comes after her will be connected to her as well. In other words, dancing to Pas de Deux puts her into a historical context. They’re going through the same steps, and experiencing the same things. But they’re expressing themselves in different ways.
If programming is a state, then the same is true for us. Even though the actual code we write may not be around in a thousand years, every line of code written in the future will be a direct result of what we do today. The people of tomorrow will stand on our shoulders just as we stand on the shoulders of the people who came before us.
And that’s enough for me.