Ed de Moel

WindMills

M Computing, Volume 7, number 4, June 1999, pages xx-xx

Qatlho'!
by Ed de Moel

Greg Kreis is a frequent contributor to the internet forum that addresses M[UMPS] related issues (comp.lang.mumps). Recently, he presented a number of comments on Software Engineering according to Klingon(1) tradition. I'm certain that most people got as much of a chuckle out of it as I did, but I'd also like to take a closer look at these premises and see how far off base they really are.

Specifications are for the weak and timid!

A classic!

When there are specifications, it will also be possible to determine whether or not software meets its acceptance criteria. When there are no formal specifications, there can never be a moment when software producer and customer will agree that the job is done, or that it is done correctly.

Lack of specification ensures that deadlines will never be met, and that the recipient of the product will end up being extremely dis-enchanted with the producer (and vice versa).

A true Klingon recipe for a never-ending feud.

This machine is a piece of qagh(2)! I need dual Pentium processors if I am to do battle with this code!

Since I have never met a computer that was fast enough for my purposes, I would tend to agree with this sentiment.

However, I also know that there simply is no computer fast enough for my taste, so I usually make do with the equipment that is available.

(Maybe next year or so, when the Pentium IX may finally complete an infinite loop in less than 5 seconds...)

Having said that, it stands to reason that one should not be surprised that software that was developed on a machine that is the ultimate top-of-the-line model will perform extremely poorly on the equipment that most of the end-users will have.

Mark Roux from Cybertools always explains that he prefers to develop software on "slightly aged" hardware. His main reason for that preference is that "if it runs at an acceptable speed on that equipment, it ought to be lightning fast for his customers".

Moreover, since the battle with the code is fought mainly inside the brain of the programmer, the power of the computer is probably hardly a factor in the equation anyway.

You cannot really appreciate Dilbert unless you've read it in the original Klingon.

How true, how true.

The innate honor of Dilbert and the obvious lack of honor in all his nemeses make it obvious that the origin of this masterpiece of literature must have been in Klingon hands.

Indentation? - I will show you indentation after my Bat-Leth is done with your skull!

Aah... the never ending dispute between programmers...

Some want one space of indentation increment per level. Some want tabs, some want 2, 4 or 5 spaces, and some don't even care. How can software be "human-readable" when other authors don't indent properly?

This issue is one of the most ridiculous ones that I've ever seen. If you need to read software that you didn't write yourself, and you want it formatted in a specific way, there are plenty of "pretty print" programs available that will produce the visual presentation that you prefer.

Demanding that someone else write in your formatting style is an utter waste of time. It is much more efficient to allow an author to be productive while writing in his/her style, and then let a formatting program create whichever presentation format that you might like.

What is this talk of "release"? Klingons do not make software "releases".
Our software "escapes" leaving a bloody trail of designers and quality assurance people in it's wake.

The difference between "released" software and "escaped" software is that released software

Escaped software typically does not have those characteristics.

While it might be proper for a Klingon warrior to leave a bloody trail of slain opponents, there is no honor in showing the amount of disdain that is implied in allowing software to "escape".

Klingon function calls do not have "parameters" - they have "arguments" - and they always win them.

I like this statement. It's so close to home. In the language of M[UMPS], however:

In their mathematical meanings, the terms parameter, argument and operand are extremely close synonyms, and the words are usually interchangeable.

In the definition of the M[UMPS] language, however, a specific usage of these terms was made part of the formal definition, and that precludes arbitrary switching between these synonyms.

Debugging? Klingons do not debug. Our software does not coddle the weak.

A couple of days ago, one of my colleagues was on the phone with someone from a company from whom we might buy some equipment. The topic of discussion was a bug in the software that drives this machine.

My colleague was pretty insistent that "Well, it's simple. If your equipment doesn't work the way we need it to, we won't buy yours, and we'll get one from your competitor, even if they are more expensive."

I couldn't agree more. If it doesn't work, why would I want it?

I have challenged the entire quality assurance team to a Bat-Leth contest.
They will not concern us again.

An honorable sentiment, but not exactly on the winning side...

Too bad that the alliance between the quality assurance team and the customers creates an overpowering army for whom a mere Bat-Leth is no threat whatsoever.

A true Klingon Warrior does not comment his code!

How true, how true...

It is well known that Klingons are such formidable opponents because they have many redundant and extra organs, so that they are not vulnerable when one heart is accidentally punctured by an assailant's Bat-Leth.

With their overly-redundant extra and eidetic memories, they don't need to remind themselves why a specific piece of code was necessary in a subroutine, and they obviously have infinite amounts of time to explain this all to whomever might need to read their code.

We poor deficient humans cannot boast such genetic redundancy, and probably should resort to reminders and comments.

By filing this SPR you have challenged the honor of my family. Prepare to die!

Indeed!

Filing a Software Problem Report without including a specification of how to resolve the issue is asking for trouble. Without guidance, it would be most likely that the problem would be resolved in the way that is least useful to the person reporting the problem.

In other words, another excellent way to continue to add fuel to a long-lasting feud.

You question the worthiness of my code? I should kill you where you stand!

Uh oh. I guess I asked for it in my assessment of the previous statement. I'll have to brush up on my ability with the Bat-Leth...

Our users will know fear and cower before our software! Ship it! Ship it and let them flee like the dogs they are!

Very well stated.

Do we want users who are anxious to buy our new products when they are released, or do we want customers who warn their friends about their experiences with our current products?

You choose!

As a final note, strangely enough, the above rules do offer a set of standard operating procedures that meet a higher level of engineering practice than many places currently attain: sticking to these procedures will yield results that are absolutely consistent and reproducible. Unfortunately, these results are also extremely close to absolutely useless...

Qapla'!(3)


1. The Klingon language was constructed for use in the television series "Star Trek". The term Qatlho' means "thank you". The spelling is taken from the newsletter of The Klingon Language Institute.

2. Favorite Klingon dish. For a recipe, see http://members.xoom.com/KTesh/main2.htm

3. Success.


Jacquard Systems ResearchEd de Moel is past chairman of the MDC and works with Jacquard Systems Research. His experience includes developing software for research in medicine and physics. Over the past ten years, Ed's has mostly focused on the production of tools for data management and analysis, and tools for the support of day-to-day operation of medical systems. Ed can be reached by e-mail.