The Other Side of Complexity
In 1996, a mischievous physicist named Alan Sokal sent a fraudulent article for publication to an academic journal, The Social Text. The submission lacked serious rigor and included paragraphs like this howler,
Secondly, the postmodern sciences deconstruct and transcend the Cartesian metaphysical distinctions between humankind and Nature, observer and observed, Subject and Object. Already quantum mechanics, earlier in this century, shattered the ingenious Newtonian faith in an objective, pre-linguistic world of material objects “out there”; no longer could we ask, as Heisenberg put it, whether “particles exist in space and time objectively.”
Despite the complete nonsense, it was published. Sokal’s hoax punctured the veil of pretend academic rigor and highlighted the power of complex but meaningless language to obscure and misdirect. This famous incident is known as the Sokal hoax. If Sokal had chosen to use plain language, the lunacy of his paper would have been apparent but instead he used a complex tangle of words designed to manipulate the academic reviewers. The experts assumed he had something meaningful to say because it was hard to understand. They were fooled by complexity.
Unfortunately, complexity entices us. The human preference for the complicated is called complexity bias. It's a logical fallacy to believe that the complicated is better than the simple but we consistently lean toward over wrought explanations and problems. This can be seen in our use of excessive jargon, knotty math formulas, silly conspiracy theories or the delight when observing a Rube Goldberg device.
Perhaps complexity signals desirable traits like intelligence. It’s a case of demonstrating capability through immersion in the complicated. A way to communicate to others that you are uniquely capable. This is a plausible explanation for the siren song of complexity but in the domain of software development the fascination with the complex is completely wrong. Why? Because it is not too difficult to make the simple complex. It is difficult to make the complex simple.
“Any intelligent fool can make things bigger and more complex... It takes a touch of genius --- and a lot of courage to move in the opposite direction." – Einstein
The truth is that it is simple designs and construction that signal wisdom, understanding and industry. It is simplicity not complexity that demonstrates competence. Good design and code is logical and parsimonious. It is easy to understand. It uses what Nassim Taleb calls distilled thinking or “thinking based on information . . . that is stripped of meaningless and diverting clutter.” It is rarely complex.
When crafting or evaluating UI designs, UX flows, architectural diagrams, migration plans and software code elegant simplicity is the mark of excellence.
At Ravn, we believe that before work product can be reusable, testable, scalable and extensible – all core characteristics of proper deliverables - they must first be understandable.
“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 Junior