Creative programming (Irrational Software)

I really like Richard P. Gabriel’s presentation Triggers & Practice: How Extremes in Writing Relate to Creativity and Learning (PDF), 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 essay Mob Software: The Erotic Life of Code) 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; please correct me if I’m wrong) 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 didn’t constitute the larger 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 convinced 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 comparable with writing stories such as the following, where the only thing that matters is the scope:

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 of those involved in software development, it doesn’t matter whether the code tells the next programmer anything about its purpose – or the original programmer, when he (or she) returns to the piece of code after a few months, or years, and can’t understand what he was thinking of as he wrote those lines.

I also like his idea that the twelve practices of Extreme Programming have things in common with the “principles and approaches of a fine arts education” (such as creative writing).

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)