Clarifying and simplifying the design of existing code, without changing its behavior.
Refactoring can sound like a negative thing to clients, particularly when the term is used while problem-solving a bug. Refactoring code does not necessarily mean changing code that was written poorly before. Instead, think of it as optimizing old code to better fit within new code and infrastructure as the project goes on.
Refactoring is a never-ending job that should be done whenever work is performed on a codebase. Our team actively refactors code while working on new, similar feature work. But sometimes, an engineer will pause and call out a specific component that has grown so much through the course of the project that it needs some extra love to get it into the healthiest place possible.
As a PM, I encourage my teams to refactor often and allow them the space to do so when they recognize opportunities. This means the team cares about the code quality and is invested in your product’s long-term health.