On Writing and Programming

I was planning to write about the blub paradox, a term coined by Paul Graham in an essay that argued that programmers can’t conceptualize programming languages more powerful than the ones they already know. Or paraphrased, you get stuck in a certain way of thinking and can’t see past it.

Unfortunately, I made the mistake of rereading his essay to verify that I remembered it correctly. Bad move. Several hours later, and essays, I ended up being impressed once again by how well Paul (or should that be Mr. Graham?) writes and thinks.

I hate to admit it, but I also had a more primal reaction – to shutter up this blog, purge Google’s caches and hope that no one who has ever visited has heard of Paul Graham, let alone read anything he’s written. But sadly, that cat is already out of the bag.

Working at a Snails Pace

But it did make me focus on an issue that’s been percolating in the back of my mind – how long does it take Paul Graham, or any grade A blogger, to write their posts?

Why do I care? Because it takes me a significant amount of time to write anything and I’m curious how that compares to other people (I think the time is well spent, but that’s a topic for another post).

If you’re feeling obstreperous, you might point out that its an impossible question to answer. To really know, you’d have to compare the time it takes for two people to write equivalent posts. But of course there is no obvious way to define equivalency. What is you measuring yardstick? Number of words? Please. Relevant content? Popularity? Who knows.

The Realm of Masters

I think we can look to the programming world for guidance. It is generally accepted that the best programmers are an order of magnitude more productive than average ones. Put another way – one great programmer replaces ten average ones. In the abstract it sounds impressive. But when you see it in real life, its truly amazing.

I have an alarming suspicion that writing is the same. I don’t have any proof to back it up, and a couple of minutes of googling failed to turn up any studies that compared the productivity of different writers (I assume such studies exist, does anyone have some links?).

But I think writing and programming are very similar. Both are creative endeavors that force you to carefully formulate your thoughts so that you can translate them from your mind into a language (English or Java) that is then read by a person or computer.

The tiniest details matter – every word, every line, every paragraph, every block. I used to argue that point with my English high school teacher, Mr. Kelleher – I didn’t believe it. In particular, I remember arguing over Faulkner’s As I Lay Dying, triggered by the famous chapter “My mother is a fish.”

At the same time, the biggest details matter – without a clear organization your story or program soon dissolves into a mass of unintelligible gibberish. Thus writing, and programming, work from the bottom up and from the top down.

Both require raw talent. Without it, no amount of practice will help. You might want to be the next Tiger Woods, but even if you practice golf every day for the rest of your life, you likely aren’t going to come close.

That’s not to say practice isn’t vital. It is. It helps you improve your skills and gives you an edge over people with similar talent. Without it, you’ll squander your raw talent and achieve nothing. But sadly, practice alone won’t let you beat those with much greater talent.

Trying to Be a Good Writer

You may have noticed my choice of I words above – an “alarming” suspicion. Why alarming? Because if my analogy is correct, then I fall squarely into the average category. To be a master writer, not only would I have to write interesting things (ala Paul Graham) but I’d also have to produce them with much greater frequency than the average writer.

I actually do consider myself a good writer (then again, what else am I going to say on my blog?) although of course by now you’ve come to your own conclusion. Back in my younger days, I put writing down as one of my skills when preparing for my first job performance review at Environ, an environmental consulting firm I worked at. I figured that might be a bit boastful – but little did I know that I had doomed myself to a 30 minute dress-down as to why I was wrong. And looking back, rightly so. Environ’s business was, and still is, creating impartial documents that evaluate the health and environmental risks posed by chemicals, food packaging, superfund sites, industrial sites, etc. These documents are required by local, state and federal regulatory agencies and can make or break business deals. Clients pay tens of thousands of dollars for them – so they have to be clear, fair and defendable in court.

