1. When you're making a game or something, do you focus on the basics to get it playable ASAP and then work on building in the extra features or do you insert the features as you're working on the program (so the program looks good but doesn't quite work)?
Hmm. I find that I can get a lot more done if I focus on getting _something_ displayed (menu, game, whatever). I've found that making code overly-generic or fancy can be bad for productivity -- for example, if I was writing a class to display images, but tried to make it generic to handle different formats, then I get nothing done. However, sticking to an initial format and using it for a while gets results quickly, which feeds back into my motivation. The same goes for other parts of the game, IME. If you can make things generic and get your game doing interesting things then more power to you, but don't spend too long on it. It's much to easy to end up with 50 different unfinished projects if you do that.

Try writing only the parts you need when you need them -- sod planning for the future in your code until you have something _worth the time_. Otherwise, you end up with the most generic, beautifully designed thing that does nothing because you lost motivation .

IMHO of course.

Imminent threats work too -- "you must finish this part of the game in a week or I'll lock you inside a fridge for a day." Just ask anyone here and we'll be willing to provide appropriate threats.

About your second question: it's hard to say without seeing more code (e.g. the other cases). If you could provide more information about what you're doing (and especially download code) then we'll be able to help more.