RefactoringByResistance is a sometimes unintentional mechanism for helping developers arrive at a concise and crisp solution, although not always to the problem at hand. A system exhibits
RefactoringByResistance by making
any change so incredibly tedious or verbose that developers learn to avoid change if at all possible.
The counterintuitive result is that developers therefore work very hard to make it right the first time. They therefore follow the dictum
DoTheFirstThingThatMightWork, knowing that since nothing can change the system will eventually acquire enough complexity (by simple accretion) that virtually anything can be accomplished.
This exciting new approach to modern system design is showcased in several emerging technologies, especially
PerlLanguage,
BioInformatics,
UnixOs,
DotNet, and
WindowsXp.
Systems that demonstrate
RefactoringByResistance generally require a really
really good IDE and obfuscator. Among programmers,
EclipseIde is emerging as the clear leader. Among web designers,
MacromediaDreamweaver is the analogous tool of choice.
Of course, every
real developer knows that Emacs and Vi, combined with Make and a flexible and interesting array of shell scripts and environment variables, provides
RefactoringByResistance capabilities for virtually ANY task that can be accomplished on a programmable machine (so long as it is
TuringComplete).
One interesting corollary: If you are ordered to use tools with an incredibly high RBR factor, and if you refactor them anyway, the resulting code won't "look like" the way such scripts are "supposed" to look. This can get you in trouble, even at the same time as your code continues to work.
CategoryAntiPattern