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
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
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.