Write tests. They'll save your ass.
If it's happened more than twice, don't ever do it by hand again.
If it can possibly be done outside the request/response cycle, defer it. Mailers, uploads, audit trails.
If there's a lifecycle, model it as a real state machine. Beware ad hoc flags.
You'll write it once, but you'll read it a lot. Code accordingly. Sometimes simplicity takes a bit longer, but it'll pay off rapidly.
Inconsistent file names, task names, or code hurts productivity.
Keep frameworks, plugins, libraries, and tools up-to-date, but think twice before using a production app to play with the bleeding edge.