|
Humour
The artist as a programmer
T A Balasubramanian on why one should figure out programs
while writing them, just like inspired painters and architects
I
do not compromise with my programming because I am artist, and artists never
compromise, says Brooke Bond, loftily, folding his arms and looking down
at his audience of two.
You, Papyrus Bytewala, the perpetually troubled CIO of Baffle Corporation, are
sitting at the usual large round conference table facing Bond, your intrepid
Project Team Leader. Seated next to you is Danny DeVito, your biped humanoid
CTO.
With an inward groan, you trace the developments leading up to the present face-off
in a quick flashback. In his considered wisdom, Biswajeet Baffle, your CEO at
Baffle, has saddled you with a humanoid CTO possibly because he thinks you cannot
keep pace with the dizzying advances of technology without an artificial aid.
As it turns out, DeVito seems to need updating himself, given the requirements
of becoming adapted to Baffles quirky corporate life. So here you, educating
DeVito on the art of surviving the slings and arrows of the IT battlefield.
This session with Bond is intended to get DeVito up to speed on the murky inside
workings of the computer programmers brain. Or at least what Bond interprets
it to be in his own irrepressible fashion.
Thats interesting, says DeVito, An artist, eh? Like
a man with a brush and paint?
Something like that, yes, says Brooke. I like to start off
like a painter, with an empty canvas, and fill it up with my imagination.
You would, of course, you say, with a sigh. Most of us from
the conventional school have been taught to figure out a program completely
on paper before even going near a computer. It is more of a science, Danny.
If I recollect my early days, it was all about getting your program logic impeccable,
clean and error-free. Debugging, I was taught, is a final acid test where you
caught typos and oversights. It polishes your code, making sure that it works.
This is too disgraceful, says Brooke, shaking his head. The
way you put it, it seems that the high point of programming consists of debugging,
Papyrus. I do not program this way. I like to program sitting in front of a
computer, not scratching on a piece of paper. Whats more, I detest doggedly
writing out a complete program and picking the bugs out of it to assure myself
that it is correct. That makes me feel like a nit-picking mechanical monkeya
humanoid.
Hey, watch your analogies, pal, says DeVito, smouldering. I
have feelings here in this tender nit-picking heart, you know.
What I like to do is to just churn out code as it comes into my head,
even if it is hopelessly messy, and gradually beat it into shape, says
Brooke, unapologetic as ever. Now if you closely observe other creative
geniuses at work, the painters or the architects, you will realize that there
is a name for what I doit is called sketching. As far as I can tell, the
way they teach programming conventionally is disgraceful. You should figure
out programs as you are writing them, just as painters and architects do. Mess
around, experiment, do things that you cannot imagine beforehand.
Well, that sounds exciting, says DeVito, That is what actors
are encouraged to do.
Yes, but actors have a script to follow, Danny, you say. You
can mess around and experiment, but only to the extent that the script allows
you to. So let me put it differently. I believe that computer programming ought
to be more like brick-and-mortar architecture, you say, before Brooke
can respond. The vast majority of buildings are just functional buildings.
But every once in a while, a building comes up as a work of art. It dazzles
you and makes you want to know who created it. Ah, now we are talking
of the true artist, says Brooke. The buildings that dazzle, those
are the only kind that ought to be allowed on the face of the earth, because
they are crafted by artistic geniuses, says Bond, snapping his fingers
for emphasis.
Hear me out, Brooke, you resume, patiently. One of the things
I like about architectureand, by analogy, about computer programmingis
that a building always serves a purpose. It does not arise out of a blank canvas
in a riot of colour to express a purely abstract thought. It is grown quite
intentionally from the need to create something useful. But you cannot delude
yourself by thinking that you are an artist just because you are a computer
programmer. The vast majority of buildings are ordinary cinder-blocks, minimum-cost
affairs, and the same is true for program code.
You accept too much of the ordinary, and what do you get? fumes
Bond. You get drab cities full of identical brick structures. I say programming
should be treated the same way as great architecture. Maybe it is drab and functional
by nature, but you must turn it into an art. Maybe he has a point,
Papyrus, says DeVito, grinning. You tend to be too much of a monotonous
brick yourself. I will ignore that remark, Danny, you say,
gruffly. But I must remind you that one can make just about anything into
an art with enough creativity. I can see how you might think programming could
be an art without doing anything special, but you have to have your feet on
the ground.
Even in the art world, you do have two polesthe humble craftsman
and the genius, says Brooke, raising a stiff finger. On the one
hand, you have Happy the Housepainter, and on the other hand you have Michelangelo
the Maestro. They both apply paint to surfaces, and even though Happy may be
en exceptionally good housepainter, he will never be an artist of the calibre
of Michelangelo. He will be a mere craftsman. And since there are a lot more
housepainters than artists, it is easier for one to be the former. So, too,
there is a great divide between the personas of the pedestrian coder who likes
to debug his undistinguished programs, to the great rare artist like me, who
likes to dream of perfection. You wonder if this outrageous puffery will
be a bad influence on DeVito. But you soon realize that your humanoid CTO has
more skills in navigating through the murkiness of human character than you
had imagined. Of course, Maestro, says DeVito, winking so that only
you can notice. So what does perfection look like in code?
Like beauty, it is in the eye of the beholder, says Brooke. Designing
a complex system looks to an outsider like merely writing one line of code after
another. It is only when you step back and see how the lines of code merge into
a subroutine, and subroutines merge into magnificent modules, and these modules
get woven together to become a useful system that you can see the work of art.
One square blob of yellow paint is not art, and yet that square in the middle
of one piece in a series of paintings on a theme becomes a masterpiece.
Well, Brooke, your devotion to artistry is unquestionable, you say,
in a mollifying tone. After all, it would do no harm too keep an artist in his
own cloud. I can see how elegant a system program that you code can be,
especially when compared with the heavy-handed coding found in some othersthe
brick buildings. Some of your programs are elegant, some are exquisite, some
are even sparkling, I admit. Hey, thanks Papyrus, says Brooke,
taken aback. I had no idea that you noticed them. You have
this glowing halo of hubris over your head, Maestro, says DeVito. How
could anyone miss it?
|