Tests build confidence. Write 'em. They'll save your ass, and they'll let you take a chainsaw to your code without being afraid of unintended consequences.
If it's happened more than twice, don't ever do it by hand again.
If it can be done outside the request/response cycle, consider queuing it. Mailers, uploads, audit trails, anything with an external system dependency or a lot of IO.
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.
Coding conventions and consistency help productivity.
Keep frameworks, plugins, libraries, and tools up-to-date, but think twice before using a production app to play with the bleeding edge.
Don't speculate, get data. Act on what you know, not what you suspect. Is that code really faster? Do users really want that feature?
If it's broken, fix it, not just superficially.