But you also need to make your software good for you as a programmer too. As programmers we’re like builders. What we build today becomes our workspace tomorrow. Leaving a codebase neat and tidy makes it easier to spot bugs and make changes down the road. You can overdo it, but spending 20 minutes adding unit tests today could save you a week of debugging 6 months down the line.
Ask a techie and they'll probably say it's something to be maintained and updated, to be replaced on a given lifecycle because new things demand it, that it's an achievement of technology or something. A computer to the tech industry is the end to a means.
Ask a common man and they'll probably say it's a tool to get stuff done. That 'puter in the corner working happily for the past 50 years? It's great, gets the work done and puts food on the table at night like any other tool (also 50 years old) on their 50 years old workbench. A computer to common men is a means to an end.
I hope some day the tech industry comes to terms with this disconnect. The users would absolutely be better off for it.
Also I would say software may not deteriorate on its own, but in the context of other software/technologies moving forward it does deteriorate. For example many old games kind of have deteriorated because they don't easily run on modern OS any more.
I think about this a lot when I see UI redesigns that "look fresh" or "updated" while actually reducing productivity and degrading the life of the humans who need computers to get stuff done. All for some vague concept from the head of a "visionary" who often doesn't use the system to solve the problems it is meant to solve.