The only problem to solve is the one we have today
I think it is a mistake to solve possible, future difficulties. Not catering for potential features today has the advantage of keeping the codebase more flexible. If you do not commit to a solution now, you'll have more wiggle room tomorrow. Keep your options open.
What you need to solve are the problems you have now: dedicate proper focus to these. Produce a correct solution for the task at hand and move on.
Worrying about what might happen in an imaginary scenario leads you down into rabbit holes. It is one of the reasons why people start many things but finish few.
Another reason to refrain from "preemptive" solutions is the lack of information. You will know more about the problem domain later and will be able to come up with a better solution "just in time".
Finally, you limit your future choices by making sub-optimal decisions now.
Don't paint yourself into a corner by making uninformed judgments.
If you keep your application as simple as possible, you'll have a much higher chance to adapt to future changes successfully.
You can't predict the future, and surprises will happen. What you have planned might never arrive, something completely different probably will.
Continue reading The only problem to solve is the one we have today in Best Practices