i think it depends on the complexity and clarity of your project. By clarity i mean: do you know exactly what the goal is, or is it a moving target? Or do you know exactly how you're going to solve the problem? Most of the time it's the former rather than the latter.
i've been a team of one more often than none (rhyming couplet not intended) and the future of the product i'm working on is always nebulous. Over the years i've collected a handful of do's to keep me sane and allow for success down the road:
- separate your concerns
- make use of simpler patterns such as: singletons, facades, factories
- use dependency injection
Following these few principles will give structure to your code that is sharable with others when needed and also flexible enough to be refactored into any type of methodology you want. Of course, these do's also assume a nebulous future and a moving target.