Do We Worship Complexity?
We also worship simplicity. I like to think of things as quadrants. Imagine a 2x2 matrix with columns and rows titled as such: [simple, complex] [easy, complicated].<p>They are quite not the same since one dimension denotes the complexity of the thing whereas the other denotes the complexity of the act of building, maintaining and evolving the thing in question.<p>We should always strive for easiness, however complexity shouldn&#x27;t always be avoided. Quite to the contrary, staying away from complexity locally often leads to that complexity being sprayed on a global level, and that&#x27;s when it turns into something complicated.<p>I have too often seen &quot;complex&quot; code, i.e. code that works on &quot;complicated&quot; datastructures such as trees and graphs be discarded in favor of solving the problem &quot;simply&quot; and directly, which means by disseminating the problem&#x27;s logic accross the codebase and with multiple, gradual bugfixes because the problem being intrasequely complex is underspecified and cannot be tested in isolation of the system.<p>Of course the same people that are baffled by &quot;complex code&quot; and think simplicity sums up to looking away and not anticipating future needs, are the same who advocate it. Actually, they like good design and typography, focus more on indentation than datastructures and generally have a taste for nitpicking with as many subtle details as they can come up with, not seeing past the filter of their own opinion about what simplicity and complexity entail, and of course that makes the social process of building code a slow nightmare that does not converge.<p>I sound harsh I know. What I want to point out here is that by denigrating complexity in favor of simplicy, we may get rid of medieval savants, but we open the door to plain idiots disguised as zen masters.