23

In Software Engineering.SE (formerly known as "Programmers.SE") most of the questions are correctly related to design, patterns, metodologies and architectures. Now, my question is: when does a question classify as "Opinion based"? And even more important: when it doesn't? Of course, for instance when asking a question for help in a better undestanding of a particular pattern or a particular metodology, it's supposed that the answer will be strictly connected to an official reference. But in many other case, the question can look something like that:

I have this entity {...} I have these business rules {...}. Given this context, which creational pattern fits best for creating my entity?

A question like this, could be closed as "Opinion based", but I do not agree, I repeat exactly what I say as a comment in this question:

as a matter of facts, when it comes to design and patterns you are not dealing with an "exact science". Many times you have to understand advantages and disadvantages of each decision you can make... at this point choosing the right one it's not a Math formula, it is just a matter of intelligence and experience

That means that a well posed question that asks for advantages or disadvantages of a particular pattern, solution, methodology.. whatever, given a particular context, in my opinion is a question that has to stay open, even if it may seems "Opinion based" because understanding advantages and disadvantages of a particular decision helps the Original Poster to choose the better one... in that particular context.

In conclusion, when does a question on Software Engineering cross over from a understanding advantages and drawbacks to a real opinion based - not constructive - question?

In my opinion that happens when the original poster give no context around the question, for instance, in the 1st example I made, if the question were:

In order to instance my entity object, what is better: a Builder pattern or a factory method pattern?

Naturally a question like this one should be closed because there is no context that makes sense in any answer that will follow.

  • 5
    "Opinion based" -- you lost operative word here. Close reason reads "primarily opinion-based" meaning to close questions that can be legitimately answered based solely at one's opinion. As long as the question is such that legitimate answers should be primarily based on experience and research, it's okay. It's ok when such answers are additionally peppered with personal opinion, and it's even often the case at Programmers, since it's a more subjective site compared eg to Stack Overflow – gnat Feb 22 '14 at 13:01
  • 1
    What closed question? I don't see a closed question? :) On a more serious note, I'm right on the fence on this one, and since it already had 4 re-open votes I'll err on the side of re-opening it. – yannis Feb 22 '14 at 14:24
  • 3
    Fight? Bullies? I don't think so.. at least the users who answered and commented in this topic seem very reasonable.. and they somehow agreed that many times in Programmers (more than SO) it's necessary to reason in terms of experience and research in order to make the right decision.. This question try to draw a line between acceptable subjective Q/A with research and references, and not acceptable subjective Q/A that are not constructive and only based on opinions rather than facts. – thermz Feb 23 '14 at 12:52
  • I'm voting to close this question as 'primarily opinion-based' on principle. So there... – Evan Plaice Feb 26 '14 at 20:29
  • 2
    You actually did... Words cannot express what I think – thermz Feb 26 '14 at 22:55
17

There are two answers to your question: how the site theoretically works, and how it actually works in practice. In theory, the border is that questions should have answers that are supportable by objective statements, and aren't purely a matter of taste.

In practice, the border is much more strict than that. The first reason is that voters are often not aware there are concrete, objective reasons behind something that appears on the surface to solely be a matter of taste. Take naming of variables, classes, and functions for example. Several programming books have entire chapters full of well-researched, concrete, and objective reasons why certain names are better than others.

However, if you happen to not have read those books, or otherwise spent time studying the problem in an objective way, it may appear to you that a naming question is purely a matter of opinion and style. Unfortunately, rather than recognizing their ignorance in those particular matters, people tend to vote to close.

The other reason that makes the border more strict is if the question contains certain magic words and phrases that make it appear as if the author is soliciting pure opinion. Voters often fail to read between the lines and recognize that a certain turn of phrase is merely the most convenient way to put something. The technical minds of many programmers make it difficult to recognize that other people are not always as precise in their language as they are. Such magic phrases include:

  • What do you think?
  • Use of the words "better" or "best."
  • In my opinion…
  • I think…, but my colleague thinks…
  • How does your team do it?

In other words, you want your question to focus on "why." Even if "why" is what you mean, if you don't make it explicit with precise language, it is likely to be closed. I wish it weren't that way, but that's the reality right now.

  • And this is why one good illuminating answer can sometimes stop the wave of close voters. It's a pity that such illuminating comments rarely inspire reopen votes. After the close the best place to take your illuminating answer is meta. Show that the Q and A will have value for the site. Don't dig up 100 examples of similar questions that didn't get closed. We'll just close them as well. – candied_orange May 21 at 15:04
13

