Creative programming

I really like Richard P. Gabriel’s presentation “Triggers & Practice” (available here), where he compares software development to creative writing.

Creative writing is, he begins, “unquestionably a creative [and] social activity”. It is “about building a literature [and] about exploration, discovery, and learning”. It “requires practice [and] understanding specific craft techniques” and, finally, it is “risky business”. As for software development, it is no doubt a creative and social activity involving exploration, discovery and learning – and who would say it isn’t risky? But what about practice, software development as a craft, and literature building?

In this presentation (as in his Mob Software essay) Gabriel argues that software needs a literature. Maybe, he writes, “learning to write software takes [...] having a literature available to read and critique”. I’m convinced that a literature of code, consisting of large applications and systems, would be of immense benefit to the quality of software development.

As for practice, my impression (as an autodidact) is that computer science students seldom engage in but small, one-person projects during their education – and definitely not many such projects. Imagine a writer’s school where you didn’t get to practice – or, for that matter, where practice wasn’t the bigger part of the education.

If there were no such thing as “closed source” – if you couldn’t ship software without its source code – I’m positive that more effort would be put into writing elegant, clear code that clearly expresses its concepts and intentions. Today, what matters is getting the software to work (at least for the moment) – it’s the equivalent of writing stories such as:

Well, there was this guy, you know, and he met some other guys (they didn’t have any money) and they decided to, I don’t know, to do something about this problem so they robbed an old lady and took off in Jeff’s old beat up van. Then they got out of prison (the police caught them, of course) and while in prison they realized that it was wrong to rob that old lady and take off in Jeff’s old beat up van (after which they got caught by the police) ...

To many involved in software development, it doesn’t matter whether the code speaks clearly about its purpose to the next programmer that’s about to work on it – or to the original programmer, when he (or she) returns to the portion of code after a few months or years, and can’t understand what he were thinking of as he wrote those lines.

I also like his thought that the twelve practices of XP have things in common with the “principles and approaches of a fine arts education” (such as creative writing). I’ll get back to this.

The above was posted to my personal weblog on November 3, 2002. My name is Peter Lindberg and I am a thirtysomething software developer and dad living in Stockholm, Sweden. Here, you’ll find posts in English and Swedish about whatever happens to interest me for the moment.


Related posts:

Posted around the same time:

The seven most recent posts:

  1. Tesugen Replaced (October 7)
  2. My Year of MacBook Troubles (May 16)
  3. Tesugen Turns Five (March 21)
  4. Gustaf Nordenskiöld om keramik kontra kläddesign (December 10, 2006)
  5. Se till att ha två buffertar för oförutsedda utgifter (October 30, 2006)
  6. Bra tips för den som vill börja fondspara (October 7, 2006)
  7. Light-Hearted Parenting Tips (September 16, 2006)