July 24, 2022•183 words
"Why is this system so complex?"
The most common answer to this is pretty simple. Building systems as a series of loosely-connected steps creates complexity. The often well-thought-out step implementations failed to consider their place in the overall system design. More times than not, this is a direct result of aggressive deadlines.
When working in these systems, it's essential to recognize the external influences that could have forced a shortcut delivery. Try to separate the implementation details and the intended outcome. Poor execution makes it easy to get distracted, but this only slows down the improvement work. Besides, complaining doesn't help anything.
For even more fun, take multiple complex systems and get them to work together; a common scenario in mergers and acquisitions. This environment typically fosters conflict between teams and an increase in siloed behavior.
It's best to remember that the makers didn't set out to deliver complexity; complexity is a side-effect of other factors. Focus on the intention.
Strongly consider refactoring or creating system bridges before diving into a rewrite. The odds that you'll end up reintroducing bugs are pretty high.