Why do you allow other users to close questions? Obviously, there is a need by someone to have a question answered. As time goes on, programmers just love to change things up. So, let the questions be asked, even if they were asked before.
Questions are closed for different reasons, but it sounds like you're specifically asking about duplicate questions. There's no need for duplicate questions because old questions don't expire -- if you have a new answer to a question that was asked years ago, you can still provide it there (and there are even badges for answering old questions).
Having multiple identical questions with independent answers just leads to the same answers being posted on all the questions, which is unhelpful for people who have that problem later: they'll read one question, try the answers on it, move on to other questions, and just find the same answers again. We want every potential solution to exist exactly once and make it easy to readers to find it, so we close duplicate questions but make them point at the existing question rather than deleting them.
Are you referring to situations where at the time the question was asked the solution X was correct, but a year or several later, solution X is no longer correct, and solution Y is more appropriate? (For example, sysv init vs systemd.)
A new and more up-to-date answer is always welcomed to an old question.
I guess the difficulty comes when you are the person asking about the newer situation. You could cross-reference the old answer and explain that it's no longer valid because (named) expected conditions no longer hold.