People complain about advice that's "too abstract". There's power in Abstractistan--take a real situation, translate it into abstract terms, manipulate it, then translate it back to reality. Sometimes you can do things this way that would be impossibly complex if you were just manipulating reality.
Comments
This is why most abstractions end up being vacuous and the robust ones valuable.
If volatility is very high in the thrashing around direction, you should not invest in flexible code at all, you should be cheap and expect to throw it away, because you can't cover everything.
If requirements are likely to flex in a defined area, then invest.