|
Humour
Batting for good software
T A Balasubramanian discloses the recipe for good
programming
Computer bugs can mess up just about anythingthey
have been blamed for missing homework, blackouts, prison breaks and even the
loss of multimillion-dollar space probes. But they are difficult pests to eliminate,
because doing so requires programmers to perform an elaborate detective investigation,
says Brooke Bond, your eloquent software project head.
You, Papyrus Bytewala, CIO of Baffle Corporation, are continuing to sit in on
a long lesson in the art and science of software design. The parties involved
are your CTO, Danny DeVito, and Bond.
And you rely on these very same programmer sleuths to get rid of these
bugs? says Danny, the biped humanoid, looking suitably astounded.
Yes, we do. It is like setting a thief to catch a thief, except that this
is not as certain to give you a catch at the end. A programmer on a debugging
mission is usually flapping in the air, hoping against hope that he might succeed.
He tries to make guesses about where the problem is, and most of the time programmers
guess wrong. Then they add new bugs because they were trying to fix something
that was not broken.
So all software turns into a can of worms? says Danny wonderingly.
Good
observation, Danny, you say. It surprises you no more to find a reflective
humanoid. Programming can be as much a creative work of self-expression
when you do it with an idealized dream world in mind, as it can be a mundane
code-monkey kind of work when you have to make it perform in the
heat and dust of the real world. Programmers are completely isolated from the
people they are trying to serve and, of course, they are colored by what they
know and what they like. For them, finding out the address of a division overflow
is exciting, but it never occurs to them that maybe ordinary people are traumatized
when their computer freezes and stops responding.
Ah, and these are the programmers who would consider themselves to be
invincibleeven though they know not what monsters they might unleash?
Hmm, quite so, says Brooke, with a sigh. They tend to have
very little humility, or even an iota of doubt. To paraphrase the writer Hardy,
good work is not done by humble men. It is one of the first duties
of a programmer to exaggerate a littleboth the importance of his subject
and his own importance in it. A man who is always asking Is what I do
worthwhile? and Am I the right person to do it? will always
be ineffective himself and a discouragement to others. He must shut his eyes
a little and think a little more of his subject and himself than they deserve.
This is not too difficult: it is harder not to make his subject and himself
ridiculous by shutting his eyes too tightly.
With all these shut eyes, what do we have here? says DeVito.
Maybe a little delusion, you say, looking pointedly at Bond.
Delusional, eh? What about all the thousands of lines of code we write
that work? How is it that nobody ever notices what works? What about all the
hard work we put in? Most of the civilizedand uncivilized, I might addworld
would not be functional around us if we, the brotherhood of programmers, did
not have a rare talent to do what we do unusually well.
A rare talent, no doubt, you concur, gracefully. But in the
exercising of that talent, does it not follow that you would also find the means
to connect with those whom the product of your exertions is aiming to please?
And to do it like a professionalby delivering the best?
By this time, Bond is in unstoppable flow. There is a reason why we want
to get to professional programming, so let me make my case here. Why is it important
for the man who can bat unusually well to become a professional
cricketer? It is, presumably, because those who can bat unusually well are in
short supply and so the few who are gifted with that talent should do us all
the favor of making use of it. If those whose judgment of the markets
is quick and sound become cricketers, while the good batsmen, instead
of wielding their bats, become stockbrokers, we will end up with mediocre cricketers
and mediocre stockbrokers. Better for all of us, is it not, if it be the other
way round?
So you are doing the world a favour by gifting it your talent in a shining
package that would otherwise find no worthy outlet? says DeVito, with
a serious face.
A little cynically expressed, but yes, that is what I do, Danny.
It amazes me that you would imagine that a scarcity of programming talent
would drive you to anoint yourself as a professional born to the task because
of some divine streak in you, Brooke, you say, gravely. May I point
out that it seems much more likely that talent is created through endless practice,
starting, of course, with a little natural spark available in the beginning?
Those who are good batsmen get to be that way after spending enormous quantities
of time doing batting practice as kids, and even as adults. You dont presume
that the gifted Don Bradman became what he was purely because there was a shortage
of batsmen.
Oh, but then, he was a genius, Papyrus, says Bond. And a genius
in a subjective field like batting where a good batsman might be good on some
days, but a great batsman, like Don, is good under any condition.
Ah, but there is a huge difference when it comes to programming, Brooke,
you say, smoothly. When you write a program, you normally have a definite
goal in mind, and the job is done when the program finally does what your hapless
client wanted it to do. Pretty objective. Batting, on the other hand, is totally
subject to random forcesas is the game of cricket, in general. No compilers
to tell you that you are missing a dot in line 42. I expect to find plenty of
bugs in the early stages of software design, but I am less inclined to accept
that a batsmaneven a good onehas a chance to make as many errors
when he steps up to the crease. A few lucky escapes, yes, but then, even if
he is a genius, his natural talent will do little for him unless he has practiced
his game.
Maybe, says Bond with a shrug.
The difference is that a batsman who is good 90 percent of the time will
still be a great player with incredible strokes that will wow the crowds, whereas
any program code that is 90 percent good is no good at all. So here is my recipe,
Danny. If you are driven to turn yourself into a great programmer, you have
to find that little spark which ensures that none of your projects become boring.
Then you put in the grunt work and see that you never allow your program to
provide surprises for your user because you were too busy nurturing your rare
talent with professional polish. All the great programmers I know seem to have
found that recipe. Maybe none of them would had tried it any other way.
I would like to try my hand with a bat, says DeVito, grinning.
|