Cover V05, I06


Editor's Forum

Perhaps this magazine shouldn't be quite so narrow. Perhaps we should address some broader issues -- maybe something like religion?

Webster hasn't called me for my contribution, but if he (they?) did, I'd probably define religion something like this: Any set of beliefs that one is willing to accept as absolute truth.

Admittedly, that's an overly broad definition and doesn't require the involvement of a supernatural power, but I like it. You could even complain that my definition is so broad as to give both the pious and the bigoted equal standing. You'd be right. As I said, I like it.

In its defense, my definition has a certain elegance befitting an engineer who always longed for the unattainable clarity of a mathematician, physicist, or philosopher. It certainly goes a long way toward explaining why certain technical discussions quickly assume the same emotional intensity that people usually reserve for issues like abortion or infant baptism. If the participants are discussing absolute truth, be it OOP or the birth of a soul, it's a religious debate.

Under my definition, everyone has religion; some just have "larger" religions than others. As a software engineer and a minimalist, I think a good religion ought to be like a good programming language: small, elegant, easy to understand, and highly expressive. Maybe that's because I'm cynical about absolute truth. The history of science is ripe with useful, widely held absolute truths that weren't quite absolute: Aristotle's air, earth, fire, water; Ptolomy's geocentric cosmos; and Newton's mechanics, to name a few. I think it's telling that while contemporaries treat those who question absolute truth as heretics, history accords them a special genius: Calvin, Copernicus, Rosa Parks.

But even if the underlying "truths" seldom turn out to be very absolute, the models or analytic systems built upon these truths can still be very useful. Is a straight line the shortest distance between two points? I don't know, but I know that familiarity with the properties of both Euclidean and spherical geometry can sometimes be very useful.

Is object-oriented design the saviour of software engineering? I doubt it. But I think OOP is a useful tool to add to one's working set. Should the curly brace be on the line with the if or by itself on the next line? I don't know (or even care -- after all, there are pretty printers). I guess I just don't have enough religion.

As an engineer, my defining truth is this: it's all a matter of choosing a tradeoff point. You can borrow from all these religions to evaluate the consequences of a given tradeoff or to facilitate an implementation that reduces certain costs, but ultimately, you are just selecting from a set of tradeoffs. In fact, sometimes I think life is just one big engineering project. You never obtain perfection, you just balance the tradeoffs.

But then again, there are those I know and trust who maintain that everything is marketing. Could be.

Sincerely yours,
Robert Ward