Simplicity vs Complexity

simplicityI just changed the tagline of my weblog to a quote I made a few years back on an Artificial Intelligence related discussion group at LinkedIn:

“Simplicity is infinitely more scalable than Complexity!”

It is obviously inspired by the famous quote “Everything should be made as simple as possible, but not simpler.” by Einstein, and others like “Simplicity is the ultimate sophistication.” by Leonardo da Vinci and “Beauty of style and harmony and grace and good rhythm depend on simplicity.” by Plato. But my version adds something important to those. Not only is simplicity something to aspire to for obvious reasons like harmony, beauty and aesthetics, it also goes to being the opposite of ‘complexity’. Now, this might seem like an obvious statement, but here’s the thing about it: complexity brings its own set of problems to the table.

Complexity in any solution, implementation or application makes things hard to comprehend, has a very negative influence on maintainability, and finally makes things ‘hard to scale’. All those things are applicable in any field but even more so in technology, and especially in software. Software solutions, as soon as they move from the first design to the ‘real world’ of real use and application, must ‘scale’ in its capacity to handle more users, more data, with more speed or any combination of those. As soon as we scale software, it becomes more complex, and therefore harder to maintain. So if we start out with simplicity, it will take a lot to turn it into a complex and eventually unmaintainable mess. But if we start with something complex to begin with, we already might get into trouble trying to maintain it even before we need to scale it.

So the choice between simple or complex solutions seems obvious, not only because simplicity translates to beauty and harmony (so eloquently stated by Leonardo da Vinci, Plato and Einstein), but also because ‘simplicity is infinitely more scalable than complexity’ and therefore breeds solutions that are much easier to develop, support and deploy.

CC BY-SA 4.0 Simplicity vs Complexity by HansPeterWillems.eu is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.