10 votes

Lessons from 6 software rewrite stories

3 comments

  1. [3]
    masochist
    Link
    I've found that a lot of Joel's fame comes from stating strong opinions as fact, and then his audience not really examining what he's said. This happens depressingly often in tech. Beyond that,...

    I've found that a lot of Joel's fame comes from stating strong opinions as fact, and then his audience not really examining what he's said. This happens depressingly often in tech. Beyond that, the things you should never do article only barely mentions the actual context of why a rewrite in that particular situation was a terrible idea. His statements that, due to their lack of qualifiers, seem to be absolutes, have the unmistakeable misplaced confidence and simple understanding of a brand new developer. Things like "The idea that new code is better than old is patently absurd." seem to come from the "if it ain't broke don't fix it" philosophy. I would say that I can't understand why Joel has become so popular, but this kind of unquestioning acceptance of firmly-stated opinions is a common part of human nature. DHH's popularity is another example of this.

    The linked article uses a heading that I think is particularly salient, making a reference to "GOTO Considered Harmful", a seminal article in computer science. This debate has gone on since the article was published, yet ultimately, again, it's all about context.

    Personally, I think the Linux community tends to rewrite things far too frequently (... look at the Linux audio stack sometime for an example), and IMO in this case there isn't ever any context for those rewrites. It always seems to be because people would rather write code than read code, because reading code is hard.

    Also, I would like to point out that the linked article promised me ASCII art summaries. Besides being depicted in PNGs, I would be remiss if I didn't point out that 💀, 📝, 😎, etc. are emoji, and thus are NOT ASCII.

    2 votes
    1. [2]
      StellarTabi
      Link Parent
      This is wrong, he's saying if you can't fix it without starting over, then how can you be expected to fix it even with starting over? In my experience the vast majority of rewrites are people...

      Things like "The idea that new code is better than old is patently absurd." seem to come from the "if it ain't broke don't fix it" philosophy.

      This is wrong, he's saying if you can't fix it without starting over, then how can you be expected to fix it even with starting over? In my experience the vast majority of rewrites are people refusing to learn the current codebase and just wanting to pander to their pet language/library/framework.

      2 votes
      1. masochist
        Link Parent
        The point made by the linked article (as opposed to the point made by Joel) is that sometimes the original codebase has severe problems that can't be easily addressed by incremental changes. Or,...

        The point made by the linked article (as opposed to the point made by Joel) is that sometimes the original codebase has severe problems that can't be easily addressed by incremental changes. Or, more realistically and based in my own experience, sometimes you end up essentially rewriting something because of the magnitude of changes you make. I would certainly agree that a lot of rewrites happen because of emotional rather than technical reasons; I pointed out the rewrite-happy Linux community as an example of this (just how many iterations has the device management demon been through?), but as was my point in my original comment, it's all about context.

        2 votes