From 1988 to 2000 I made my full-time living making music. I used to spend a huge amount of my time writing songs. Lyrics, melodies, grooves, tracks, arrangements, etc.

As I get more and more into programming, I’m constantly struck with how similar it feels to songwriting.

I’ll name a few ways that come to mind so far, and then maybe some other musician/programmers can contribute some more to the list.

  • It starts with a vague concept of something that could/should exist, then is slowly crafted towards that vision, like a sculpture.
  • Both songwriting and user-interface design make you constantly put yourself in the audience’s shoes - to make sure they understand what you’re trying to express. Will they understand your turn of phrase? Will they know where to click to complete the form?
  • Both songwriting and user-interface design need to hold the audience’s attention all the way through, knowing that one wrong decision might lose them forever.
  • One big problem really wraps around dozens of little problems. Finding the right chord, the right query, the right phrase, the right page-layout. These little problems are the addictive potato-chips that keep me going.
  • Every person on earth would solve these problems (both little and big) a little bit differently.
  • Even trying to imitate someone else’s creation will make your own unique version of it. Imitation is a great way to learn. Humans are imperfect mirrors.
  • I resist starting. I’ll make 1000 distractions for myself. But once I start, and get into it, it’s the best thing in the world and I don’t want to stop.
  • It makes me jump out of bed at 2 AM wanting to try the ideas in my head to see if they work.
  • Too much repetition, and it’s boring. Not enough repetition, and it’s hard to understand. (in programming’s case this means the code, not the final product)
  • Once you’re done you want to show off your creation to the world.
  • Some people work best in collaboration like a day job. Others work best all alone, creating late into the night.
  • Some like to draw charts on paper, analyze, discuss. Others like to just shut up and do it, letting the creation speak for itself.
  • Both start with an initial flash of inspiration, then take a hell of a lot of work to make it into reality.
  • Being the programmer in the company is like being the songwriter in the band. You’re the one that creates the thing that the rest of the organization is there to promote and support.
  • It’s best to keep the "suits", the business-folks, away from the creative process, until you have something you’re ready to show them.
  • Your creation is often judged by how much money it could make, though that’s another way of saying "how many people will like it enough to pay money to have it".
  • … though if even a few people’s lives are made better by your creation, that’s satisfaction enough.
  • Most real songwriters and programmers would be doing this even if they never made a dime.
  • The sly programmer or musician puts little things in the final product that the general public will never notice, but a few peers in-the-know will catch the subtle trick and laugh out loud in admiration. (Or even if nobody else notices, it’s an immense sense of self-satisfaction.)
  • Some of your worst songs or programs had a brilliant idea inside, that you can re-use many times.

Please contribute more, below…

A great essay on a similar subject is "Hackers and Painters" from Paul Graham’s O’Reilly book by the same title.

YOUR TURN - what are some other ways programming is like songwriting?