Code rots as soon as you write it.  Code rots faster than wood and doesn't preserve its shape like a rusting metal like iron.

People think that it is static and preserved because the text the wrote isn't changing, but that is wrong and misleading because everything around it is changing around it superficially and intrinsically.

  • Dependencies are changing because of patches/features
  • Operating System is changing for patches/features
  • The knowledge and frame of mind that wrote the statements will be gone forever once it is written
  • Organization is changing that used or designed the code in both cases

And so on.  You can never lock all the components and silent hidden changes to organizations (people leaving, responsibilities changing, data workflows jumbled) and dependencies will break the code immediately when a normal action/response begins returning a new unknown behavior.

When adding new features, the first step should be to upgrade and maintain the present code without features prior to adding any or lock the current system as legacy and event source its outputs to the new system/architecture.