I bought Stephen King’s On Writing: A Memoir of the Craft the other day, but as an Audible.com audio book (although I think that their license could be a tad more generous).
I really like what he says about writing as a process of discovering something that’s already there; as digging it out of the ground. He doesn’t develop a plot, but begins with a situation and examines it. As he examines it, the story unfolds – and to me this means that his intuition guides the story; his intuition defines the boundaries of what would work. King uses the word “truth” frequently, to describe stories that work, that are felt to be real. To develop that intuition, you need to read a lot of books, and also write (practice).
Currently, he talks about the revision process. Previously, he talked about themes, symbolism, et cetera, as something that you can’t start with up front; you can’t begin with a theme, or a message, and build a story around it – at least not according to King. Instead, he says, you can look for a theme, or recurring symbols, as you revise your first draft. Then it can be further developed, but if it isn’t already there, you’d better forget about it.
Before revising the first draft, he says, you need to leave it alone for a while. He recommends about six weeks, and during that time you must resist the temptation to read it – even a little of it. When you finally do read it, you’ll often be surprised; it’s as if reading something written by somebody else.
As I started my Irrational Software weblog, I didn’t know what would become of it. I first intended to copy all posts about software development, and then post such things there, only – perhaps summarizing them here. I thought I’d only fix bad markup and spelling, but as I transferred bloggings there, I began to edit them more heavily; merge posts, et cetera. After a while, it felt wrong to retain the original dates they were posted, as the posts had turned into something slightly different as they were transferred.
Finally, I began to think of it as a “post blog” – a weblog where I can revisit and revise old ideas. Looking back at old posts has been a mixture of feeling disgust at things that I was very excited about as I posted them, and seeing that some things are pretty good – actually far better than I thought I was capable of. It seems obvious that you must let them rest to be able to tell the difference between crap posts and good ones.
Stephen King rejects the notion of the writer as someone who creates in moments of inspiration. To him it’s work: you go to work at the same time each day, and don’t quit until you have met the daily quota (he recommends beginning writers to start at a thousand words per day, and rest one day per week; if you rest more, you will lose momentum). This reminds me of what Gail Sher writes in One Continuous Mistake (which I blogged a lot about; see the Google hits), although she puts the emphasis on attendance, and says that if you can’t write, then write about not being able to write.
But while King rejects the inspired creator idea, he does stress the importance of secluding: Work with the door shut, he says, and don’t show your work until the second draft – and then only to specially selected people. Sher also writes about feedback from others, and how you shouldn’t show your writing to anyone prematurely; she also talks about having someone who knows how to deliver critique (I believe she called them “writing parents”). This, and what King says about stories that unfolds if you carefully examine them; intuition, et cetera – clearly indicate that writing is far from a rational process.
Software development is admittedly very different from novel writing, but it is indeed about discovery and creation. Today I read Richard Gabriel’s Repetition, Generativity, and Patterns (which I warmly recommend), where he says that “Software engineering is not yet engineering and won’t be, cannot be, for decades if not centuries, because we cannot yet recognize the important, repeatable parts. When we do we will have patterns – recurrences, predictability.”
Gabriel also says that “in the absence of […] repetitions, recurrences, every step of the way for the individual is invention and creation.”. In other words, until we have identified all the patterns that we need to be able to just select the appropriate patterns in developing a piece of software, it is bound to be about invention and creation. Discovery will always be part of the game, I believe. So in my opinion, it is asking for trouble to regard software development as something rational. You will run into problems, and as you don’t realize that software development is far from a linear process, you won’t understand the problems. You will attempt to remedy them with ever more strictness and rationality – approaching step by step; estimating and documenting those estimates; constantly checking how the project is progressing according to those estimates, and so on.
And software will continue to be in trouble.