Refactoring Things Other Than Software

Eugene Wallingford asks:

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…


Leave a Reply

Your email address will not be published. Required fields are marked *

Richard Lawrence

Is co-owner of Agile For All. He trains and coaches people to collaborate more effectively with other people to solve complex, meaningful problems. He draws on a diverse background in software development, engineering, anthropology, and political science. Richard is a Scrum Alliance Certified Enterprise Coach and Certified Scrum Trainer, as well as a certified trainer of the accelerated learning method, Training from the Back of the Room. His book, Behavior-Driven Development with Cucumber, was published by Addison-Wesley in 2019 (for more information, visit

Connect Twitter LinkedIn Subscribe to RSS Feed Blog posts by this author