Writing is Singing, Programming is Screaming

Twenty in a row makes me think this isn’t a typical New Year’s resolution. I never thought of it like that, but since I did start this blog-a-day at the start of the year, it could be considered a resolution. Most of the time, though, those fall off within the first couple of weeks. I’m still going strong, though I don’t always have much to say that’s new or interesting.

I woke up this morning a little after 7:00AM and I went right to work on some of the Day Job tasks I had stacked up. Melissa, Chris, and I went to brunch just before noon, and when we got back, I jumped back onto the work laptop and wrapped everything up around 4:30PM. A full work day on the weekend. And I still have more to do, but I’m taking a break to… you know, be a human.

Many times before, I have compared my processes as both a programmer and as a writer. There is some interesting overlap, and there are stark contrasts.

As a programmer, especially today, I needed to go deep into some analysis to figure out why something wasn’t working. It was very close, but something was off, and the only way to fix it was to take it apart and put it back together. This isn’t too different from some of the work I do on my stories. When I nearly lost Synthetic Dreams, I summarized all of the chapters, put the summaries on 3×5 cards, and laid out the whole story on the table so I could see it and figure out how to finish it and have it be satisfying.

As a writer, I like to have an outline with enough details to give me the shape of the story, while still leaving plenty of room for me to discover and improvise along the way. As a programmer, I plan what I’m working on in advance, then write tests before the actual code so that when the code is finished, I have a way of exercising it to know if it works. I don’t have comparable tests for when I write, but the planning it takes to write the tests is similar to the kind of planning I do when I write an outline.

Editing and refactoring are very similar. In both cases, I cut the things that don’t need to be there, and sometimes I reorganize things so that they make more sense and reduce the length of the work. In both cases, and this is something I’ve been trying so hard to teach one of my engineers: it’s important not to refactor before the code is written. Similarly, it doesn’t make a lot of sense to do a bunch of editing on a story before the draft is finished.

As far as contrasts are concerned, I’ve talked more than once about how I can program to music, but I don’t write very well when there are lyrics entering my ears. Today, I jammed out to metal and rock while working on code. As I write this, it is dead silent in my room.

The emotions I feel are different between writing and programming. Sometimes it’s a matter of the story dictating the emotion de jour. Sometimes I need anger to push through programming, as I described a couple of days ago. While writing, I rarely feel frustrated. While programming, if I’m not consumed with frustration, it’s just an arm’s length away.

I think programming is exercising a different part of my brain from writing. Both involve a lot of typing and choosing specific language in order to achieve goals, but one feels like singing, the other feels like yelling.

Tomorrow looks like it will be a lot like today. We will see soon enough.