Software does not evolve; software degenerates

9 years ago

Today at lunch i felt taken by this concept once again. A long time ago it came to me that software, au contraire of living beings, does not evolve; the best description for it, in my not-so-humble opinion, is of a big tower of LEGOs building blocks: You start stacking them up and, when a certain amount of time passes, you end up with something that is no longer very stable at the base. It degenerates and - in time - you have to kill it.

Every good developer knows this simple fact: requirements change. They do, there is no point in denying it. And continuing to build on top of a base that was thought for one thing and now needs to do another one is just plain crazy, inevitably. The problem here is that, i believe, non-technical people still think that software is a living thing that keeps evolving and that, no matter what you come up with next, there will always be a way to make it do "just that one more thing that we need".

So my question is: What is the best way to convince non-technical people that software needs to be killed or heavily re-factored from times to times in order for things to be maintainable and faster to build upon? I can't help thinking about "Bruce Almighty"s quote when i ask myself the same question: "(BRUCE) So how do you make people love you without affecting free will? (GOD) Welcome to my world, son. If you come up with an answer to that one you let me know!".