Since then, my writing has gotten better (practice, practice, practice) and I’ve gained a more nuanced view of my abilities. My real strength is editing – I can almost always improve drafts that people send me. And I’m good at creating/editing technical and scientific documents. But after that my skills start to fall off. In particular, and as I mentioned above, my achilles heel is my writing speed.

Program Like You Write

I program like I write. Which means I figure out roughly what I want to achieve in my head or on a whiteboard, and then I create a first cut of it. That inevitably exposes parts of the problem that I didn’t see, which in turn leads to major revisions in my proposed solution. And then I repeat the process over and over until I’m happy with my final solution.

Its a ghastly inefficient way of doing anything, but that’s how my mind works and I’ve come to accept it. But it doesn’t work as well for writing as programming, because I have a harder time figuring out what I want to write. In fact, when I’m suffering writer’s block (I rarely suffer programmer’s block, although it happens), the only solution I’ve found is just start writing something – anything. After a few hours, or sometimes days, something will emerge out of my muddled thinking. The end result is that writing requires more iterations because I’m less able to see the solution before starting.

I wonder if other people program like they write? Is the same part of the brain involved in these two creative processes? Or do I have two parts of my brain that like to approach problems in the same way? Or is it some combination of the above? I’d love to hear other people’s experiences.

The Final Score

To finish, let’s tally up the final score. This was a particularly painful post to write – it took roughly 7 hours to write over the course of a week. Why did it take so long? Because it took 3 major revisions to figure out what I wanted to say. And even now, I’m not particularly happy with it. But I think its good enough to post, and there are other more pressing matters at hand.

  1. Regina Obe
    August 2, 2007

    Interesting questions. I’m just starting out, but I would see it probably takes me about 3 iterations for a fairly length blog. Not sure how many hours that is, probably 4. But then I tend to blog about programming.

    As far as Paul Graham is concerned. I haven’t figured out if I like him or if I find him to be an obnoxious person. I find his elitism to be extremely annoying at time and it seems to detract a bit from reading his works. Nevertheless – I still read his blog just because he does writ well.

    I think in the end just like programming the more you practice, the better you get.

    Reply
  2. Stephan
    August 2, 2007

    I think the analogy between programming and writing is quite valid. Without actually doing it, you won’t learn either. And the longer you do it the better you (usually) get.
    Look at what you consider to be a very good piece of code you have written: How many redesigns, changes & refactorings did you apply before the code became what is is now? I tend to think that the good thing is, that you can actually get that number (provided you’re using a version control system).

    I’d like to know how often well known novels have been rewritten (likely involving some kind of pressure from an editor), before they went to press…

    Reply
  3. Charlie Savage –
    August 6, 2007

    Hi Stephan,

    The story that always amazed me is that Gabriel García Márquez wrote [One Hundred Years of Solitude](http://en.wikipedia.org/wiki/One_Hundred_Years_of_Solitude) in his head and then sat down one day to write it out on paper. I don’t know if that’s really true, but it came from one of my professors so at least the source is fairly reputable.

    Interesting point on tracking changes using a version control system. It would be a little hard since some changes are adding new functionality as opposed to making existing code “better.” But you’d get a pretty close estimate.

    Reply
  4. Charlie Savage –
    August 6, 2007

    Hi Regina,

    Four hours for a long blog – that makes me feel better 🙂

    I like Paul’s writings because he’s a good writer and he makes me think. He usually has a different view point, or unique insight, than I do into a given issue/problem. And whether you agree with his viewpoint or not, its almost always well supported.

    Reply
  5. August 7, 2007

    We all code differently. What a Lisper would express in an essay, an APLer would probably express with a paragraph, a 3×5 table, and a Leibniz quote. A perl hacker might offer up a comic, and a Forth fan would consider the whole thing a waste of ink.

    Reply
  6. Robert Berger
    August 22, 2007

    Well, you should know that your writing is appreciated and I consider it very well done.

    I also appreciate your honest description of your process.

    And in any case at least you are writing!

    Reply

Leave a Reply

Your email address will not be published.

Top