October 23, 2007
We don’t stop to refactor, we refactor to not stop
I don’t think I can reinforce this enough. Agile teams refactor.
Refactoring is a core practice that underpins Agile development. As a refresher: Refactoring is modifying code without altering system functionality. This means that if all your tests are running properly prior to a refactor exercise they should not require any extra work once refactoring is completed.
Refactoring contributes directly to internal quality, which is of course, non-negotiable in an Agile endeavor. Internal quality guarantees a steady velocity and maintainability throughout iterations.
The main reasons why some developers still vacillate to refactor mercilessly are lack of trust in the IDE capabilities and the assumption that “it can done later”.
You should trust your IDE or switch to one that you feel confident with. You’ll only gain confidence by understanding the IDE capabilities and practicing them. Therefore dedicate some time to study the refactoring facilities and write several examples to practice.
Refactoring is not an activity that can wait until a story or project is completed. No project has exclusive budget for Refactoring and because it does not deliver any extra functionality it's virtually impossible to convince sponsors to finance it.
Bottom line, Refactoring is an ongoing practice and the cliché still holds valid: “We don’t stop to refactor, we refactor to not stop”.
Happy refactorings :0)