Refactoring
Noun · Verb · Development · Origin: 1999
Definitions
Restructuring existing code without changing its external behavior, improving internal structure, readability, or performance. The disciplined art of making tomorrow's changes easier by cleaning up today's mess.
In plain English: Cleaning up and reorganizing code so it works the same way but is much easier to understand and change in the future.
Example: "We're not adding features this sprint — we're refactoring. Yes, again. Because someone decided not to refactor last year."
Etymology
- 1999
- Martin Fowler publishes 'Refactoring: Improving the Design of Existing Code'
Origin Story
From Smalltalk circles to a book that became a verb
The practice of restructuring code without changing its behavior existed long before it had a name. Smalltalk programmers in the late 1980s and early 1990s used the term informally, and William Opdyke's 1992 PhD thesis at the University of Illinois formalized the concept.
But it was Martin Fowler's 1999 book *Refactoring: Improving the Design of Existing Code* that turned the word into a household term among programmers. Fowler cataloged specific refactoring patterns — Extract Method, Rename Variable, Move Field — giving developers a shared vocabulary for code improvement.
The book's influence was enormous. 'Refactoring' went from a niche Smalltalk concept to something every IDE supports with automated tools. Today, suggesting a refactoring sprint is unremarkable; in the 1990s, it was revolutionary to argue that changing code without adding features was valuable work.
Coined by: William Opdyke (formalized), Martin Fowler (popularized)
Context: University of Illinois PhD thesis, 1992
Fun fact: Fowler's book was inspired by Kent Beck's Smalltalk refactoring practices. Beck wrote the foreword.