Simple IT solutions can grow towards unmanageable systems. In the end even a small change involves business analysts, IT engineers and often a lot of managers to figure out if and how a change can be implemented with minimal risks and business impact. Calling buzzwords like devops, scrum, agile and lean do not bring a solution closer.
In fact even if you do work with an agile approach there is no guarantee that a system remains simple to change and manage.
Fighting complexity should not be a single action, but should be a principle that is embedded into all development and maintenance processes.
The single most important quality in a piece of software is simplicity. It’s more important than doing the task you set out to achieve. It’s more important than performance. The reason is straightforward: if your solution is not simple, it will not be correct or fast.
Given enough time, you’ll find that all software which solves a real complex problems is going to:
- have bugs and
- have performance problems.
Complex business IT solutions often break and have a short lifetime. Most of the time after a while complex solutions is seen as a real disaster. And not only in terms of money.
Often software for complex business IT problems becomes complex due since simple principles for avoiding complexity are not followed, discussed and are not well lived through.
Simple software is more easily understood and far less prone to breaking: there are less moving pieces, less lines of code , and fewer edge cases. Simple software is more easily tested. Of course: simple software can still break. But when it does the cause is faster found and appropriate solutions are easier implemented. This because the risks are transparent and can be mitigated.