While working on some Solaris 10 security recently I ran into an interesting article on the Sun site called The Poetry of Programming, which is an interview with Richard Gabriel, Distinguished Engineer at Sun Microsystems:
Writing software should be treated as a creative activity. Just think about it — the software that’s interesting to make is software that hasn’t been made before. Most other engineering disciplines are about building things that have been built before. People say, “Well, how come we can’t build software the way we build bridges?” The answer is that we’ve been building bridges for thousands of years, and while we can make incremental improvements to bridges, the fact is that every bridge is like some other bridge that’s been built. Someone says, “Oh, let’s build a bridge across this river. The river is this wide, it’s this deep, it’s got to carry this load. It’s for cars, pedestrians, or trains, so it will be kind of like this one or that one.” They can know the category of bridge they’re building, so they can zero in on the design pretty quickly. They don’t have to reinvent the wheel.
But in software, even with something such as Java 2, Enterprise Edition or the Java implementation (or almost any of the APIs we define), we’re rolling out — if not the first — at most the seventh or eighth version. We’ve only been building software for 50 years, and almost every time we’re creating something new. If you look at software developers and what they produce, if you look at their source code, the programs they make, and the designs that they end up creating, there is real variability. And some people are really good and others are not so good.
True, but that is also because software is not heavily regulated or disciplined. Not just anyone can be hired to build a bridge that millions of people will cross in the material world, but on the Internet people who are idealists and hacks can throw anything up and people will use it. I am not being critical of the latter situation, just pointing out that there is a much lower hurdle and so nothing to require the study of prior bridges (and their failures) before building another one. This is further compounded by the intellectual property movement that restricts source from view, whereas every inch of a bridge can be studied in detail.
Writing code certainly feels very similar to writing poetry. When I’m writing poetry, it feels like the center of my thinking is in a particular place, and when I’m writing code the center of my thinking feels in the same kind of place. It’s the same kind of concentration.
Ah yes, the same for all aspects of information technology. Poetry is mastery of a discipline. You might say Microsoft software, thus, is like supermarket checkout tabloids — all glam and glitz and very little to hang your hat on. We already look back at Windows 9x and agree, even Microsoft, that it was a train-wreck of an operating system. And for what it’s worth I met with Microsoft the other day for another review of Vista and a new browser that I’m not even allowed to give details on…let’s just say that some of their developers clearly don’t practice the poetry of programming.