thinking about stuff that might happen help avoiding design that will make them impossible
we don’t know for sure what those features will look like, so our implementing them right now might be wasted time
we will likely have to remove the anticipated feature to create the real one when the time comes and the idea is clearer
YAGNI, you don’t know about the future, so suppose you eventually won’t need it anyway
make your code focus on the promises you make now, and the degrees of freedom
of implementation, choose the ones that you deem (gut feeling) will have
better chances of the anticipated future implementation
Occam’s razor, the simplest solution is often the most appropriate