I found it's much better to establish firm hypotheses when I begin a project, and then as I plan out the project, make sure that the hypotheses will either be validated or falsified along the way. If the premises under which I began the project have been proven false, then it's time to quit and do something else. But if all the premises hold yet it just takes twice as long to do everything as expected (which is fairly typical), it's worth sticking with it until the end.