Optimize for Replacement, Not Extensibility
Why reversibility might be your best strategy against complexity
We talk a lot about extensibility in software design.
We build abstractions “just in case.” We generalize early. We aim for reusability. But too often, that mindset leads us into the exact trap we were trying to avoid: accidental complexity.

