copyright (c) 2017 by R. Rodman
What is complexity? Complexity is how complicated something is. It can be exposed to the
user, like rows of cryptically-labelled buttons on a ham radio, or it can be hidden, like a 9-speed
automatic transmission in a modern car.
In computer programming, complexity can be measured by the number of decision points, functions and
variables in a program. Programmers usually dislike complexity, because every decision point, function and
variable is a place something could go wrong. In general, the more parts a thing has, the more things
that can fail. Simpler things last longer and are more reliable, hence the oft-heard (but little-obeyed)
KISS principle: "Keep it simple, stupid".
How does complexity come about? Over the life of a product or program, features get added, which
increase its complexity. This is often referred to as "creeping featurism", because usually, beyond the
initial design of a product or program, additional feature requests usually come from a very small percentage
of users. At one job it was common to spend months of effort delivering a feature that had only one customer
requesting it - and after deployment, they never used it. Yet, the code for the feature remained, and had
to be maintained.
Another phrase you'll hear is "gratuitous complexity". This is where features are added, such as pretty
graphics or other visual doodads, which are unnecessary but are considered by someone to add to the appeal
of the product or program. In programming, sometimes a programmer will add functions that nobody requested
simply because he feels he is being clever. This, of course, is contrary to the programming principle:
"Never be Clever".
Is complexity always bad? Albert Einstein said "things should be as simple as possible,
but no simpler." Sometimes there is no alternative to complexity. Living things are astonishingly
complex. But, there is necessary complexity, and there is unnecessary complexity.
The Icom IC-2100 has two completely different user interfaces, one on the front panel, the other on the
microphone. They use two completely different sets of instructions to control the same set of features.
Both are very complicated and cryptic. Objectively, it is a terrible design. I prefer the Baofeng,
which, altho difficult to use, actually makes a little sense.
Radio hams, though, are technology enthusiasts. Such people get really deeply into things and
actually develop a liking for complexity in those particular things. This is what I refer to
as "techno-narcissism", or "techno-masochism." Most normal people would assess the IC-2100 as
unnecessarily complicated to use, as I do.
So, if you're a programmer or designer, strive to keep it simple. Avoid the siren song of
complexity, and resist the urges of creeping featurism.