Over the last couple of weeks I’ve been reading Paul Graham’s book Hackers and Painters: Big Ideas from the Computer Age, a published collection of his online essays, which I recommend very highly.
Now, I’m a poor programmer, but one of the (many) compelling aspects of the book is the way it connects programming to other creative endeavours such as writing or (as in the title) painting.
On the train to work today, I read the following passage (from a slightly altered essay originally posted here) and it seemed like some very fine advice, for coding, for writing and for creating generally:
“The best writing is rewriting,” wrote E. B. White. Every good writer knows this, and it’s true for software too. The most important part of design is redesign. Programming languages, especially, don’t get redesigned enough.
To write good software you must simultaneously keep two opposing ideas in your head. You need the young hacker’s naive faith in his abilities, and at the same time the veteran’s skepticism. You have to be able to think how hard can it be? with one half of your brain while thinking it will never work with the other.
The trick is to realize that there’s no real contradiction here. You want to be optimistic and skeptical about two different things. You have to be optimistic about the possibility of solving the problem, but skeptical about the value of whatever solution you’ve got so far.
People who do good work often think that whatever they’re working on is no good. Others see what they’ve done and are full of wonder, but the creator is full of worry. This pattern is no coincidence: it is the worry that made the work good.
If you can keep hope and worry balanced, they will drive a project forward the same way your two legs drive a bicycle forward. In the first phase of the two-cycle innovation engine, you work furiously on some problem, inspired by your confidence that you’ll be able to solve it. In the second phase, you look at what you’ve done in the cold light of morning, and see all its flaws very clearly. But as long as your critical spirit doesn’t outweigh your hope, you’ll be able to look at your admittedly incomplete system, and think, how hard can it be to get the rest of the way?, thereby continuing the cycle.
I have had several conversations with younger colleagues recently who are at various stages of their dissertations or post-docs. And, really, apart from my own patented advice (which has gotten me through three books), this seems like something worth imparting.
Now, I’m off to get back to my worrying…