I’m amazed at some folks resistance to this idea. Before widespread adoption of unit tests, refactoring was dangerous at best. But with the standard safety net of version control, automated build processes and unit tests, done correctly, there’s little immediate risk of breaking existing code.
But there’s still fear. Someone recently told me, “we don’t want to open up the whole system to potential redesign every time we fix a small bug!” Because that slim potential exists, therefore we will not refactor anything, ever.
This of course, violates one of the chief tenets of agile methods: take small bites. Nothing should be a big production number; if a large redesign is indicated, try and approach it in small, incremental steps.
Putting off small problems tends to fertilize them so that they grow into nice, large, healthy problems.
What do you think?