Programming Is Like Dancing

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.

If you read this far you should probably follow me on Twitter or check out my startup Airtime for Email.

28 Feb 2012, 8:59pm | 14 comments

  • IceCreamYou

    I also think about it this way: software is a service, not a product. Software makes it easier for people to do a huge variety of other things, and those other things may be more permanent and affect more people directly than the software itself. It’s all part of an ecosystem.I definitely feel the drive to create something maximally impactful all the time, every day. But I think it’s worth considering that change is permanent too, and one way to view your contributions to the world is how quickly you make it change for the better.

  • Dan Shipper

    “But I think it’s worth considering that change is permanent too, and one way to view your contributions to the world is how quickly you make it change for the better.” Love that, always great to hear from you.To your point I think you’re exactly right that it’s less about the code itself and more about the idea and the effect of that idea on the world.

  • geekgirlweb
  • Kobe

    I guess If you program for enough time you will get a posture. The round-the-clock bent posture πŸ˜‰

  • Rodrigo Rosenfeld Rosas

    Interesting. All of my professional projects built in my carreer have lasted more than 2 years. I would still wish that some of them have already died… I’m only sure about 2 of them who have already died, built with Perl more than a decade ago…In the other side, I never completed 3 years in the same company yet…

  • Will

    My two biggest passions in life are Programming and Dancing. Maybe this is why I’m drawn to both of them.

  • Peer

    The whole point of this article is “Just love what you do!!” It is applicable not only for programming but also anything what we do. is there any book or article to make my brain to feel that “Writing a programming is my passionate hobby”?

  • Carols10cents

    I’ve thought along these lines too but I’ve never really connected as nice of a metaphor as this is!I think my problem was that I was taking too narrow a view of programming. The thing I enjoy about dancing or playing music is the zen-like state of living in the moment that you have to get into to be any good– it’s not that if you’re good you don’t make mistakes, but you don’t dwell on your mistakes, you move on because that moment is gone and you can’t do anything about it now.It’s a little different with day-to-day software development because I often have to fix old code, but I think you nailed it with a longer view. The software we write today will last but a moment in the grand scheme of things, and “broken” code ships and provides value all the time, and we should celebrate what we’re doing right now :DThank you for this post!

  • Dan Shipper

    Thanks for your comments guys! I’m glad you enjoyed the post πŸ™‚

  • arscariosus
  • tarunvignesh

    Well put. I guess you are comparing the process & the state of mind that programming results in – to any or the creative performing arts for the sheer intellectual pain/pleasure it results in at those moments. The Aha moments, the WTFs et al. You can’t extend the analogy any further since it breaks when you consider programmers do get second chances to fix the mess they create. An interesting point you mentioned that caught my attention was the longevity of programs we write. What would it take to write a program that would stand the test of time. Such a program need not be something great or path breaking. Something to ponder. ..

  • digifireblast
  • Kenneth Casero

    I am a dancer and programmer at the same time. I like how you do an analogy between the two. Dancing has always been like software engineering. We need to conform to what it requires and how well we need to implement such. Creating a choreography equates well with creating your source codes — You see, it needs to be reviewed like how the audiences of your performance do πŸ™‚ I hope you agree. XD

  • Pingback: Good Reads ·


Never miss a new post