4 ms·
Isn’t that just a new buzzword for something experienced developers have always done? Each time you perform maintenance on any existing piece of software, you n
by Chris_Newton 12y ago
Isn’t that just a new buzzword for something experienced developers have always done? Each time you perform maintenance on any existing piece of software, you necessarily rewrite it to some extent. The rest is just a matter of scale.
Maybe you make a small change in a logical expression or modify a control structure. Maybe you reimplement an entire function using a new algorithm, or redesign a whole module with different internal data structures. Maybe you rebuild the whole system with the extra N years of insight you have gained from how the previous one worked plus knowing about N more years of evolving requirements than you did last time around.
One way or another, you are always looking for the scale where the benefits of rewriting the whole instead of adapting what is already there — in other words, instead of rewriting one or more smaller parts — outweigh the costs. If a project has reached the stage where the cost of working around an existing architecture is prohibitive, it’s time for a rewrite on an architectural scale.
- dllthomas 12y ago"Isn’t that just a new buzzword for something experienced developers have always done?" Yes. c.f. "Write it, throw it away, rewrite it." However, I'm not sure I agree with the rest of your post. It's certainly true - even tautological - that any change is a change of something. It is possible to change behavior without changing code, though (configuration), and it's possible to change code without changing architecture, and I think each of these things is somewhat different in kind not just degree.
- Chris_Newton 12y agoI suppose it depends on how you define “architecture”. I usually take it to mean something along the lines of the properties of a software design that are difficult to change once determined and/or that potentially affect the entire code base and/or that are expected to last for a long time. Given some such definition, it is certainly very expensive to change architecture, and therefore relatively unlikely that you’d want to rewrite on such a sweeping scale. That still applies even if the architecture you’ve developed after a while isn’t what you’d ideally chose if you were starting over. I don’t really see any qualitative difference from any other large (but not that large) scale rewrite, though. To me it’s still just a quantitative cost/benefit question, albeit one where the cost is very high so you probably need to have some severe obstacle to overcome before the big rewrite is justified.
- dllthomas 12y agoTo my mind architecture is more "organizational decisions that affect lots of code". There is substantial overlap with your definition, but they disagree at the margins, and that's probably the root of our disagreement upthread.