Note: This post was originally posted on the 19th August 2012 on the “more” blog that I kept for some time
Complexity - one of those words. Wikipedia says that
complexity tends to be used to characterize something with many parts in intricate arrangement
by that measure alone, the whole world is complex right from its foundations, as it is built up by interactions between particles so vast in numbers that any decent-sized business application appears to have the complexity of a toothpick. We could argue that the complexity of our workd is emergent and that the underlying building blocks are simple. Alas, from my perspective, they are not.
An electron exerts a multitude of different properties for which we need to understand general relativity and at least some Quantum Electrodynamics. Does that sound not complex to you?
Interestingly, there are many accounts of distinguished scientists telling you that the models they construct of reality appear right when they feature simplicity.
This appears to be a hint that complexity may not only be a measurable quantity of some system but is also perceived differently by different people. At least, this is what I am witnessing in Software Development. We usually do not have the same understanding of what complexity is.
- Is a single switch statement necessarily less maintainable than a polymorphic hierarchy?
- Is CQRS necesarily a simple solution if you consider the number of moving parts?
- Is SimpleData necessarily simple when it comes to the discoverability of its features?
The next time you say that some Software is too complex, it may be that your understanding of complexity is a different one than the one who wrote the Software.