Member-only story
Complexity Can’t Be Eliminated. It Can Only Be Moved
Six patterns that determine where complexity lives in your codebase — and how to choose consciously
A senior engineer made our API faster by caching responses. Query time dropped 80%. We celebrated.
Two months later, the cache was stale. Data was wrong. Users complained. We spent weeks debugging cache invalidation.
The speed didn’t come from nowhere. The complexity didn’t disappear. We just moved it.
This pattern behaves like a conservation law from physics. Not perfectly, but close enough to be useful.
Why Complexity Relocates (Not Disappears)
In physics, certain quantities can’t be created or destroyed. Only transformed or moved. Energy conservation says energy can’t be created or destroyed, only converted (chemical to kinetic, kinetic to heat). Momentum conservation says total momentum stays constant in a closed system. Mass conservation says mass doesn’t appear or disappear, just rearranges.
These aren’t guidelines. They’re laws. You can’t violate them. You can only work within them.
Software has something similar: essential complexity (the inherent difficulty your problem requires)…