I love this word. I love what it means. I love what it implies and what it stands for, both in the literal and theoretical sense.
In short, it means “a disciplined way to restructure code”, which is obviously a software development reference. But it’s much more than that. MUCH more.
Refactoring, in some ways, parallels material and structural concepts such as “single instance storage” or “refinement”, and because of that it extends out way beyond software or even computers. It applies to life in general.
Refactoring comes into play when you clean your desk and organize your things. It comes into play when you sit down to evaluate your plans in life. It comes into play when you experience a major change in life and are forced to adjust your routine.
In practical terms, refactoring simply means that you look for ways to optimize and simplify something without sacrificing quality or capability. Even sports teams refactor when it comes to strategy, position assignments, management and recruitment. Businesses refactor all the time, looking for improvements in efficiency to reduce costs and raise profit margins. Evolution and extinction are probably the simplest and most direct examples of refactoring. Refactoring is a natural part of life itself.
Any time you look for ways to combine steps, to do more with what you already have, or to find ways to reuse things for entirely new purposes, you are refactoring.