One of the berst ways to ruin a probem is to make massive changes in the name of improvement
Keep the system running at all times
Make a tiny change, then run the tests
Always check-in code a little better than it was before.
Testing: rspec, test_unit
Open/Closed Principal: open for extension but closed for modification - or - create a barrier between those things that change and those things that don't.
Professionals write tests first
Professionals cleanup code
Professionals know that the only way to go fast -- is to go well
Is it worth it to clean up code?
Bad code gets harder and harder to clean as time goes by.
You should clean code as soon as it gets messy.
This takes less time than debugging code later
Nothing has a more profound and long-term degrading effect than bad code:
Bad schedules can be redone
Bad requirements can be redefined
Bad team dynamcis can be resolved
Analogy: What is the quickets way to be done with dinner?
After dinnner, get up and walk away and don't clear or do the dishes
Or, keep the dishes clean all the time
Dinner will take longer, but the whole process of preparing dinner will be quicker