Although the pattern you deseribe requires poor documentation and orginization (must you still place your hand on the glowing red stove burner to realize it be hot) -- I agree that a complete refactoring many times can output much better code. It allows you to break out of the loop and look at the problem in a new way.