I think one thing that adds significantly to the negative trend is the flood of homework questions. Homework questions tend to be of a poor quality and have many problems: no research or effort made by the poster, the poster is unwilling to actually learn anything, outright code begging with copy/paste of homework assignment, "what's wrong with this huge blob of code" etc etc.
SO used to have a homework tag, which you were supposed to tag your homework questions with, thereby allowing people who were deadly tired of them to ignore that tag. But the tag was removed in some policy change and deemed irrelevant.
Then there was another strange, sneaky update recently that changed the available close reasons. The close reason saying that the poster must demonstrate minimum knowledge about the topic was removed. It was replaced with "there is not enough details to answer the question", which for some reason needs to co-exist with the the already present close reason "unclear what you are asking".
Generally, the trend of the site seems to be to expect less out of new users. We are supposed to manually educate everyone and their mother about how to use the site, instead of expecting them to put some minimum effort of their own into it, such as reading the fundamental "about" pagefundamental "about" page.
A veteran user who spends many hours on the site is supposed to spend even more time in "educating" some kid who just posts a copy/paste of his homework, completely ignorant to site policies and completely unwilling to learn anything, or even stay on the site once his homework is done. Chances are, it's a hopeless case and the new user adds nothing of value to the community, so why waste time on them? The sensible thing to do would be just to delete the crap question and move on.
People come to the site to learn/teach about programming, not to teach people how to interact with other human beings. That's what schools and parents are for.