we talk about programming like it is about writing code, but the code ends up being less important than the architecture, and the architecture ends up being less important than social issues.
Evan Martin, The Success and Failure of Ninja
Speaking as a functional programmer:
The designers of object-oriented languages weren’t idiots. They were
developing new and expressive approaches to the task of encapsulating
state behind the interface of functions. It does no one any good to
pretend that there’s no use for object-oriented programming
.
Paul Graham has an idée fixe somewhere in the area of the Hacker as solitary artist, visionary, creative. I disbelieve anything PG says as a matter of principle. Maciej is a more reliable source when it comes to painting.
And yet. Surely there is a fundamental creativity when it comes to
programming
.
I experience inspiration, certainly, and the lack of it.
I experience a degree of creative fulfillment comparable to what I get when I compose music or poetry.
I experience aesthetic pleasure when I write good code, and use an aesthetic, intuitive sense to guide me in the code I write.
So, it’s not a dead, mechanistic art.
So let’s start with something that’s hard to dispute from Maciej:
So just like mechanical engineers and architects, computer programmers create artifacts that have to stand up to an objective reality. No one cares how pretty the code is if the program won’t work.
Thinking of mechanical engineers—or civil, really: did Isambard Kingdom Brunel design bridges for fun? That is, can we reasonably assume that Brunel ever designed a bridge because he felt like it, because he wanted to feel the pleasure of creation?
Almost certainly, yes. If I were Isambard I can only assume I’d be sketching bridges all day.
So then: did Brunel ever build bridges for fun?
Almost certainly not. A bridge is an expensive, rather large undertaking, that requires a lot of other people to make things or maneuver those things into place. And once they’re their they tend to be relatively difficult to unmake.
Maybe this points us in a smarter direction. Isambard Kingdom Brunel
was, I must simply assume, an inherently, maybe even brilliantly,
creative individual. The difference between programming
and
bridge-building—one difference between programming
and
bridge-building—is that the economics of programming
allow for a
practice of engineering as pure recreation and pure creation. The
use of the artifact—how it exists in the world and the function it
performs and maybe even the utility it grants others—is still
fundamental. But this too can be realized from a purely creative
perspective. When it comes to bridges, on the other hand, their nature
is also inherently creative; it’s just that the economics of them
and the rather ineluctable nature of constructed things to take up
space and impede the presence of other things prevents them in all
but the most extreme conditions from being purely so.