Howardism Musings from my Awakening Dementia
My collected thoughts flamed by hubris
Home PageSend Comment

Programming Suicide

HAL-9000, that intelligent computer from 2001: A Space Odessy, kills its creators. I sometimes wonder if we software engineers don't do the same. Think about it… our goal is to have software systems so automated and efficient that its creator becomes unnecessary. We tend to program ourselves out of a job.

Maybe that is not completely true in the past, as we tend to enjoy inventing a new computer language and then convincing business and managers that our currently used code needs to be rewritten in this new machina du jour. But we've burned them so many times, they might not buy into another time.

How many times are we going to invent high-level data transport protocols? I remember studying ASN.1 that attempted to universally transmit data in an efficient and effective method. But after rolling our own, we came back to that idea, but this time we are going to use XML… where internal program data is streamed out in text and then converted back again. And then we complain about the speed! I'm surprised we haven't thrown away our DSL modems for analog-to-digital modems.

But assuming that we have plenty of opportunity to create and develop new things, I am surprised at how difficult we make things for ourselves. For instance, most of our computer language syntax have a character separating commands or statements (think of the semi-colon in C, Java, Perl and the like). We did this so that we could organize our code according to our own aesthetic tastes. But then we complain about the lack of similarity of code formatting among our peers and colleagues (yes, you Pythoners have solved everything).

In David Ng's article entitled, v 4.0 (in the May issue of The Believer), he suggests that perhaps we just want to raise the bar so high that it keeps out the uninitiated. He says:

Above all, programmers prize brevity--the ability to write a program in the fewest lines possible, an undeniable sign of a highly evolved mind. Real programmers love compact code that often verges on the hieroglyphic.

(This echoes Joel's recent point that has become so talked about).

To illustrate his point, David quoted a regular expression from Perl. QED. Perhaps I'm narcissistic or something, but I enjoy reading articles about "my world" that written for people in the "real world." I find articles like this one, or business reports about the money to be made from Linux or even 60 Minutes exploits about security vulnerabilities and viruses fascinating. Not for what they say, but how they are explaining my world to the common man. There is a gulf between us.

So I've also noticed that we not only burn ourselves and our business partners, but we also have disdain for the ultimate outsider-- our customers. We have this attitude similar to Howard Roarke, that architect in Ayn Rand's book, The Fountainhead, who only needs other people to give him enough money and opportunity to create and design. We need our customer's to buy our product, but heaven forbid we should design something for them.

One last self observation that David Ng also notices… Like American pop culture, age and perspective are not respected in software engineering. Perhaps it stems from the "duality of arrested emotional maturation and left-lobe overdevelopment," or perhaps its a by-product of our hatred for old (we call "out-dated") hardware.

Perhaps the source of all these conclusions are obvious. I mean, given an economy like America's where your business is dying if it isn't expanding exponentially, programmers must continue to re-invent their world to keep themselves employed. Eventually this dizzying roller-coaster ride begins to wear us down, and we either leave the industry to open up a coffee shop, become a computer writer, or the tops of our heads cave in and we go into management… the ultimate retirement before retirement.

Tell others about this article:
Click here to submit this page to Stumble It