The less experience you have, the more time you waste with up-front design. Making good designs is something that you will learn by doing it and then seeing/evaluating how it turns out. Some decisions have far reaching but obscure implications. After some games you will probably be able to make the initial design pretty solid and it will pay off to invest some more time to this stage.
My motto: get things done in the first place, but use you common sense to detect what components are more critical than others and designs those pretty well, within your time limit. For example, if AI is critical to your game, make sure that you can easily extend/change it later on. Or, if you're going to write a component that you will use in every game, design it for reusability. Track your time and don't go wild on designing. Set a design-deadline and after that, start hacking everything in to get your release-deadline. But make sure you note what points need refactoring/redesigning afterwards and calculate in some time before you start on the next game to improve those things, so that they don't get to bite you back!
A good advice: if you have to choose between two options, don't linger too long over details. Most often, there is no "good" or "bad". In some situations, A will be better, in some, B will be, and overall, the difference between both may not always be worth the time.
There is a lot of experience to gain in designing software or games, so make sure you spend some of your time on research (e.g. reading a book on design, reading about others experience, talking with fellow programmers about your designs, etc...).