Last week I discussed Reducing technical debt in a blog, which is one aspect of complexity. But complexity can take many forms and causes a variety of issues. All applications need some complexity or else they won’t be interesting or useful. What we are talking about here is complexity beyond what is needed.
Some of the problems with complexity are:
- Stalls innovation
- Increases cost
- Causes run-time slowdowns
- Makes migration more challenging
But why does complexity occur?
Complexity occurs due to a variety of different factors but frequently it is driven by a lack of understanding of the complete system. Developers design a system and then middleware gets added to support integration and other functionality. But the middleware also adds the most complexity through the additional layer of indirection and typically is 3rd party code that is generic.
This means the developers now have trouble tracing paths through a system making it less understandable for everyone involved. Plus, most often, the middleware includes queues and other elements that slow down the execution creating bottlenecks.
Instead, what users actually need is to simplify their integration by providing automated, direct access to the original system, not middleware that creates additional complexity. Please take a look at our ebook that describes how to avoid the middleware layers and simplify complex systems.