I've been thinking about this a lot over the last few days. I don't actually think the hostility is coming from users, I think its coming from the cracks in the system.
Specifically, closing & downvotes are the most mentioned actions taken by community members to moderate new users posts. I think the real issue that's not being addressed is these votes "sticking", even if the content is improved.
A recent example is Fatal Error Deploying Apex from Sandbox to Prod, where the question hit -2, until the OP edited their question to include additional information, at which point, me and @adrian removed our downvotes, putting it back at 0. This does not always happen, and it's a lot less likely to happen if the user takes more than a few hours to improve their question (it'll probably be closed or hit -4/5 otherwise), or if the OP puts their improvements into comments instead of in the post (preventing downvoters from removing their vote).
A downvoted question should be either a temporary experience, or a learning experience, and right now, it feels a lot more like a permanent experience.
The same goes for closing questions - ideally, its a lock to say "This question needs to be improved", for whatever reason, low quality, off topic, no code/error, you name it, I've closed it. 90% of the questions I've closed could probably have been improved, but by the time OP arrives back, they've met a -4 & closed question, with minimal information on why their post was closed & how to re-open it. Even if they did, few users would click into a -4 question to try and answer it, and those votes won't go away. Notifying users sooner that their question needs improvement, and being able to clearly convey what needs to be improved could go a long way in helping new users keep their questions high quality and on topic.
I've closed a lot (1,597 reviewed items) of questions, but I've only voted to reopen a handful of questions (82). I might be the exception to the rule, but I very, very rarely see someone actually try to get their question reopened, and I think out of those 82, I've voted to reopen maybe 10 or so. I'd go as far to say that the average closed question stays closed, instead of being edited or otherwise improved.
I'd like to see more users trying to re-open their questions, it feels like most users give up once they face what they perceive to be rejection. I'd like them to understand that a closed question isn't the end of their question, but a chance to start again, and modify their content to be on topic. Ideally, the help center would be modified to try and convey this point, to get users to upkeep their questions.
I'd love to see a feature to ping me when a question I've downvoted, closed, or participated on has been edited or answered. Right now, once they drop off the first page of the [apex] tag, they're gone to me.
To a new user, it can feel like nothing they do matters. They expect an answer, they provide what they understand to be the necessary information, come back 8-12 hours later, and are left nothing to show for their time but a closed -4 question.
Personally, I think the most important thing a new user can do to improve their questions quality is to lurk, edit often, and ask a lot of questions. I would encourage (if any new user understood that meta is here) them to ask on meta about their questions.
Sticking around and answering questions in comments and talking to users on their answers has taught me basically everything I know about apex & salesforce. I've never taken a dev/admin exam, or had any formal training with salesforce. I've asked plenty of bad questions
What will updating a production server to Summer '14 do? (Unclear)
Which of these error handling patterns is more efficient? (Opinion Based)
DateTime.Format() Documentation example causes exception (Just me being dumb & on too much coffee)
Asking these dumb questions helped me learn not only how to work with the platform, but also how to communicate problems, and maintain content.
Take this question for example:
setFieldsToNull method not working in a custom webservice class
I have no idea what language this user was working with. I'm pretty sure it wasn't apex. But because they never came back to the site, this answer will sit at 0, until they come back, or util the servers go off. I'm tempted to close it, but what good will it do?
Same deal with these questions too:
Fetch PageLayout from Java using Metadata API
Get StackTrace in Custom Exception
Index on History Table Fields
how to programmatically identify Salesforce Governor limits are hit? can i create a workflow each time when governer limits are hit?
DML currently not allowed on Managed Package Code for other than Admin
Interesting questions, which could use improvement, which don't see it because the OP never comes back. Some of them could be closed, but why bother? They've been "answered". The OP may even have seen these answers, but decided to skip any remaining actions they could take (voting, editing, accepting), since in their mind, they've fulfilled their Q&A expectation of obtaining an answer.
I guess what I'm trying to say is that ultimately, it comes down to the user understanding the system and being able to work within it to obtain an answer. I think the system could be altered to make this easier, but it comes down to "you get what you put into it". I've put a lot of time and energy into this site, and I've gotten a lot out of it. I hope more users put the time and energy in to improve this site & themselves.