According to sitcom stereotypes programmers are overly logical nerds with poor communication skills and writers are Bohemian poets with a phobia for math. The reality is that these groups share a lot of unrecognized similarities when it comes to the work they do and how they do it.
Writing and programming are fundamentally creative fields that require long, uninterrupted stretches of time. For both they begin with a vision of what they want the final outcome to look like and they require the help of an editor to get there.
Understanding the similarities will help both writers and computer programmers better understand the nature of the craft so they can improve the quality of their work.
Long Blocks Of Uninterrupted Time
Both writers and developers need long periods of uninterrupted time to do their jobs to the best of their ability.
This is an observation first made by Paul Graham in his essay, Maker’s Schedule, “there’s another way of using time that’s common among people who make things, like programmers and writers. They generally prefer to use time in units of half a day at least. You can’t write or program well in units of an hour. That’s barely enough time to get started.”
This is because the creator (both writers and developers are “makers”) and the manager Graham compares here work in different modes. The creator’s mode requires uninterrupted support that the manager doesn’t. Graham explains:
“If I know the afternoon is going to be broken up, I’m slightly less likely to start something ambitious in the morning. I know this may sound oversensitive, but if you’re a maker, think of your own case. Don’t your spirits rise at the thought of having an entire day free to work, with no appointments at all?”
This is because it often takes a very long time to get into the creative zone where the best work comes from. In this sense it’s a lot like sleep. The truly restorative sleep takes a long time to approach and if you’re constantly interrupted on your way then you’ll never get there.
The process starts with a vision
The clearer your scope and focus, the better the end product will be. Part of the process – and what makes these activities challenging – is balancing planning and reflection with execution.
Unlike other creative fields, writing and programming involve constant iteration where the structure of the piece and the exploration of the creator constantly loop to make the piece better.
For the creator the final piece feels like it emerges as the journey of creation unfolds. To reach mastery in either field means performing well within deadlines and for each they develop an intuition for the right place to begin and how long a piece should take.
As you execute, you’ll have realizations that impact your understanding of what you need to create. The process of writing is, as author and writing professor Kim Edwards says, “a process of discovery– there’s a constant interplay between the imagining and shaping of the story.”
Refactoring = Editing
“You write your first draft with your heart, and you rewrite with your head.” – James Ellison, Finding Forrester.
If you want to write or program poorly then only use one side of your brain. To write well or create great code you need to use both sides of your brain. First you need to get in the flow and create. In this phase you have to switch off the part of your brain that wants to edit.
In improv there’s a warm up game called “Yes and…” where you accept any suggestion. That’s because creativity needs room to fail for it to have a chance to succeed.
The purpose of the game is to keep your mind open and malleable so great ideas can come to the surface. Counter-intuitively it prevents you from trying to be clever by forcing you to stay in the moment.
The goal of writing or programming is to have a polished final piece whereas in improv the process of creation is the piece itself and no two performances are ever the same (or should be).
That’s why editing is a key part of the process for writers. The equivalent in programming is code refactoring code. This involves simplifying and reducing to make the piece clearer and more efficient. That’s what the quote, “If I had more time, I would have written a shorter letter” by Blaise Pascal alludes to.
In writing this is when “waffle”, “padding” and purple prose is removed. The programming equivalents are “buggy” or “spaghetti” code with “bad hygiene”.
In both disciplines the editing takes place in a separate, later session so the creator can look at their work with fresh eyes.
Collaboration Makes It Better
Writers have editors and programmers have both colleagues and QA. The value of the editorial role is less recognized in the world of developers than it is in the world of writing. Pair programming (where two developers write code together on the one computer) has become more popular with the rise of agile software development.
Getting constructive criticism isn’t usually fun but it’s extremely important and improves the final product. Instincts and intuition are also important in both professions. A more seasoned professional will spot deeper errors and opportunities than a novice. In programming this is called “code smell“.
These two creative pursuits share a lot of similarities but it’s also worth acknowledging the key differences.
- Development work is usually more utilitarian than writing. Rarely do programmers write for the joy of writing.
- Computer programs can be beautifully written but that beauty is only accessible to other trained computer programmers.
- Writing that’s 98% correct can be published without any urgency to improve or revisit. Code that’s 98% correct is broken and needs fixing now.
- Writers control the reader’s environment far more than developers do. Developers have to worry about what device the user has, their browser type and so on. Writers know the format ahead of time and focus on only one medium (newspaper, novel, etc).
Many developers don’t naturally think of themselves as having good communication skills or an ability to write. It’s an assumption many programmers are beginning to revisit thanks to writers like Paul Graham and Ben Horowitz.
Combining a technical mindset with an ability to effectively communicate is what differentiates a strong programmer from a strong technical founder. There are no great technical founders who cannot articulate their vision well.
Now you tell us — what similarities have we missed?