Sunday, December 18, 2022

The mystery that's the term "KISS principle"

Most people in engineering and programming have probably at one point or another heard of, or even used, the term "KISS", or "KISS principle". It's about the generic guideline of not over-complicating things in those fields and keeping things simple and straightforward. (When you keep things simple, errors and mistakes are less likely, reliability tends to increase, and the thing tends to be easier to understand, maintain and repair. Making it more complicated than it has to be can be detrimental to one or more of those things.)

The curious thing about that acronym, KISS, is that nobody seems to be able to agree what it actually means. Not as in what it stands for, but what the last word is referring to. Although there's actually small disagreement on what it stands for, in the form of whether there should be a comma between the third and fourth words or not.

Everybody knows that it stands for either "Keep It Simple, Stupid", or "Keep It Simple Stupid" (nobody seems to be able to agree which one). There are myriads of variants that replace that slightly awkward and perhaps even offensive word 'stupid' with something else, but there's no disagreement that it was originally "stupid".

Except that it actually originally might not have been.

The origin of the acronym, and sentiment, is not completely clear. It's widely attributed to one Kelly Johnson, an engineer who worked at Lockheed Skunk Works from about 1938 to 1975 (and even after that remained a consultant for the firm until at least 1980. Quite a long and illustrious career indeed.)

However, while it's very often attributed to him, a form of the acronym, "Keep It Short and Simple" appears in a 1938 issue of the Minneapolis Star newspaper. It's completely unclear which came first, but it's very likely that Johnson didn't invent the acronym himself, and it was already existing, although he might have invented the expansion "Keep It Simple Stupid".

So what quite likely happened is that the acronym already existed (actual origin lost to time) and Johnson's interpretation of it became highly popular.

What nobody seems to be able to agree on is what that slightly more controversial word, "stupid", refers to. Is it referring to the person being talked to (as in something like "don't be stupid, keep it simple")? Is it referring to the thing that should be kept simple (as in "keep it simple and stupid", or perhaps "keep it stupid simple")? Is it referring perhaps to something else?

No wonder there are myriads of variants that replace that word "stupid" with something else, making it both less controversial and less ambiguous (such as the original "keep it short and simple").

Likewise, as mentioned, nobody seems to agree whether there should be a comma or not. If the comma is used, it kind of implies that "stupid" is referring to the person being talked to. If the comma is not used, it kind of implies that the thing being built should be kept "stupid simple". I'm not sure Kelly Johnson himself ever clarified what he meant when he used the acronym.

I don't really understand why his version of the acronym has become so universally used. The more original version, "keep it short and simple", seems so much clearer and less controversial, and much easier to agree with (after all, why would you want to eg. write program code that's "stupid"?)