My question was closed for being a "shopping list question", even though it was absolutely on topic and programming related. Why?
I find it somewhat ironic that something that is still so contentious could be described as canonical.
Most of them are not bad questions at the core. But unfortunately Jeff's article from 2010 has been applied incorrectly and way too literally with little thought or discussion when it comes to code.
I believe Jeff had a couple of things in mind:
Both really good ideas.
Unfortunately, I believe this article has been a huge source of misguided closures on stack overflow that could have been simple nudges to rephrase. I really wish Jeff would post a follow-up as there are a number of issues either that weren't covered by his electronics store examples, and there are definitive mechanisms that SO could provide to guide the asker to asking a better follow up question rather than just slamming the door in his face.
Issue #1 – Is the question a really a bad question if it could easily be rephrased into a good question?
From what I’ve seen, most questions closed on SO for shopping reasons, would be perfectly acceptable if they were simply rephrased. When somebody asks "what is the best camera", it's unlikely that person meant to ask “how do you take a picture”. However, that IS very likely the case when it comes to programming. A person asking for a component to create an excel file in c#, IS very likely asking “How do I create an excel file in c#.” He certainly isn’t going to complain if a user posts an answer that doesn’t’ require a component and just uses built in libraries. This is just simple semantics – changing the question from “what” to “how”.
Issue #2 – The answer becomes stale, not the question. Enter the voting mechanism.
I realize that we don’t want a pile of questions where there is a better answer every 6 months. But that is simply unavoidable, shopping or otherwise. The good news is that we already have a way to cover that – the voting mechanism. The voting mechanism along with time components could easily bring an updated answer to the top. Isn't this what we want want we talk about canonical questions/answers? All the right answers with all of the subtle differences covered on one question? The only other messy solution is a pile of questions like “how do I X in version 18.104.22.168”?
Issue #3 – No “Shopping Question” close reason.
“Not constructive” is way too general. If questions were closed with a specific message to the user giving them some tips on avoiding shopping questions specifically, rather than just referring them to the help center.
Issue #4 - Inherent information and the bias to "built in" By the time the question is asked, we typically know the language, it's version, and the tooling associated to it thru tagging and what is generally accepted about the language. This is akin to knowing the make and model of our camera and asking if there is a specific add-on to provide a feature. Asking for an add-on is merely an admission by the asker indicating that he believes the function is not already built in (or wasn't happy with it). Is it really a tragedy if two answers are presented? One with an add-on that requires 3 steps and a built in option that requires 5? Who are we to assume the built in option was what the user was requesting? Do we really need him to say "how do i" but then force him to add that he is NOT looking for the built in option?
Shopping questions ask
They do not always literally involve shopping: the comparisons may be between several free things, or between intangible things such as "Which job offer should I take," "what programming language should I learn," or "what religion should I adhere to?"
The key to a shopping question is that it asks others "please make a subjective decision for me and explain it" or "please list all my possibilities with their strengths and weaknesses". This is very different from non shopping questions:
Some of these questions might invite opinions, or might attract lists of localized answers, but they are not asking anyone to make a decision for you.
When you plan to ask a shopping question, what you should do instead is:
After gathering the answers to your individual questions, you can make your shopping decision. You will leave behind factual and useful information for other people, who may use it during the second step (as listed above) of their own investigations. This is a feature of the site. Someone with entirely different priorities than you can still benefit from your fact-gathering questions, while they probably could not have benefited from the general "tell me what to choose" kind of question that we prefer not to have in the Stack Exchange network.
Well, similar to what we consider off-topic on Arqade, questions like this tend to be very broad, and as you probably already inferred, Stack Exchange prefers that you ask questions that receive only one answer. On Arqade, mod-recommendation questions, similar to shopping recommendation questions here, are off-topic because you could have a variety of mods, or things to buy.
Basically, shopping list questions are bad because they are subjective, and subjective questions receive lots of answers and those answers can be outdated, leaving future readers with nothing, unless some nice person comes back and changes his answer.
Irritatingly, the terms "shopping list question" (or "shopping question") and "recommendation question" are often thrown around without regard to what they originally meant. They're different, but since there is some overlap and very little care paid to how they're used, I'll attempt to define both here:
These are the origin of the name, immortalized in Jeff's famous blog post and long the bane of Super User and similarly hardware-oriented sites. The basic template is this:
The requirements alone make this sort of question extremely unlikely to ever help anyone else (or even be answerable in a useful fashion), but at least in theory they could.
The price requirement combines with the volatility of the marketplace to make them completely worthless though. You might as well set a timer and automatically delete them after a week - indeed, this solution was proposed at one point, because folks really wanted to use Super User for help building their computers.
I hasten to note that these are real problems; everyone has to do some price-shopping now and then, and some of us do so very often - but Stack Exchange is generally ill-equipped to handle these questions. Product review sites, some trade journals, forums and of course dedicated shopping sites like New Egg are generally far better suited for this purpose, tedious though it may be.
As soon as the question no longer asks about pricing, the question is arguably no longer a "shopping" question, though it may still fall into the category of...
Product recommendation questions
These are the first steps of a reformed shopper. They're no longer asking you to do the shopping for them, but they do still want you to tell them what to shop for. The most problematic form looks like this:
This is clearly subjective beyond all reason, so it is quickly replaced with,
Now we're hitting several different problems: this list is impossible to keep updated, it attracts spam like spilled soda attracts yellowjackets, and, oh yeah, it's an X-Y problem.
See, the asker actually does have specific requirements for that Product, because he does have an actual problem that he's trying to solve. This tends to come out after the question has been closed as a duplicate of a different (usually incomplete) list of Products, none of which work for him. What he wants to ask is this:
If he'd actually written that, this would've been an answerable question; indeed, some sites allow these sorts of questions without too many objections. But on larger sites like Stack Overflow or Super User they tend to attract spam:
And because spammers are scandalous dastards and don't mind recommending their products in situations where they don't apply, there's absolutely no guarantee the products recommended will do anything to solve the specific problem described... And because strictly-speaking the question is still just asking for a list of Products of Type, getting rid of this spam is more work than it should be.
This brings us at last to,
How to ask for a product recommendation without actually asking for a product recommendation
At this point, we almost have a good question. The asker understands the problem, has described his situation and what he's tried so far to resolve it. We just need to get rid of that pesky technicality that allows for answers which don't actually do anything to provide a solution!
In other words,
That's it. If it turns out there's a Product that can be used to answer this, great! If not, well, maybe there's another option; perhaps someone owns the Bosch frobber manual and can tell you how to solve it without buying anything. Either way, now you're asking for a solution and not a shopping list.
Basically, Stack Overflow prefers questions where there are only a handful of answers that "converge" to a single, definitive, and presumably correct answer.
It's like preferring an infinite series that has a single, rather than "divergent" limit points.
Questions that ask for a list of things, like "is there a tool that does x on platform y?" or "what is the best abc for my problem?" are usually regarded not a good fit on Stack Overflow, even if they are perfectly programming related.
Jeff Atwood has written a blog post on the topic that is regarded something of a canonical document on the issue.
The main arguments against "shopping list questions" are: