10 September 2003
Where did the word refactoring come from?
This question struck my mind a few times when writing the refactoring book. I knew the term was used within a fairly small community, so in order to discover the etymology of refactoring I talked to the people in that group (Ward Cunningham, Kent Beck, Bill Opdyke, John Brant, Don Roberts, Ralph Johnson...) to find what had led them to come up with the term.
The obvious answer comes from the notion of factoring in
mathematics. You can take an expressions such as
x^2 + 5x +
6 and factor it into
(x+2)(x+3). By factoring it
you can make a number of mathematical operations much
easier. Obviously this is much the same as representing 18 as
2*3^2. I've certainly often heard of people talking about a program
as well factored once it's broken out into similarly logical
When I asked around the creators of refactoring, the common answer was that they had no idea. The term had been around for a while and they don't know where it came from.
The one definite answer I got was from Bill Opdyke, who did the first thesis on refactoring. He remembered a conversation during a walk with Ralph Johnson. They were discussing the notion of Software Factory, which was then in vogue. They surmised that since software development was more like design than like manufacturing, it would be better to call it a Software Refactory. Refactory has gone on to be the name for the consulting organization that Ralph and his colleagues use.
The foundations of what we refer to these days as refactoring comes from the Smalltalk communities. However the metaphor of factoring a program was also part of the Forth community. Bill Wake dug out the first known printed mention of the word "refactoring" in a Thinking Forth, a 1984 book by Leo Brodie. We're pretty sure that this usage didn't pass from the Forth community to the Smalltalk community, but developed independently.