Here is one of the design mantras I always try to follow: By only adding the code that you need right now, you make it easier to change direction later. This is hard, only adding the code you need and keeping everything as simple as possible.
it becomes easier as you develop more coding discipline.
more sprigs of gamedev wisdom:
Time spent moving things around without any positive gains is also wasted time.
If you just add the dumbest code you can, eventually the design will appear.
Eventually you'll have your game, and it will look nothing like your designs from the beginning.