I've often say "design for deletion": Most of those long-term "flexibility someday" needs are best-met by making sure the inflexible modules or flows can be clearly identified and ripped out for replacement.
This leads to a certain kind of decoupling, although with a higher tolerance for coupling that can kept in check by static analysis.
This leads to a certain kind of decoupling, although with a higher tolerance for coupling that can kept in check by static analysis.