• ☆ Yσɠƚԋσʂ ☆OP
    link
    fedilink
    53 years ago

    I think this is largely an artifact of the fact that the nature of the problem that software solves evolves over time. You start getting new requirements because business needs, organizational structure, usage patterns, and so on all change over time.

    A project is originally developed to solve some problem, but the problem evolves as the project lives on and sooner or later you start running into cases that just can’t be cleanly mapped onto the original design.

    It’s a problem that no long lived project cam escape because it comes down to a simple cost/benefit analysis. If you have a working project and you need to make a hack to accommodate a new use case that will always be preferable to doing all the work from scratch. And these hacks just accumulate over time leading to a death by a thousand paper cuts.

    This is one of the biggest unsolved problems in software development. The best approach we have is to facilitate the ability to do local reasoning by breaking projects into components that can be reasoned about in isolation, but that still only gets you so far in the end.

    • Dessalines
      link
      fedilink
      83 years ago

      I remember the constant struggle with management, was trying to justify refactors and code cleanups. Every single one of them was unable to see the value added from that, they only cared about new features.

      So then any even medium sized project becomes a 30 band aids on an open wound instead of the surgery needed to fix it.

      I blame capitalist software development, and the profit motive which forces managers to ignore the pleas of devs to clean up the mess. You’re right it becomes death by a thousand cuts.

      Another analogy that I always think of, that’s also one of the refutations of ‘intelligent design’, and a simple proof for evolution, is that the giraffe has a blood vessel coming out its heart, wraps around its neck, totalling something like 9 feet long… all to travel a required distance of a few inches. As designers at least we could make those corrections if people gave us the time to.

      • ☆ Yσɠƚԋσʂ ☆OP
        link
        fedilink
        53 years ago

        Absolutely, capitalism creates perverse incentives here because the goal is to spend as little effort as possible in order to produce a product that’s just good enough to be viable. I’ve had the exact same experience working on projects where delivering features was the only thing business people cared about, and refactoring never happened.

        And that’s a good observation that it’s a similar dynamic to evolution where things just grow out of existing working components in organic fashion instead of getting redesigned to properly address new requirements.