4 ms·
> Refactoring in the face of every new requirement smacks of poor initial design. This is true. The idea that a system is well-designed if it allows changes/u
by zbentley 7y ago
> Refactoring in the face of every new requirement smacks of poor initial design.
This is true.
The idea that a system is well-designed if it allows changes/unexpected new requirements via small, mostly-additive, easily testable changes is also true.
But it is also true that systems remain well-designed until they aren't any more, because too many things have been changed/added. And identifying when that watershed has occurred (or, for extra seniority points, identifying in advance when it is likely to occur) is critical to good engineering over the long term. The point at which "you can refactor the system at a later time" becomes "that used to be the case, but now we need to actually pay down the debt, the tradeoffs have gotten too bad" is the most valuable to identify.