Wednesday, August 29, 2012

5 Ways Writing Fiction is Like Writing Code

I'm a writer, but since I'm also a huge math/science nerd, I don't fit the creative stereotype. This is fine with me, especially since as a result of the two years of Computer Science I took in high school, I learned that there are some rules which apply both to writing fiction and writing code.

1) You can't edit (or debug) a blank page

While you don't want to get into the habit of writing gibberish, the worst failure of any writer is to write nothing at all. For coding, you have to have something written so you can test it - all the ideas and plans in the world don't help if you can't see if the darn thing runs. For writing, the same applies: that beautiful book in your head doesn't actually exist until you write it down - flaws and all.

2) You don't have to do it all at once, nor in order
 
This has been an important lesson for me to learn when it comes to my fiction, but one that comes naturally in code. You write a bit, and then test it, and write another important bit, and test that.

By the same token, in novels and longer stories, I find it often helps me to just skip to the next important/interesting part. If I need to come back and fill in something later, then so be it - but there's no point in writing filler that I'll just delete later.

3) A plan is your friend

Have you ever tried writing a program off the cuff? I have. For short programs, it's doable. But as the programs get more complicated, it becomes imperative to have some sort of plan - even just the idea of "first this, then that, and somewhere along the line also this third thing."

There will always be a debate between plotting and pantsing for writers, but I think even pantsers can benefit from learning to think one step ahead, so you're writing towards the next important event instead of stumbling blind in a fog.

4) Sometimes you just have to debug

I've recently realized that when I think over my plot again and again, and let it percolate in my brain, and then have a giant idea for what needs to happen/change - that's plot debugging! Just like we have to make sure our programs work the way we want them to, we have to be sure that our plots work to the benefit of the story. This can mean changes that are painful to make. Make them anyways.

5) Use your friends (& strangers!)

It's hard to know everything needed to write a particular program, especially when you're learning. That's why everyone in my CompuSci class was always asking their neighbours and google for advice.

As writers we use a different set of tools, but that doesn't mean we have to work alone. Critique partners and online writing references are invaluable. And as I've found out over the past six or so months, twitter is a great way to meet friendly writers from around the world - and then ask them for advice!
 
In that vein, I hope this has been helpful "advice" - or at least made you see computer programming in a different light. Please, chat me up in the comments!

4 comments:

  1. My husband works in IT - but isn't big on the whole creative writing bit. A great way to cross the lingo divide!

    ReplyDelete
    Replies
    1. Glad you like it! I too find that most people I meet in "left-brained" activities have no interest in creative writing. ever. despite my best efforts to suck everyone into NaNoWriMo :)

      Delete
  2. I'd add getting too attached to the list. Both in code and in writing you occasionally have to kill your darlings or throw away what you've done so far and start from scratch (or at least much less). For the longest time I was pretty attached to my code and felt really bad every time i went down a blind alley and had to throw away code. But I think the more you write the more you get used to it and easier it becomes. You realize that if you have to throw away what you have so far it's ok because you did it once you can do it again if you have to.

    ReplyDelete
    Replies
    1. That's a very good point... but can be a tough lesson to learn when the code/writing takes a lot of work. Thanks!

      Delete