I've dedicated entire years over my multi-decade career prepping software for changes that never happen. Not once has a big change been correctly prepped for ahead of time.
So my teams don't waste time on it any more.
So my teams don't waste time on it any more.
Anything trying to be too smart, too generalised, too decoupled with plugable parts and it has a huge potential to become an entangled mess. While dumb code can be read and reasoned about quickly, if a change is easily revertible you can plug back the dumb code and try again without losing momentum.
Decoupling is good.
But if you build a plugin system now you have many more problems.
Totally fair. It is a skill in and of itself.