synaesmedia

Programming

I'm a programmer. Programming is my profession (when I can get paid for it) and my passion (it's my philosophy, my artistic medium and my torment). I've been programming for (gulp!) nearly 30 years. (I started young) And what I now know is that I'm still not good enough at it.

I mean, I'm not bad. I'm better this year than I was a couple of years ago. And better then than a few years before. And a hell of a lot better than when I came out of college and still had difficulty with dynamic memory allocation in C.

But to be really "good" ... to catch the essence of the thing ... that takes more than a lifetime. Programming is poetry, philosophy, architecture and music, all at the same time. Superficially, it's about nothing more than giving orders to computers. But it's also about the ''expression'' of those orders. How do you effectively, economically, beautifully describe to a computer what you want it to do? How can you explain how the world is, sufficiently well that the computer can make sense of it? And because computers are themselves defined by programs, not only are you faced by trying to give orders to it, and to explain the world to it, you're also engaged in defining what the "it" is such that it can receive and understand the program.

As your programs expand, their architecture becomes more important. A program can be as massive and heavily inert as a stone edifice. To make one elegant enough not to collapse under its own weight, you must learn the tricks and patterns of the architects.

And like a building, a program is increasingly a space within which people have to live. It should be as comfortable as home; conducive of work or play. It should not be an eye-sore. Nor a finger-sore. Bad buildings stick a fake facade on an ugly shed and bad programs treat user-interface as contingent spray-on. Finally, like great buildings, it should not be so over-specialized that it becomes disused nuisance, the moment the patterns of life change around it.

But despite their solidity, programs are made of nothing but ideas in flux. Like music they are liquid performances within which computer resources are orchestrated. Increasingly, programming is composition for multiple players which must be kept in time, and harmonise beautifully.