The refactoring cycle
When I work on software projects, I like to perform frequent iterations of refactoring amongst periods of adding functionality. This tends to result in much higher-quality software: if I regularly set aside time for refactoring, I can catch any organizational problems before they grow out of control. Like tending a garden, weeds inevitably sprout up, and culling them is an unavoidable (and not entirely unpleasant) part of the job.
The other benefit of frequent refactoring iterations is that hindsight always outperforms foresight. Looking back on code I've already written makes it much easier to see what parts of the application may be a problem, and where I should devote some extra effort to code cleanup. Knowing that I will take the time to go over my code in the future frees me up from worrying about it in the present. Instead of agonizing over writing perfect code the first time I do it, I am happy to write good-enough code the first time, secure in the knowledge...