24

Today I failed the following audit, after marking the question as "Off-topic: no specific problem or error":

enter image description here

Please help me understand how the above example does not fit the following definition:

Questions seeking debugging help ("why isn't this code working?") must include the desired behavior, a specific problem or error and the shortest code necessary to reproduce it in the question itself. Questions without a clear problem statement are not useful to other readers. See: How to create a Minimal, Complete, and Verifiable example.

21
  • 1
    It has a clear statement and code...an [mcve] isn't required.
    – Paulie_D
    Commented Feb 22, 2017 at 12:20
  • 16
    I would have voted to close as well. The question is clearly asking "why isn't this code working".
    – Maroun
    Commented Feb 22, 2017 at 12:24
  • 22
    No, you didn't misunderstand the off-topic reason. As audits are picked automatically based on a number of metrics, sometimes you get one that isn't suitable. This is such a post. Commented Feb 22, 2017 at 12:25
  • 20
    @Paulie_D: so what exactly goes wrong? What was the expected output (the desired behavior in the definition)? An expert can probably guess from the code, but the question is almost entirely undiscoverable for future visitors with the same problem. How are they going to determine that this is the same issue they are seeing? So no, it does not have a clear problem statement. it doesn't work as I expected falls way, way short of that mark. Commented Feb 22, 2017 at 12:36
  • 7
    This is pretty evil. The question is crystal clear, has an excellent repro snippet and behaves exactly the way the OP describes. With a very good answer that describes the mistake in the program. This question should not be closed simply because somebody that should have clicked Skip failed an audit. Ugh. Commented Feb 22, 2017 at 13:03
  • 24
    @HansPassant: feel free to add expected output and error output to the question then. It doesn't work as expected does not suffice. Commented Feb 22, 2017 at 13:06
  • 10
    That is entirely unnecessary, simply run the program. For crissake, there are 1.2 billion machines that can run that program. And of course just about anybody that contributes to the [f#] tag doesn't need to run it, they can tell what's wrong with the program from the excellent and complete snippet. Finding excuses just because you don't want to run it or don't know beans about F# is not constructive. There already is an excellent excuse available: click Skip. Commented Feb 22, 2017 at 13:19
  • 21
    @HansPassant Someone should not be expected to run the code in a question to see what the output is as that is something the op can easily add.
    – Joe W
    Commented Feb 22, 2017 at 15:01
  • 9
    @HansPassant: True, anyone can easily run the program, however 1) this includes the OP 2) as Martijn said: "[T]he question is almost entirely undiscoverable for future visitors with the same problem. How are they going to determine that this is the same issue they are seeing?" Commented Feb 22, 2017 at 15:25
  • 5
    How is the problem not clear? Are you guys simply ignoring the context? The question is "How can I remove NaNs from a list?", the code provided does not work as expected, which very obviously means it does not remove NaNs. There was an answer that resolved OP's issue in less than 10 minutes! Context clues, guys! Stop being overzealous! Commented Feb 22, 2017 at 19:54
  • 1
    @Vincent when doing reviews one does not see the score or the fact an answer exists (unless you go to the question; which I didn't see a reason to do, seeing how "blatantly" off-topic it was). What would you do under these circumstances? This question has its own context.
    – Dev-iL
    Commented Feb 22, 2017 at 20:01
  • 3
    @Dev-iL Because if I read the title, then read the content of the question, I know that the problem is that NaNs are not removed. I don't have to ask the author for clarification, which is what the close votes are for. Don't conflate questions such as "Here's my code, it doesn't work, help me" with this one. Commented Feb 22, 2017 at 20:04
  • 7
    @Vincent What if only some NaNs are not removed? Or they're just shuffled around, or OP mistakenly adds more NaNs in the process? Shouldn't OP make it easy for others to recognize the error (such as if it's something like an off-by-one error)? I'm saying that a lot of times an experienced programmer can identify common problems just comparing the input and the output of a snippet - only one of which is present in the question, for some reason. Is the discussed question answerable as is? Yes. Can (and should) it be improved? Also yes (imho).
    – Dev-iL
    Commented Feb 22, 2017 at 20:12
  • 7
    I'm sympathetic to both @HansPassant and Martijn here. This is a frustrating situation where a lack of clarity in the question will cripple its usefulness to anyone who doesn't already understand what the core issue is (a point that perhaps Hans doesn't really see, because to a programmer of his experience of course the pertinent point is the equality comparison with nan; I don't know F# or even vaguely understand most of the question's syntax and even I can see that!), but where that issue could easily be fixed by editing instead of closing.
    – Mark Amery
    Commented Feb 22, 2017 at 20:15
  • 3
    On a higher level, we have these audits. I get why. But when it gets to be a bit of a black box... the rules were really never explained to me (a few weeks after I began reviewing a MSO question pointed me to this guide(meta.stackoverflow.com/questions/295650/…)... the occasional-yet-consistent MSO questions like this, the "ban" thresholds never explained... and YES, the inability to filter in the Triage queue (why?)... it actually deters me from reviewing. Somehow I don't think that was the intention.
    – user7014451
    Commented Feb 22, 2017 at 20:36

3 Answers 3

30

The example fits the definition perfectly and is off topic. I've put the question on hold for now, until the expected output as well as the error information is included.

Audits are picked automatically based on criteria such as upvotes and a lack of close votes. Community moderation isn't perfect, and it only received upvotes unfortunately. Since it now has been closed and downvoted, it won't be used as an audit again.

12
  • 22
    There should be an audit for audits picking.
    – Maroun
    Commented Feb 22, 2017 at 12:32
  • 2
    With all of the recent posts about using AI for things, maybe some of that AI genius can be put into picking audits :). Commented Feb 22, 2017 at 19:49
  • 3
    So, just out of curiosity... the question describes the desired behavior of removing nan's from an array, states that the problem is that the nan's aren't being removed, and then shows the code to reproduce the situation. How is this fitting the definition of closure?
    – Travis J
    Commented Feb 22, 2017 at 20:30
  • 1
    @TravisJ: it has been edited since to add the expected outcome; please do check the post history. Commented Feb 22, 2017 at 22:26
  • 3
    @MartijnPieters - I edited it long after it was reopened, not that it should matter. That it contains the approach used and the words "doesn't work" does not immediately negate the rest of the content already in place. While it may not "trigger" certain users by having the words "doesn't work" removed, that does not mean that the presence of such words indicate closure. In my opinion, you have also failed the audit by using your unilateral close vote on this post - and moreover have let the community down by posting an answer supporting such failure.
    – Travis J
    Commented Feb 22, 2017 at 22:31
  • @TravisJ: The post has been much improved now, thank you for editing. We shall have to disagree on the post being clear. Commented Feb 22, 2017 at 22:32
  • @MartijnPieters You closed the question some 12 days after it has been answered. The answer being accepted is an indication that the question wasn't so bad as not to be answer-able. The answer makes the original problem clear (IMO). Since OP has their answer, there is a lower chance they will return to improve the question to get it reopened. Why did you decide closing it is better course of action than editing it? Since you're a high-rep user and mod, explaining your reasons would help low-rep users like me understand the site's policies better. Commented Feb 23, 2017 at 7:10
  • 2
    @JiriTousek: That doesn't make a question on-topic. We close questions that are off-topic sometimes years after being asked and answered. I don't have the requisite F# tools or knowledge to fill in any expected output or error information. Commented Feb 23, 2017 at 7:37
  • After thinking on that a bit, I now strongly disagree. In reference to this answer on a similar question I asked a few months ago, this F# question is understable and clear for subject matter experts. Every question will seem unclear for someone on the network, and they should not be closed for that. Commented Feb 23, 2017 at 21:52
  • 1
    @FélixGagnon-Grenier: the MCVE requirement is very clear. The question, in it's original revision, was clearly lacking to meet that standard. Commented Feb 23, 2017 at 21:53
  • @MartijnPieters I might misunderstand, but I fail to see a difference between the original code snippet and the present one. The only difference I can see, is to precise the question about what exactly was expected. Commented Feb 23, 2017 at 21:57
  • @Felix AFAICT what Martijn is referring to is the requirements surrounding debugging style questions, in that they require example input (provided), expected output (provided), actual output (provided but in a somewhat obscure manner), an MCVE (provided), a clear problem statement (provided but not entirely clear), and a question statement (not provided). The problem with this closure is that most everything required for it to be on-topic was in the question, and everything that wasn't in the question could be easily inferred, so it didn't really need to be closed, it just needed an edit.
    – user4639281
    Commented Feb 23, 2017 at 22:17
7

From a standpoint of someone completely unfamiliar with F#:

  • Question states desired behavior ("I want to remove nans")
  • Question contains (pretty short) code necessary to reproduce it
  • Question contains sample input

What it seems lacking is:

  • Output for the sample input
  • Clear problem statement

It turns out that the obvious interpretation of "doesn't work as expected" - that it does not remove the nans - is correct.

The question definitely could be improved, but contains most of the relevant info, with the rest implied. And in hindsight, it having an accepted answer is an evidence that it was not so bad that it couldn't be solved without providing more info.

On a side note, I don't believe adding the output (which would be just repeating the input) or adding "it doesn't remove nans" would make it any more discoverable.

5
  • 6
    We disagree on the "obvious interpretation"; I usually take "doesn't work" to mean "crashes with an error message which I'm too lazy to copy and paste here" in the absence of reason to think otherwise.
    – Mark Amery
    Commented Feb 22, 2017 at 20:26
  • 1
    All of the following are possible interpretations of "doesn't work as expected": (1) it hangs forever, (2) it throws an error instead of returning the correct result, (3) it returns an incorrect result that has no NaNs left but has also messed up the data that should have been preserved, (4) it returns an incorrect result, having removed some but not all NaNs from the input, (5) it returns an incorrect result that still contains all the NaNs that were in the input, (6) for some inputs it returns a correct result, for others some mixture of failures 1-5
    – Ben Voigt
    Commented Feb 23, 2017 at 21:21
  • 1
    Even the rewording in your explanation that the "obvious interpretation is correct" is uselessly ambiguous.
    – Ben Voigt
    Commented Feb 23, 2017 at 21:22
  • @BenVoigt I'm not disputing that there are multiple possible interpretations. Maybe "obvious" was a poor word choice. Interpretations are subjective and the question lacks clear problem statement - I just happened to interpret it the intended way. Still, it contained enough info to get a correct answer (1st goal of SO). And adding the problem statement would not (in my opinion) improve discoverability of the question in future (2nd goal of SO), since the keywords would likely be the same. Bottom line, getting such a question in review truly sucks. Commented Feb 24, 2017 at 10:29
  • I agree that making the question clearer won't change the search keywords. But finding the question using search is only half of discoverability, the other half is recognizing that the question addresses the same problem, and if every reader has to copy-paste the example into a REPL to get the information, it makes recognition significantly harder/slower.
    – Ben Voigt
    Commented Feb 24, 2017 at 15:05
1

This question is technically off-topic (because "didn't work" isn't a problem description; thus, as phrased, this is not an actual question).

With that said, I think that this question is easily salvageable through editing - reading through that, the OP is asking "why doesn't the below code actually remove nans?" I think that the appropriate thing to do here is to just edit the question to make that more explicit, not to vote to close it.

Personally, I'd rather salvage an otherwise-good question through editing if possible than to vote to close it. Voting to close should be reserved for questions that are completely unsalvageable through editing.

Edit: In fact, I can see that someone already made an edit to that effect, so that it now reads "However, it does not remove the nan's from the list. Why aren't they being removed?" This is a valid problem description and an actual question, so the question shouldn't be closed.

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