I suffer from the same problem BUT I know the answer and still don't do it.
Get it going then polish it.
However, that does mean you need to plan your code to some degree and make sure changes can be made simply without too much editing.
Nice, standalone, reuseable modules/functions/types are the best way of doing that and that's where I normally fall foul.
Rather than create the module, add the functions I need and worry about future functions later I always attempt to write an all-singing, all-dancing version.
I'm committing myself to doing at least one proper, polished game for my son.
That *might* well mean another customer for GA'S Framework.
Get it going then polish it.
However, that does mean you need to plan your code to some degree and make sure changes can be made simply without too much editing.
Nice, standalone, reuseable modules/functions/types are the best way of doing that and that's where I normally fall foul.
Rather than create the module, add the functions I need and worry about future functions later I always attempt to write an all-singing, all-dancing version.
I'm committing myself to doing at least one proper, polished game for my son.
That *might* well mean another customer for GA'S Framework.