Hacker News new | ask | show | jobs
by cratermoon 1251 days ago
Except for a small set of programs where the specification is completely defined (think mathematics) every software system evolves according to a well-known life cycle. It changes continuously to address new and evolving external world requirements, its structure degrades and becomes more complex and difficult to maintain unless work is done to maintain or reduce it.

Because you phrased it as "eventual refactoring", I'm going to take your question to mean that at some point in the lifecycle the codebase becomes too complex and degraded for a team to work on. At that point, the choice is to either fix it or replace it.

But well-maintained codebases undergo continual refactoring, which counters the decay and trend towards excess complexity. Look at things that have been in use for a long time. The Apache http server has been around since 1995, with only the release 2.0 introducing wide-ranging changes. Linux began in 1991.

In short, if the team, for whatever reason, neglects the effort to maintain the quality of the codebase, then yes, if it continues to be in use, it will need a comprehensive refactoring, or replacement.