This is difficult. I see a few bounds on when a question is acceptable:

  • A question should seek for solutions, not opinions. For example, consider a hypothetical question

    I am considering solution A or solution B. Context is this and that. Which solution is better?

    Answer: Obviously the one with fluffy kittens.

    The question could be made more concrete by emphasizing that this is actually about solving a problem X (thus avoiding the X-Y-Problem):

    I have problem X with context this and that. I thought of solution A, but that doesn't quite fit because foo and bar. Solution B might be another option, but I wouldn't know how this affects some part of the context. How can I solve X given this context?

    Answer: Your solution B was almost there, you can make it work by using foo bar.

    That question also shows effort on the part of the asker not only to think up solutions, but also to evaluate them. Note that it doesn't ask “which is better” (opinion-based), but “how can I solve this” (experience/fact-based).

  • Questions should have lasting value. Context is important, but the question would ideally not consist of a code dump, followed by “which pattern should I use here”. This makes any answer only useful for the asker, not for other people having a similar problem.

    An asker should try to give enough context to make it answerable, but the question should still be sufficiently abstract to be applicable to other circumstances as well.

  • Polling has to be avoided. We could rephrase the question from my first point to a poll:

    I am considering solution A or B. Context is this and that. Why is solution B better?

    1st answer: B is better because it has fluffy kittens.
    2nd answer: Actually, A is better and has the advantage of cute puppies.
    3rd answer: In my experience, B would be preferable because this and that.

    Well, this question is a step up because it's now asking why, not what. Other polls might ask “what are the advantages of X” or “how can I explain Y”. Polls are problematic because they can generate equally valid yet contradictory answers.

    It is not a poll when enquiring about an existing consensus:

    For the problem X, everyone seems to use the A solution. I recently thought about a solution B, which has the advantage of this and that. Could someone explain to me why A and not B is the general consensus?

    Answers might include technical or cultural reasons, overlooked drawbacks of B, or the information that B is already being widely used in certain communities.


In the question of your example, the unfortunate question “What do you guys think?” is asked, which immediately makes it off-topic (following the no-polls rule). The question could be made very on-topic by rephrasing it to …

  • … ask about the problem, not about the solution (i.e. ask for a solution, not for feedback). Or:

  • … ask why this more flexible solution isn't being used instead of the more inflexible error-handling patterns (i.e. asking about existing consensus). This is how the question has been interpreted by commenters and answerers. This interpretation could be made explicit through an edit of the question.

While closing the question was not incorrect, it was maybe a bit harsh, seeing that it could be easily be made on-topic by a slight reworking.

  • When you say: "This makes any answer only useful for the asker, not for other people having a similar problem." It's strange but, sometimes the question has a very narrowed scope, and the answers cover very few specific cases... like the question I linked. – thermz Feb 23 '14 at 13:17
  • 1
    @thermz: It's not strange, it's usually an X-Y problem like amon said. Most questions with "very narrowed scope" are arbitrarily narrowed because the author has already decided on a solution, implemented it partially, and gotten stuck on the rest, and just wants a jump start instead of having to backtrack. Sometimes there really are special circumstances (mostly legislative/regulatory requirements like PCI, SOX, that kind of thing) but those are rare relative to X-Y problems. – Aaronaught Feb 25 '14 at 13:30
  • "Answer: Obviously the one with fluffy kittens." - that's an example of a really bad answer and in no way qualifies the question. I can ask you a fact-seeking question and you can answer with the same nonsense answer. – miraculixx Jun 13 '14 at 6:09
4

Having cast the first close vote on the question used as example, and having reverted my vote now, here is my reasoning why I believed the question to be primarily opinion based.

Originally, I thought the question was asking for opinions on the pattern that a caught exception gets passed to a secondary function for handling (and the exception would be rethrown if it could not be handled). To my knowledge, there is no general consensus on that use and both sides of the issue can be argued, so it every answer would only reflect the personal opinion of the author (and possibly the up-voters). I was expecting to see a few answers voicing different opinions and with similar votes. That was for me the reason to vote to close the question as primarily opinion based.

After seeing this meta question, I reread the example question and saw that I had misread the question. I noticed that the question has a narrower scope than I originally thought and is actually about the question if it is a good idea to use a global switch to determine if exceptions are propagated or turned into error codes. In this case, it can be authoritively argued why one choice is better than the other, so it is possible to get a single definitive answer to the question.


