Untitled Document
www.expresscomputeronline.com WEEKLY INSIGHT FOR TECHNOLOGY PROFESSIONALS
24 March 2008  
Untitled Document
Sections

Market
Management
Technology
Technology Life

Columns

Between The Bytes

Events

Technology Senate
Technology Sabha

Specials

HMA Bankbiz
UPS Batteries

Services
Subscribe/Renew
Archives
Search
Contact Us
Network Sites
CIO Decisions
Exp.Channel Business
Express Hospitality
Express TravelWorld
feBusiness Traveller
Express Pharma
Express Healthcare
Express Textile
Group Sites
ExpressIndia
Indian Express
Financial Express

Untitled Document
 
Home - Technology Life - Article

Humour

Batting for good software

T A Balasubramanian discloses the recipe for good programming

“Computer bugs can mess up just about anything—they 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 invincible—even 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 little—both 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 civilized—and uncivilized, I might add—world 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 professional—by 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 don’t 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 forces—as 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 batsman—even a good one—has 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.

 


Untitled Document

UNSUBSCRIBE HERE
Untitled Document
© Copyright 2001: Indian Express Newspapers (Mumbai) Limited (Mumbai, India). All rights reserved throughout the world. This entire site is compiled in Mumbai by the Business Publications Division (BPD) of the Indian Express Newspapers (Mumbai) Limited. Site managed by BPD.