Unless you have a software background, you’ve probably never heard of longtime Pythoncoder Tim Peters. In Zen of Python, he suggests 20 design principles including:
- Simple is better than complex.
- Complex is better than complicated.
How is “complex” better than “complicated”? After all, their dictionary definitions are similar and they are listed synonyms in the thesaurus:
- Complex – adj. not easy to understand or explain: not simple
- Complicated – adj. hard to understand, explain, or deal with
Since I love writing about words and word origins, I decided to dig deeper into the distinction between the two.
Education reformer Larry Cuban writes that complicated systems “assume expert and rational leaders, top-down planning, smooth implementation of policies, and a clock-like organization that runs smoothly.” Complex systems “are filled with hundreds of moving parts, scores of players of varied expertise and independence…missing a ‘mission control’ that runs all these different parts.”
Roberto Poli, Research Professor at the University of Trento, Italy, wrote a similar analysis for The Cadmus Journal.
Complicated problems originate from causes that can be individually distinguished; they can be addressed piece-by-piece; for each input to the system there is a proportionate output; the relevant systems can be controlled and the problems they present admit permanent solutions. On the other hand, complex problems and systems result from networks of multiple interacting causes that cannot be individually distinguished; must be addressed as entire systems, that is they cannot be addressed in a piecemeal way.
Using Cuban’s and Poli’s definition, we can come up with some examples:
- Brain surgery? Complicated.
- Election and campaign reform? Complex.
- Designing and implementing an underground tunnel system? Complicated.
- Lowering the incidence of drug use in a low-income community? Complex.
This makes intuitive sense. However, from Cuban’s and Poli’s perspectives, complex isn’tnecessarily better than complicated. In a complex system, there’s no central “mission control” to manage the moving parts, making the process more difficult.
I kept looking for definitions that would validate the Zen of Python. According to the Stack Exchange:
Complexity is intrinsic. Something is complex if it involves a lot of [metaphorical] moving parts even when considered as a Platonic ideal. Complication is extrinsic. Something is complicated by external influences, or because of external influences.
Pedantically, something can be complex without being complicated, or complex because it is complicated. (Things are rarely complicated without also being complex.) Using this Stack Exchanges definition, we go back to our examples:
- Brain surgery? Complex.
- Election and campaign reform? Complicated.
- Designing and implementing an underground tunnel system? Complex.
- Lowering the incidence of drug use in a low-income community? Complicated.
The extrinsic forces which complicate a system are inherently harder to manage than the intrinsic ones. Extrinsic forces cannot be centrally controlled. Brain surgery, for example, is complex because it is intrinsically difficult. It would seem a skilled surgeon would find less difficulty performing brain surgery than a skilled policy-maker trying to reform elections. The extrinsic forces make the system or process much more complicated. By this definition, complex is better than complicated.
Words have immense power to change concepts and clarify conversations. However, this seems to be a situation where there isn’t clarity. Understanding if complex is better than complicated seems to be a complex question.
Or do I mean complicated?
This story originally appeared on LinkedIn on June 12, 2014.
The game of software:-). I would add that complication isn’t exclusively extrinsic Because it also has the dimension of being temporal. Accreted strategies and decisions over time can also create complication.
My interpretation is that ‘complicated’ in this context implies a degree of ~unnecessary~ complexity.
I don’t think your 4 examples help to clarify this much, as they are all simply problems that need to be solved, so in this context they can all be described as complex. The distinction between complex/complicated comes in exactly how you go about solving them.
Brain surgery? Complex.
Brain surgery with one hand tied behind your back using a butter knife instead of a scalpel? Complicated.
It is easy to see how this applies to coding. Sometimes business logic is complex, simply because the business itself is complex. But we’ve probably all seen our share of complicated over-engineered solutions to simple problems because someone thought they might need it, or wanted to use the latest framework, or read about the latest 12 step mantra on reddit.
Complicated versus Complex… This is one of my very favorite contrasts.
Over many years I concluded a practical distinction that has served well in both designing solutions and in analyzing problems.
Both Complicated and Complex by definition involve a “whole” of multiple parts. And both can be a source of failure. But for discussion, let’s assume the case where both actually work. In that case, when something is Complicated, the whole works *in spite of* the mix and multiplicity of its parts; when something is Complex, it works *because of* the mix and multiplicity of its parts.
An immediate observation from there is that Complex things can also be Complicated.
Meanwhile, things that are only Complicated are not understood better, nor made preferable as a prescription, by just calling them Complex. So a careful distinction is practical and valuable.
Seen as a risk-vs-benefit precaution: tending towards the negative, a Complicated entity or situation might feature inefficiency, instability, and a poor ratio of signal-to-noise. Tending towards the positive, a Complex entity or situation might feature elegance and robustness.
Complication likely produces a cheap blended wine. Complexity can produce a great one.
In many sports, successful techniques are “unnatural” until finally practiced enough. But for the natural body that must execute the technique, poor technique is likely complicated; great technique is likely complex.
Last example/sidenote: mature artists and architects are, intentionally, masters at converting complicated beginnings into complex results.
Putting it in human-terms … if you are described by your colleagues, it is better to be called complex than complicated.
Interesting discussion. From a common usage perspective, complex seems to indicate sophistication and a level of acceptance if not understanding, whereas complicated tilts towards an unnecessary or undesired property. We have a commonly used verb for one (“Don’t complicate the matter!”) but not the other (“Shall we complexify by inventing a word?”)
There is a somewhat parallel relationship between simple and simplistic.
Our approach to anything starts off being simplistic (unduly or ignorantly simple), then as we learn more and do more, it gets complex (sophisticated if positive, complicated if negative) and then, hopefully, with insight and mastery, it kind of spirals back into simple (not simplistic anymore–innocence lost).
The above thought is reflected in this quote:
I would not give a fig for the simplicity this side of complexity, but I would give my life for the simplicity on the other side of complexity.
-Oliver Wendell Holmes Jr. (Attributed by some to Oliver Wendell Holmes Sr.)