Exploratory Programming
pg says in the programming FAQ section of his site that you should use exploratory programming when the problem is complex and ill-defined, but what counts as that? Every time I've sat down to write code I've had a general idea of what the main purpose of my program is and no idea at all about design details (how I'm actually going to implement my vague ideas) or extra features (which are dictated by the users). Is that exploratory programming?
Also, what can you learn from a first prototype? If the idea is to get a minimal version of your program running and expand from there one step at a time, then it seems that what you are really doing is writing the chore of something and then let the users dictate how it should expand. Is that what you expect to learn from a first draft?