Your project is spinning smoothly along like a top. It reacts to small bumps by righting itself, always moving, always keeping on course. Life is good and those options are looking pretty sweet.
Then the top starts to wobble.
How does it start? Sometimes you've run out of design - your construction has moved off your map into uncharted territory. Sometimes unchecked changes demanded by the customer push the requirements out from under your program. And always, a level of schedule stress (a release, a review, a demo) has pushed you into cranking out code faster than you really can. You've hit the wall.
The wobble is easy to recognize: you panic program. You start cutting and pasting code instead of making routines or base objects. You start putting in magic numbers instead of using constants. You start to see code like this:
char buffer; // figure out the real size
private static int xxx;
You start fixing bugs by randomly changing code to see if it helps (the poke/compile desperation strategy). You know you need to stop, because once the top starts to wobble it's doomed.
This is where I'd like to tell you about a silver bullet. But you know the only real solution is to slow down, take a deep breath and start working at a pace that lets you do good work. Easier to say than to do, so sometimes you need to just try to compartmentalize your panic programming so it's easier to fix later. And at some point you have to accept that a schedule slip is the lesser of two evils.