Refactoring Things Other Than Software
In many software circles, refactorings are behavior-preserving modifications that target the patterns of the domain. If we write patterns of management or pedagogy, then why not write refactorings that help people prepare their environments for disruptive change? An interesting question comes to mind: what does it mean for a change to a management system to “preserve behavior”? This seems like a very cool avenue for some thought, even if it hits a dead end.
“Preserving behavior” in software seems to come down to keeping the interface the same. Or, to put it another way, keeping the inputs and outputs the same while changing the design of what happens in the middle. In that respect, introducing something like Scrum is a refactoring of the software development process: money goes in and software comes out, but the process in the middle works better. Making small changes that preserve the behavior of some larger part of the system might be a good way to think about introducing that larger change. I need to think more about that…