In my writing studio recently, a grad student spoke about finding motivation to return from coding to writing his dissertation. My colleague opined that he while he certainly could write for long stretches, (as it turns out, he write beautifully), that before long, the time to code would come again. He’d drop the writing, move to coding, and the writing groove would be lost. It seems to me that it need not be that way. Writing and coding don’t have to be mutually exclusive events.
Have you ever picked up a piece of code without comments, without a specification, or without a detailed guide for its use and upkeep? Have you ever not? Writing about our work is one of the most powerful, most life extending things we can do for a piece of code. We start in our coding classes with professors that urge, ney, implore us, to somehow document what we’re going to do before banging out the real deal. Plan your work they say; document by commenting they say; write a document that describes what your code should do; for God’s Sake, use pseudo-code if you must, but write! We all listen attentively, and then begin coding the small projects assigned in earnest. It all fits in our head, why should we write it down. Even if it’s a relatively large project, we can still usually push ourselves and get our mind around the whole thing at once. It feels good, it’s like flexing a muscle. It’s like the feeling you have after a long day of manual labor. You did something; you stretched yourself; you beat the odds.
Ayn Rand memorialized this feeling in her book “The Fountainhead”. She describes Howard Roark taking the simplest building jobs during the summers he spent away from architecture school. She describes the beauty in the task. This is how I see people in our trade when we heft a large piece of a coding project and force it to our will.
“The Dean had seen him, last summer, on his vacation, catching rivets on a skyscraper in construction in Boston; his long body relaxed under greasy overalls, only his eyes intent, and his right arm swinging forward, once in a while,expertly, without effort, to catch the flying ball of fire at the last moment, when it seemed that the hot rivet would miss the bucket and strike him in the face.”
Rand’s romanticism of work doesn’t stop with the line worker though. She also describes how Roark took this knowledge and used it to inform and inspire his bigger dreams. How he was able to plan whole buildings that fit together seamlessly; how he was able to draft plans as exquisite pieces of art that not only informed builders how to construct each part of the structure, but also fed their souls.
What she’s describing is what I believe we as designers and builders of code should aspire to. The ability to walk from the trenches, to write what we’ve seen, to create a document that tells others how to follow in our footsteps. There are plenty of chances for writing in the coding arts. If you’re in the trenches, write comments about what your code does. Write about why you made one decision instead of another. Write about how the blocks of your code fit together and how they allow for expansion by developers in the future. Let your code blaze a trail in front of you and your documentation serve as a map for others to follow.