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: