# I broke your code, therefore your code doesn't work: NAA discussion

Let's say the OP had code like this (imagine there's actual code here, I'm just making a generalized example for meta):

public class Something : Bar
{
public void DoSomething()
{
// does something
}
}

public class Foo
{
public Foo(Something thing)
{
thing.DoSomething();
}
}


Now someone comes along and posts this:

'Something' should be implementing 'Foo', right? I'm getting a compile error here:

public class Something : Foo, Bar


Now let's imagine the question is tagged with a language that doesn't support multiple inheritance: the error is blatantly on the answerer, to anyone with basic knowledge of the language's mechanics.

From my point of view, the answerer isn't reviewing the OP's code. Answerer broke the OP's code, and is now claiming a compile error that isn't in the OP. Maybe the answerer misunderstands inheritance, maybe they're trying to figure out the very concepts at play in the OP, and would like to ask clarifications, but can't because they don't have the comment everywhere privilege yet.

In my book, this isn't a bad answer - it's not an answer, unhelpful to the reader, unhelpful to the OP, and useless to the answerer without a comment-conversation that explains what's going on and why. In other words, it's basically a poorly-worded SO question posted as a CR answer.

Right? Change my mind.

This post stems from a declined NAA flag for a specific answer that is intentionally left out of this discussion.

• I don't have enough to add to the excellent answers by Simon and rolfl for an answer of my own, but: NAA is the most widely misused and misunderstood flag in the SE network. There's a lot of discussion around it's usage and intention on both MSE and MSO... – Vogel612 Oct 11 '18 at 18:57
• I know that. However IMO cherry-picking a part of a sentence to say "ha, see, that could maybe be reworded into a perfectly valid review point!" is a stretch that isn't doing CR any good. – Mathieu Guindon Oct 11 '18 at 19:06
• @MathieuGuindon - I agree that having "bad" answers hanging around is not good for the site in general, but the solution is to down-vote them to obscurity rather than to flag/delete them. In fact, negative score on an answer is more helpful for a number of reasons - it just needs people to be willing to downvote crap. Consider SEDE vote ratios - there are 318K Answer upvotes and only 4K answer downvotes. – rolfl Oct 11 '18 at 19:51
• @rolfl I fully support downvoting bad advice. The fact that so little CR answers are downvoted speaks volumes about the quality of our answers. Stretching not-quite-an-answer-but-hey-there's-one-half-sentence-in-there-that-could-be-used-in-one into a "bad answer" will sure help get these very important voting metrics into shape. – Mathieu Guindon Oct 11 '18 at 19:54
• @rolfl Since the solution requires a shift in behaviour from many users, I'm all for looking into alternatives. – Mast Oct 14 '18 at 15:38

How do I properly use the "Not an Answer" flag?

The Not an Answer flag is a moderator flag that users can raise to notify moderators that a posted answer does not make an attempt to answer the question, and should be deleted.

The keyword here is: attempt.

If it is an attempt at posting an answer, it is an answer.

Some might think that answers absolutely need to somehow review the code in the question. Well, then the question would be "What is a review?" and I'm not going to go in to that. But let's just say this:

An answer that points out a bug or an issue in the original code is an answer

An answer that provides an alternative approach to the problem and an insightful step-by-step approach on how to get there is an answer

If you need to try out the code yourself, or compile it in your brain, to determine whether or not an answer is correct, then it is still an answer. After trying the code out yourself you can determine if it's correct or not, but that doesn't make it "Not an answer".

I should be able to tell if it's an answer or not without trying it out myself and without too much knowledge about the language or the question.

If you add a comment explaining why the answer is wrong and down-vote, then hopefully the answerer will remove the answer himself after that comment. But I believe a moderator (or the rest of the community really) has no business in deleting such incorrect answers - therefore it does not need to be flagged.

There's a big difference between "not an answer" and "incorrect answer".

Side note: If an answer says "This code does not work, how do I fix this?" then it is not a valid answer, but "Hey look it doesn't work" is a valid answer although it might be incorrect/the answerer's own fault. The best approach here is to just edit out "How do I fix this?".

You're not violating any site rules by posting an answer that is pointing out an error which doesn't actually exist.

In my book, this isn't a bad answer - it's not an answer, unhelpful to the reader, unhelpful to the OP, and useless to the answerer without a comment-conversation that explains what's going on and why. In other words, it's basically a poorly-worded SO question posted as a CR answer.

Whether or not it is helpful is irrelevant to the question about whether or not it is an answer. There are two vote buttons to determine if it is helpful or not.

Don't assume negative intentions on the answerer, are they trying to understand how the code works or are they trying to point out a bug in the original code?

• are they trying to understand how the code works or are they trying to point out a bug in the original code? - this. I read it as the former. – Mathieu Guindon Oct 11 '18 at 16:48

In general, a post that attempts (in even part of the post) to review a question's code, is an answer. Even if it does a really bad job at answering the question, and even if it is blatantly wrong, or misleading.

If the answer is wrong, misleading, etc. then vote the answer down. It is an answer, just a bad answer. Like the downvote button says: "This answer is not useful".

My observation on Code Review is that down-voting of answers is seldom done, and it should be done more often.

In this hypothetical case, in which so many hypothetical assumptions/suppositions are needed, it is hard to decide whether any part of the answer is actually a review, but, in my loose interpretation of "any part of the past is a review, even if it is wrong", then the comment "'Something' should be implementing 'Foo', right?" is close enough to being a review that it passes the "sniff test".

So, I would downvote that answer without feeling bad (and I can afford the loss of 2 rep).

Use Not-an-answer flags for those answers that make no attempt to review the code. Use downvotes for answers that have any review content, but give bad advice, are wrong, or have other content issues.

• Fair enough (I did downvote). IMO that's a mistake and massively lowers the quality bar for CR answers though. – Mathieu Guindon Oct 11 '18 at 16:16
• @MathieuGuindon - Perhaps not the greates example, but at some point, even you agree: bad answers are still answers – rolfl Oct 11 '18 at 16:23