Like the other "summer of love" posts, this recent SE blog post has elicited a lot of comments about the rules of SO. Reading through the comments, it's striking how divided opinions are, and the lines along which they are divided.. that is, moderators, and not moderators. I got into this debate a bit, and while I think RH addressed my particular concern somewhat, it's also clear that he is expressing an opinion (as opposed to a policy position) with this comment:
"You can ask tools questions on Stack Overflow, just not the “What is your favorite” and “What is the best” variety. If you can craft your question so that it is narrow enough to be actually answerable, i.e. “Is there a tool that meets these specific requirements” or “What process or tool can I use to meet this specific need”, it is perfectly on-topic at Stack Overflow.
This issue happens to be my pet peeve, because as a full-time software developer, I spend a great deal of time researching solutions to problems. Now, that's part of being a programmer, but one thing that is clear is that Google will not help you find a Github repo with 25 followers using search terms like "javascript" and "callback." Sometimes you don't know the right terminology to search on until you've figured out the problem completely. Sometimes the context of what you're looking for is very specific yet there's no term involved that's specific enough to find it. Sometimes you're new to a particular environment or just feel like there must be a better way to do something but you don't have more to go on than "what's the best way to do this."
Asking "how do I do something" is so fundamental to being a programmer, yet it's almost specifically blacklisted from SO. Nearly any questions posed as "What is the best way to do x" or "Suggest a tool to do x" or "Is there a plugin or project that does x" will get closed as "shopping" questions.
Beyond Shopping
Many other kinds of questions get closed or super-downvoted with ruthless efficiency and filled with incredibly annoying auto-comments such as "What have you tried?" I feel like half the battle these days is just getting a question accepted without being crucified, never mind getting it answered! For example, this one that I happened to read the other day, got five downvotes in as many minutes, the "what have you tried", and a ton of comments having absolutely nothing to do with answering his question. Imagine if all that energy from all those participants had gone into helping people solve problems instead of criticizing questions!
Now I won't say that this question was perfect by any means, but it was
- Written in perfect English sentences
- Formatted well
- Clearly posed as a question with example code
- Posted by a relatively high-repped used (not that this should matter).
It seems that the criticism largely focused on the fact that it was too easy or he didn't say what he had tried. While I think "what have you tried" as appropriate for questions which are obviously being asked to avoid even the most basic google research, this is not such a question. In this case he simply didn't write "I realize I could do this with a brute force approach but I am asking if there is a javascript way to do it." Is that mistake really so dire that the question should be crucified by the community?
I realize the "summer of love" is about civility. I think it's time to open the discussion a bit further. There's nothing uncivil about downvoting or saying "what have you tried." Nor is there anything especially helpful about them. It was obvious to me upon reading his question what he was asking. The criticism was nitpicking. I think we would all be better off it a lot more energy was spent on answering questions (or, if you prefer, editing them) than it is on downvoting and nitpicking questions that are just not perfect.
Suggestions
First, I think that the rules for questions that are broadly classified as "shopping" should be codified. There is clearly not a consensus among moderators about what makes such a question acceptable. I think RH's position above is about right. But those are not the rules applied by everyone: the vast majority of such questions (especially high-rank or high-view ones, e.g. those that aren't below the radar) have been closed. The irony of a question being popular, is that it's also very likely to get closed!
Second, don't allow questions to be closed until they've been on SO for 24 hours or some other period of time. Give people a chance to revise their question and respond to criticism. If the point of closing questions is for the record of historical data quality, what difference does it make?
Third, encourage being helpful rather than being critical. In the example question I gave, "what have you tried" isn't helpful. On the other hand the comment "can you clarify if you are looking for a language specific way to do this or do you just not understand how to code a brute force approach?" is very helpful. Reward people for editing questions, not for closing questions.
Fourth, if you just can't abide by any of this, then create the Stack Overflow Community Forum. Where you can ask any programming-related question you want. Exactly the same as Stack Overflow but nobody can close questions. Instead of questions being closed or deleted, they are migrated to the Community Forum.
It is clear that lots of people would like to be able to tap the knowledge of the Stack Overflow community in ways that the Stack Overflow leadership or moderators does not approve of. So why not just let them do it? If it turns into a slop fest, then don't go there. Yeah - I'm asking SO to give the kids their own playground.
I realize that one of the fundamental tenets of Stack Overflow's existence is the quality of its data. But let's face it. SO isn't in control of that. Google is. There are 3.5 million questions on SO. People googling for the answer to a question don't find an incredibly well-written answer to an incredibly well-written question; they find the one with the highest number of page views or rank.
Of course, it's often been closed so the info it contains is out of date... what a shame.