> Paradoxically in SW development complex things often appear because it's easier (simpler) to 'just add this check here' instead of rethinking (and remaking) previous solution with updated understanding.
I think the issue is actually deeper than that. To start off, the definition of complexity that's used is often partial and incomplete, leaving out entire domains where complexity manifests itself.
So it's often easy to make swooping statements about what is complex and what is simple, because what appears to be simple is actually offloading the bulk of the complexity somewhere else.
Take for example CICD pipelines. They can be very complete, thorough and complex. You can shave off part of that complexity by doing manual work. Do you get a simpler system if you replace a pipeline with manual work? No, you get a system that's far more complex, unreliable, and brittle. So how come no system is more complex than introducing a system? Where does the complexity lie?