Regarding the more general question when a question should be regarded as primarily opinion based, my evaluation is based on the following aspects:

  • Does the asker provide enough context to make a proper decision
  • Is there a single "expert opinion" on the issue, or do the experts have differing opinions (and if I don't know, I abstain from voting)
  • Is the asker just asking for confirmation on a privately held opinion.
1

I acknowledge this is an old discussion and things might've changed, but this is a rampant issue especially on SO.

Allow them, because they are vital, but I think the borderline is decided by the asker's willingness to add details to their question. Some of these questions are gold-mines waiting to happen. I'm one of the people who used to ask these "stupid" questions regularly.

A bit of background:

I'm someone that's been programming in PHP for a year and a few months and has released a very well-working framework that's already being used by others while at the same time, I hope, achieving good understanding of paradigms, patterns, when to use vs. when not to and so on. I've had my code reviewed now by two senior programmers and they both applauded the code. It's not being used in a successful product and I'm about to ramp up the release schedule to good speeds. The framework is unique in its niche, it gives me an upperhand on any competition there is. This is by no means an exaggeration and I actually had to post-pone the release of the next products because I can't believe there are no issues with my framework and being paranoid.

Why this success? Because I had a very knowledgeable mentor and the StackExchange. I asked a lot of stupid questions, but a lot of good ones too, things that were brushed off as "too broad" at times or rather, the answer to these questions could've been multiple choices and it seems this particular sub-site doesn't like that. I don't understand why, I believe that if you're given "here is a case" to a question that's reasonably not broad, then that's valuable to you. Understanding the benefits / caveats of items within a system is pure gold, otherwise you're just a faux within that field. You'll always remain a "surface level" worker if you don't ask these questions.

That means that a well posed question that asks for advantages or disadvantages of a particular pattern, solution, methodology.. whatever, given a particular context, in my opinion is a question that has to stay open, even if it may seems "Opinion based" because understanding advantages and disadvantages of a particular decision helps the Original Poster to choose the better one... in that particular context.

Spot on to what I just said. Programming is, as it seems to me, a heavily opinionated field where a lot of things aren't the absolute truth. Understanding the divergence between two seemingly-identical ways of doing things is essential to healthy growth.

So, what can you do? What someone did to me multiple times, some time ago:

Provide more context to this question such that we can help you because as it stands, we don't have enough details and might give you the wrong answer.

This saved me a lot of down-votes and it turned my question-asking skills around. It actually works and if it doesn't, then it means that person wasn't meant to be.

Clearly, if the question is too broad, someone asking Why use the X pattern?, attempt to make the user re-word the question to provide details, don't down-vote because they might get discouraged, then come back to the question and if, within reasonable time they haven't changed, propose to close.

I understand that this is asking for people to be more lenient and spend more time tracking questions, but if the question seems like it comes from a legitimate concern, help that person provide more context to his question, because these answers are serious fire, dawg. I often go on a binge-reading of answers in here just to see counter-arguments to my way of thinking, why what I'm doing is either good or bad in some people's opinion so that I can further understand my own code by itself as well, but most importantly, in relation to others.


Often times, the lack of context to a question is really just not knowing how to ask or exactly why you're asking what you ask, due to lack of experience, but the asker is a perfectly capable person, he can be made to ask the question properly.

  • 1
    There's a lot I could say about this answer, but it won't fit into the margin. So let me just say this: For such a small site as this is, it's still a lot of workload even for four moderators. There simply isn't the time or energy available to hold everyone's hand in the manner you describe. – Robert Harvey May 8 at 16:40
  • @RobertHarvey Correct and I acknowledged it, I know it's hard to keep track & try to help everyone but if more people did it, then it'd be so much better. As for myself, I'll start to try to comment more where the questions are clearly bad in the hopes of making the original asker improve. As of now, I'm not nowhere near competent enough to answer most questions but what I can contribute with is trying to keep the site clean. – coolpasta May 8 at 19:32
  • @RobertHarvey I wouldn't ask you to. But there are many other high rep users. gnat did a good job of beating sense into me without having a diamond. All we can ask of the moderators is that they make their current collective vision of the site clear enough on meta that the rest of us can do what gnat did for me. It won't stop enforcement from being subjective but it should paint some fuzzy lines the newbies can color inside. Last time we really tweaked that was when we renamed the site. If my advice to newbies is ever off target feel free to call me out. – candied_orange May 21 at 15:24
  • 1
    @candied_orange: The critical paragraph in this answer is the second one, where he states "I think the borderline is decided by the asker's willingness to add details to their question." The vast majority of new users simply don't bother. – Robert Harvey May 21 at 15:29
  • @RobertHarvey oh I know. Even trying is a crap shoot. At the other end are the high energy ones that will waste your time ignoring their questions issues while trying to get you to solve their problem on your own. Which is why I try to identify one definite issue they can fix (out of likely 5) and see if they bother. The ones that bother I try to spend time on. – candied_orange May 21 at 15:35

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .