Poetry is Art. Wat?
I see a growing tendency in the programmer community to call programming “an art”, compare it to poetry (and subsequently programmers to poets and code to poem) etc.. It’s been even supported by many authorities in programming community, like Dave Thomas, which really makes this notion one big WTF. Stop that. Despite its obvious masturbatory value (OMG I’m a poet), it’s simply not true. There is one big similarity, but the one just-as-big difference makes this comparison pretty much worthless.
Let’s start with defining two qualities of art. First, the definition of art itself — or, actually, my own definition (that got me into many arguments actually) for the purpose of this post. Short version: art is “a craft with a personal twist”. The long version: art is a craft used in a irreproducible way to express its author by creating something. The “irreproducible” part is simply tied with the creative aspect that no computer or other, whatever-skilled human can reproduce, given the same conditions — because computers are totally non-creative, and humans are actually tied to their own expression and creativity.
Or because, simply, there’s no process in art. You can dismantle what we all call “creating”, but at some level you finally reach the “think out something”, maybe in a loop of “think out, check, correct or move on”.
And yes, that definition — or understanding — of art got me into many arguments, because simply defining art as creative expression (with craft thrown is) basically rules out instrumentalists that are called “artist” because of simply replaying classical compositions. So yes, using this definition, for an instrumentalist to become an artist would mean writing something new (and pushing the music forward) instead of competing with a MIDI sequencer.
The second quality of art is that while there’s no defined process (as stated above), there are also no objective measures of judging a quality of given piece of art. It’s so subjective it’s actually pointless to judge (maybe only for the sake of recommending finely-crafted art to people with similar taste). You can judge the “craft” part, or how well the artist performed from a technical standpoint (that’s the part computers are capable of doing, like with MIDI sequencers), but the “creative” part will be taken differently by different people. Some people say music is resistant to that, but that’s not true (given the music satisfies some elementary senses of harmony and rhythm) — my father wants to leave the car when I put Bury Your Dead latest album and I don’t want to drive if he’s going to put his country stuff (and we find a common ground in 70’s hard rock). And Dali is waaaay better than Picasso.
Programming is Engineering (yeah, shocking)
Here’s the surprise. The no process part applies to many fields of science and engineering, where any process — no matter how well defined — ends wherever human creativity can (or has to) start on the design level. Architecture? Maths and physics? Any machinery design actually? So, provided you’re really doing any creative stuff when coding (and you do, unless you’re a code monkey), there’s really no difference between your creative programming lack of process and other engineer’s creative/design phase.
So why other engineers don’t call themselves poets?
The second quality is where we, engineers — and, specifically, programmers — are different from artists. Writing software is similar in the first quality — whatever methodology you apply and put a programmer into, he still at some point reaches the “think out code” stage and is on his own. But the second quality, the judge-ability of a given piece of software is actually pretty well defined and measureable, at least to some extent: does the code work as expected and is without bugs. This is engineering — you create something that actually works in a deterministic, repeatable and measurable way (hey, it’s even science!). This is not poetry nor art, as their results (i.e. impression) aren’t repeatable across population and depend on personal taste. Do you like Bury Your Dead? Because I sure do, but I doubt 100% of people reading this post do as well.
That’s why you, fellow programmer, are an engineer — not a poet. If you want to be (what for, to pick up jailbait?), go write some actual poetry. And then claim no-one understands you etc. etc.
One Last Myth To Crush
I know what you think: Dave Thomas, while comparing programming to writing poetry, used also the example of starting with a blank piece of paper or blank page in a text editor. And then creating something. Like, wow. Tabula rasa, creation from nothing and all the other shit.
My girlfriend’s an architect. Guess what she’s starting with? That’s right, a blank white sheet of paper. Or blank black workspace in AutoCAD. And she’s also creating something. But how come she’s not calling herself a poet?
Oh, I know. Us, poet-programmers, create some working thing from nothing, while architects create just a design, a set of data for the actual builders to use for building the house.
BS, yet again. We all just create some sets of instructions in a given domain-specific language. Architects use lines and symbols for their language, we use sets of statemens from programming languages. Our whole creation is non-existent and totally abstract without something that makes a real, working thing out of what we write: bricks and builders for architect’s project, compiler and computer for programmer’s code.
Don’t worry. You can live without being a poet. You still can pick up chicks at bar, just use some less-cheezy lines than calling yourself a poet (or “code poet” — unless you write in Haiku).
Just throw away that old dirty scarf.