Bad answers on Stack Overflow

Friday 20 July 2012This is more than 12 years old. Be careful.

I answer questions on Stack Overflow a lot, and also in the #python IRC channel. There’s a common dynamic in both environments, I’ll describe it by giving aliases to three participants:

  1. BaffledNewb asks a simple question, but the question itself strongly hints at a misunderstanding of his problem, or of the best possible solution.
  2. HelpfulNewb answers the question literally, giving BaffledNewb what amounts to bad advice, and missing an opportunity to help him understand the big picture.
  3. GrizzledExpert chides HelpfulNewb for answering the question “wrong,” and tries hard to get to the bottom of BaffledNewb’s real problem, or makes an assumption about what he really wants, and gives that answer instead.

At this point, the conversation can go a few different ways, sometimes all at once. Popular next steps are:

  1. HelpfulNewb insists he was merely answering the question, and wonders out loud why GrizzledExpert has to be so obnoxious.
  2. BaffledNewb is outraged that his motives would be questioned, gripes about not being able to get a simple answer, and wonders out loud why GrizzledExpert has to be so obnoxious.
  3. HelpfulNewb points out that of course his answer is usually a bad idea, but perhaps BaffledNewb has unusual, valid, but undisclosed circumstances that makes it a reasonable answer.
  4. HelpfulNewb claims that he never said his answer was a good idea, just a technically correct answer.

All this came to mind again a few days ago when three questions and answers fitting this description appeared on Stack Overflow in quick succession:

There’s really no excuse for giving simplisitic, bad, but technically correct answers to mis-guided questions. I understand the desire to give an answer, to be the helpful knowledgeable one. And Stack Overflow in particular inadvertently rewards speed.

But answers like these only cause damage. At the very least, wrap them well with a thick layer of bubble-wrap in the form of cautions, caveats, pointers to likely better ways to solve the problem, and so on.

If the questioner really had one of the unusual circumstances that meant they needed a literal answer to their oddball question, they tend to mention it up front. In my experience, doubting questions like these pays off much more often than it turns out to have falsely accused a curious expert of being a newb, though of course that sometimes happens.

The #python IRC channel on freenode has a bit of a reputation for being full of grizzled experts who can’t answer any question no matter how straightforward without grilling the questioner about their motives and needs. I myself have argued for less of this, and being more trusting of the questioner. (Actually, as I’m editing this, I just answered a question in #python in a way that other grizzleds didn’t like!)

But if you do this kind of answering long enough, you will learn to recognize the misguided question, and push back on it. I don’t feel at all bad about downvoting the answers and calling people on it.

A common failing among GrizzledExperts, though, is being too blunt. When a beginner asks a question, it’s almost never useful for them to get this in response:

Why?

That’s too short, too blunt, and is interpreted (perhaps correctly!) as, “you are wrong,” setting up a conflict right from the start. More words always help:

That’s an interesting question, it sounds like having more context would help us answer it well. Can you tell us more about what you are building?

Helping intelligent but lost beginners is not easy, it requires a healthy mix of technical know-how and interpersonal skills. The GrizzledExpert definitely has the first, but often not enough of the second.

My advice:

  • Use more words to fully express what you mean to say.
  • Resist the urge to give the simple but dangerous answer.
  • If the forum allows it, ask questions to get a deeper understanding of the questioner’s need.
  • Don’t be shy about calling a bad answer bad.

Comments

[gravatar]
My growing discontentment with Stack Overflow is around the fact that it seems that those in the HelpfulNewb category seem to be quicky gaining enough reputation to start voting and closing/deleting questions. A number of times I have seen questions, which although they could have been worded better (poster may not have had English as first language), made sense to me, but because it was outside the scope of what HelpfulNewb knew, they down voted them and in some cases moderators then subseuqently closed them. Plain stupid that that you end up with a question that got closed as confusing where a knowledgable person was able to provide the exact answer to what OP was asking and OP even acknowledged it answered the question. Almost need a down vote system on the activities of a person down voting a question to highlight that down voter was the one who was ignorant and not the OP.
[gravatar]
I love this post so much! I wish that the grizzled ones would realize that maybe, just maybe, they're not the best teachers, and not beat up on the new kids when they show up.
[gravatar]
What I've had a problem with is an asked question with an answer that fixes problem using wrong method or with negative consequences that is marked as correct while the 'right' answer is glossed over, or, sometimes even downvoted.

The other issue I ran into were the 'quickest gun in the west' answerers. They would answer first with a vague answer, then, slowly paraphrase other answers through edits on their answer, later earning the correct answer bounty and then the other answers appear to be duplicates of a portion of the 'correct' answer. This gets worse when someone notices an answer gaining upvotes and converts it to a community wiki to prevent someone from gaining karma.

I uncovered two voting rings - one involving some of the moderators and asked that they take action or delete my account. When my account was deleted, I stopped participating.

The neverending quest for karma and social validation leads people to do whatever it takes, even if it isn't in the overall best interest of the site.
[gravatar]
I've often asked questions that is the result of a long line of reasoning, and the irc pythonista insists on knowing every detail before even attempting to answer. Sometimes I just want the straight honest answer, and leave the problem solving to me. Sometime I'm suspicious that this behaviour is a) the result of the helper not knowing the answer (or not caring too) and just justifying why they don't as because it's not needed, or b) ensuring that no one is allowed any help in doing things the *wrong* way.
[gravatar]
Russell Borogove 6:25 PM on 20 Jul 2012
Yesterday I was in one of these. The bad answers weren't "use a flamethrower"-bad, but when I -1'd them with explanation, one of the "HelpfulNewbs" (with over 10K rep, I might add) went ballistic and gave me downvotes on 8 of my answers on unrelated questions, not to mention more than a few unkind words as regard to my character. Good times.
[gravatar]
I post on SuperUser, we can edit other's answers to improve them, we can even edit questions to clarify them if we have enough reps. If this is possible on SO, why not do that instead of growling at bad answers or questions. Most people misunderstand what these sites are really about, most think they are forums which they are not, more like a wiki that can be edited and improved, I agree they need to stop rewarding fast answers, some even accept a poor answer within hours before anyone else has input. The sites need some changes. As far as rude comments they can be reported and are usually removed, retaliatory down votes are just jerks being weenies, not much you can do.
[gravatar]
I don't like "tell us more" as a positive example. It suggests that the questioner just keep talking because he wouldn't know what was important anyway. Well, if the experts know, maybe they should use specific prompts! The bullet points however are good.
[gravatar]
@guest, @Russell: it sounds like you have indeed seen some very bad behavior. I haven't had that kind of retribution, but in retrospect I wonder why not! I guess I've just been lucky.

@Chris2048: you sound like one of the experts who gets lumped in with the newbs. I'm sorry about that. Perhaps understanding the answerers' mindsets will help you endure that line of questioning better in the future. It isn't personal. IRC is a very difficult medium. As I mentioned in the post, I think the tradeoff is a good one, I'm sorry you have to wait for a quick answer because of it. But when it comes to helping people do things "the wrong way," yes, the experts have opinions about the right way to do things, and they have the right to express those opinions.

@Moab: questions and answers can be edited on Stack Overflow, but there's only so much you can do to correct a bad answer before you are simply rewriting the entire thing. I won't edit a post so that it is no longer the original author's words, for example.

@Tobias: "tell us more" is not a stalling tactic. If you think it is, it sounds like you don't trust the "experts" in the channel in the first place. The people I've seen answering questions in #python genuinely want to help people write better software. Please understand if they don't want to be treated like a google-replacement.
[gravatar]
I am one of the grizzled "why?" askers, but I have to agree with Ned (never a surprise). It takes a lot of energy to stick with the constancy of the repeat questions and difficulties of helping newcomers, and we tend to release some steam or make it easier on ourselves via said grizzleness. However, for the cause we care about, it is worth the effort to be a little nicer about it.
[gravatar]
Chris Allen-Poole 7:53 PM on 20 Jul 2012
I have to say, the overall quality really has started diminishing. I think this largely has to do with the fact that most of the truly newby questions have been addressed meaning that the number of duplicate questions is getting bigger.

@Graham There is nothing preventing the grizzled from voting to re-open the question or, if the question is irredeemable, creating a new question based on the original and answering the new question. They can then link back to the original question and probably get up-votes both for the new question and its answer.

@guest Quickest gun gets even better if you have high rep. You have the ability to answer, delete the answer, edit it, and then re-submit it. Since the "created date" does not change, you can have the "earliest answer" and still do the borgification process. (There are legit use cases: I did this once when an answer was getting a lot of down-votes pretty quickly. After an hour of work benchmarking my answer against the others, I undeleted and appended the benchmarks).
[gravatar]
Russell Borogove 8:07 PM on 20 Jul 2012
@guest, sometimes I have a detailed answer in mind, but it's frustrating to get partway through writing it, see the "3 new answers" popup, and see a bunch of other people's half-assed answers getting upvotes, so I will frequently write a "minimum viable answer", submit it, then immediately re-edit it to go into more detail. I may incorporate good points from other answers in the re-edit, but more often the added detail is coming from within. My primary goal on SO is to get a good solid answer in front of people; I don't care all that much if it's mine or someone else's.
[gravatar]
Ned, this is probably a point to raise on meta.SO in order for the community moderators to be made aware of and (hopefully) actively do something about.
[gravatar]
@Shawn Wheatley: I think most "grizzled experts" are quite aware of this problem anyhow - at least I can remember lots of posts about this over the last ten years and as ned demonstrates SO is a great place to survey the whole thing in action.
Also there's a post on meta, where the problem is titled "XY problem" or something; pretty much exactly about this.

On another note: I can't agree with people that say they get thrown into the "newby who doesn't know better" basket when asking for non-obvious answers. Generally I'll explain the problem I have and why the simple, obvious solutions won't work in this case (who knows I could be wrong, has happened ;) ).
[gravatar]
Leonardo Herrera 10:53 PM on 21 Jul 2012
I actually love answering this kind of questions. But I've got scalded over a clarification request by the original poster, and even got a downvote (I don't know if the OP was the one who downvote, thought.) Not fun when it happens (thought I got my answer accepted after a while.)
[gravatar]
By definition HelpfulNewb cannot know that their naive answer is 'bad advice'(?)
Perhaps the way to treat it is as if they said "Isn't [bad advice] the obvious answer?"

GrizzledExpert: "While it may seem that [bad advice] is a good idea, it is bad because [...], here is [good advice]"
[gravatar]
I have seen quite a few SO answers telling the OP that they're wrong to even ask the question. For example, changing fonts in LaTeX.

However brilliant the designers of LaTeX are, there are perfectly good reasons why one might want to change the fonts that it uses, such as to fit in with a corporate style guide. So this is not exactly a case like Ned's, where a direct answer would be "wrong". There are some cases where it would be, and some where it's entirely reasonable.

This GrizzledExpert's answer is highly unhelpful, negative, and offputting to BaffledNewb. Its only saving grace is that he explains the reasons why not to change the fonts, thus allowing the OP to decide for themselves whether to take or ignore the advice.

I agree that a helpful answer that included these caveats would be better than one that didn't. So perhaps it would make sense for SO to allow more than one "correct" answer to a question, splitting the karma.
[gravatar]
I have lost count how many times I have upvoted on new poster's question to give them a fighting chance, before a bunch of trolls come along and downvote it again after the original downvote.

You guys couldn't be more right about the anal-retentive nature of SO "moderators" and their Fascist mentality. Read my profile here (http://stackoverflow.com/users/463053/chuongpham?tab=profile) and the first comment by a poster to my question here (http://stackoverflow.com/questions/26539445/the-setmobiledataenabled-method-is-no-longer-callable-as-of-android-l-and-later)
and you'll know why I have just about had enough of SO retards. For the latter URL, this guy (http://stackoverflow.com/users/115145/commonsware) didn't even give me the chance to finish my question before downvoting it (plus a few others) and rate it as a rant. Eh? As it turned out, my question was one of the most viewed for a thorny topic that has plagued Android since the beginning: How to bloody turn off the mobile network function in an Android device.

The final insult to injury is when I received a private SO moderator message sent to me today containing unwarranted accusations. I have had enough of SO and quit.
[gravatar]
@ChuongPham: sorry to hear you found SO difficult. You aren't going to win friends with me by using the word "retard" like that though...
[gravatar]
I think the gaming of SO for status points has made me not want to actively participate in asking or answering questions. I sometimes find it useful for research issues, but often a question is half answered or the answer is out of content for all but the narrowest cases and further questions/answers that would help are closed.
[gravatar]
The problem I have is that the so-called "best practices" of the GrizzledExpert are typically completely subjective.

Most of the time the "bestness" of them can't even be measured in any meaningful way, yet GrizzledExpert will still insist that the "best practice" is "the best".

More often than not these "best practices" are actually quite bad when used in the context of the question-asker's scenario!

The GrizzledExpert being smug and cocksure about the absolutely correctness of his answer, especially when it's actually wrong, is far more harmful than the possible solution that the HelpfulNewb has presented but not claimed to be a "best practice".

- Charles
[gravatar]
Charles, you nailed it. After many years of slowly losing my trust of the GrizzledExperts, I have come to realize that 99% of them (a) cannot possibly understand the mind and background of a person who has written a one-line question and (b) cannot actually prove themselves to be more than GrizzledIntermediate, due to their blind adherence to current programming "best practices" (that is, cargo cults). So, everyone, please, just answer the question that was asked. If you feel the need to accompany your answer with explanations of when you would do it that way and when you wouldn't, that is fine. If you cannot just answer the question asked, move along and say nothing.
[gravatar]
For the question "How do I do X?", any answer that:
1. Asks "Why do you want to do X?", and
2. Doesn't contain "Here's how to do X: ..."
gets a downvote from me.
"That's an interesting question, it sounds like having more context would help us answer it well. Can you tell us more about what you are building?" This is a good and useful comment, but would be a despicable answer.
[gravatar]
One of the reasons I don't answer questions on Stack Overflow anymore is the difficulty of having a discussion that will actually get to the root of the issue. "Can you tell us more?" is essential to me.
[gravatar]
It's important to remember that the asker ("BaffledNewb") has already decided that X is the correct approach. We don't know why someone would want to use a string value as a variable name in Python, but the asker has already done the work of determining that this is what he/she wants to do. It is arrogant to say "I don't know what you're trying to solve, but I'm sure X isn't right because nothing I've worked on has called for X." (This arrogance also manifests in referring to the asker as "baffled" and "newb", by the way.)

"Can you tell us more?" is good both as a comment and as a supplement to an answer which shows how to do X. It is not an answer by itself.
[gravatar]
I'm increasingly of the opinion that Stack Overflow's gamification incentivizes the wrong the things. It certainly does tend to reward the quick and easy "Give the person a fish" answers and doesn't really know how best to deal with the stickier, trickier, slower, longer and more complicated "Teach the person how best to fish" answer. Arguably the meta-moderation for SO seems to indicate that it this is simply what it wants to be by design, giving out lots of fish and not really teaching things in depth (or solving deeper problems than the cursory and the obvious, for that matter).
[gravatar]
"Giving out lots of fish" is what StackOverflow is for. As I understand it, "How do I do X" is a good question for SO, and "When/why should I do X" is better for ProgrammersSE.
[gravatar]
I gave up on SO a few years ago for just this reason. It seems SO isn't interested in providing quality Q&A anymore and has just become a huge content farm.
[gravatar]
@Elijah, you say, "We don't know why someone would want to use a string value as a variable name in Python, but the asker has already done the work of determining that this is what he/she wants to do."

I can tell you from experience, I have fielded this question a dozen times in the #python IRC channel, and every time, once the questioner learns how dictionaries work, they agree that they are a better solution.

It's not arrogance to recognize common mis-steps. It's experience.

I understand the idea of giving people the benefit of the doubt. Even better is working with them to find the best solution. There's a middle ground between 1) just answering the literal question, and 2) being an obnoxious know-it-all that berates beginners for doing it wrong.
[gravatar]
I'm a trusted users on SO. I no longer believe that SO is a good place to learn neither is it a place to find a rock-solid solution for your problem. I'm active on one tag and tried to pull help seekers to IRC to help them there. The problem is, help seekers come to SO for a quick answer or to have their homework done without sweat. No experienced is gained whatsoever, because all you get is an answer/solution without explanation. That's in case the question was lucky by not getting negative votes or/and closed.

Programmrs should know that if they truly want to learn, just stay away from SO. It is really not a good place to learn and most of the answers are outdated. Not to mention that negative community that is growing day by day.

Some incidents on SO (if blog's author allows me): https://expertflow.wordpress.com/
[gravatar]
I have tried to avoid Stack OverFlow because often a 5 line answer becomes an essay. Then lots vote it down or duplicate. So, even though they are very popular they are not my first choice. I often learn much faster asking elsewhere or sometimes just dog-gone figure it out. Life is too short and really isn't that complex. Think about it, because all complexity results from many simple actions.
[gravatar]
After careful consideration, I decided to write about ChuongPham's comment.

And to this blogger's keeper's feedback. (This kind of English won't make friend to you either)

ChuongPham came here to share his thought with detailed investigation on the issue. Although his English is not perfect, his idea could be fully undertandable.

And Ned Batchelder's feedback was "You aren't going to win friends with me by using the word "retard" like that though..." (This kind of comment is just another "retards")

P/S: @Ned Batchelder: you may remove, hide, attack again my comment for many reason
May because I don't publish my email, or my name

But the fact is that, your comment is just as ignorance as other moderator's behavior at Stackoverflow.com
[gravatar]
Yes, the moderators at StackOverflow.com (SO) are retards alright! No doubt about it.

Nitpicking everything, except answering the question of the poster.

If you want to ignore all SO results from your Google search, append "-site:stackoverflow.com" to the end of your search queries, minus the quotes.
[gravatar]
@Jason, I appreciate your agreement, but I wish you wouldn't use that word that way: https://nedbatchelder.com/blog/200703/retarded.html
[gravatar]
@NedBatchelder: You need to separate your private life from your work!

Otherwise, you need to close your business blog if you're sensitive about people mentioning the word "retard" in their commentary.

Sure, that word may have some private meaning to you, but to the rest of us, it's just a form of expression, implicitly, explicitly, or otherwise.

Do the Stackoverlord deserved their reputation of being "retard" due to their behaviour on Stackoverflow?! Of course, they do! Hence, the commentary from various posters here.

Enough said.
[gravatar]
@NickJones This isn't about separating private from work life. This is about respecting people. If you want to choose words that turn people away, and make you sound like you are sitting at the back of the middle-school lunchroom, that is of course your right.
[gravatar]
@NedBatchelder: You need to relax or chill out, mate!

I think you take the term "retard" to heart and too literally because of your own private reasons, and forgot the fact that communication in any society evolves over time and words and terminologies can be used interchangeably without direct correlation or interaction to one another.

Case in point: I recall the word "gay" used to mean "lively", "light-hearted", "carefree" or "swell" (as the Americans would say it) back in the early 20th century. But now the same word "gay" has been hijacked by homosexuals to further their own agenda. Do you see anyone object to the word "gay" being hijacked by homosexuals? I haven't. It seems everyone is fine with it.

So, the same can be said with the word "retard". People are not disrepecting anyone's personal mental well-being when the word is referenced in speeches or commentaries. Instead, they are referring to that person's action as being "dumb", "dimwitted", or even "tomfoolery".

If you object so much to the word "retard", then you should also object vigorously against homosexuals using the word "gay". Right?! Otherwise, you're just nitpicking - much like StackOverflow's moderators!
[gravatar]
I had to search on the word, but I have had over 10 years experience working with and teaching special needs students. It is a word to try and use something else. You can surely say slow something down, and use the word, but perhaps throttling down.

I don't like to use the words 'master & slave' for my brakes or if you have satellite tv it used to be called master box & you know what else box.

Hard to teach an old dog new tricks, but must we try! IMHO
[gravatar]
I'm Australian and I've got to admit a lot of these commentaries tried so hard to be "politically correct" that they forgot the flexibility of language and its evolution over time (like someone said above).

In Australia, when we see a "bloke" (it's a term for a male friend, for Americans who don't know the term) we know, we might say: "How are you going, you old cunt?!" Does this mean we're are referring to our male friends as the female reproductive organ when we say such word. Of course, not. The word "cunt" for us means many things, literally, non-literally, or as an endearing term. We don't care in the slightest sense how we use it in informal speeches or commentaries. It's part of the Australian culture! Like the word "mate".

So, if the word "cunt" is sensitive to someone, does it mean we have to change our culture to suit these people's sense of political correctnesss. Of course, not. Why should we?! It's our culture, after all!

So, please, just relax and enjoy the commentaries provided here and stop deviating from our original goal of expressing our discontentment with Stackoverflow and how that site is becoming decandent due to it being overran with braindead trolls and egotistical stackoverlords.
[gravatar]
Words have effects. If you want to use "retarded", and sound like an 11-year-old, that's your choice. If you want to use "cunt" and have half the world ignore the rest of your message, that is your choice.

I'm not telling you you can't use certain words. I don't have that power. I'm trying to help you understand how you are being heard.

The whole point of using words is to communicate. You are trying to get a message to another person. Words are powerful. Choose wisely.
[gravatar]
British_sense_of_humour 7:40 AM on 21 Sep 2020
'If you want to use "cunt" and have half the world ignore the rest of your message, that is your choice' - Is it me, or Americans are far too sensitive for their own good?! FYI: U.S.o.A is not "half the world" - geographically, or otherwise!

I'm British. I have many British, European and Asian friends that don't care in the slightest how English so-called "offensive" words are used in everyday's informal forms of communication. That's not to say that we would use such offensive words like "retard" in front of physically-disabled kids and/or adults. We do know our boundaries - even in communication! For us (i.e. non-Americans), using words depend on the context and the environment - as it should be - so we know when it's appropriate to use such words. So, I don't feel the word "retard" is being used inappropriately here, at all! For one thing, this site is not a personal medical or health website; so, posters here aren't even using the word "retard" in its medical and/or physiological literal sense.

I think personally Americans are far too sensitive and tried so hard to be politically-correct to everything. It's probably part of your culture, I think , but that's you! For the rest of us (i.e. the rest of the world), we are casual, light-hearted, comfortable even, when using so-called "offensive" words in specific context and informal environment - like this blog.

Also, it's quite ironic though since Youtube and other online video sites are flooded with videos made by Americans who literally don't care about sensitivity at all! Being selective, then, are we?!

Anyway, like others said above, this site is about expressing our criticisms, discontentment and frustration we have with Stackoverflow. And yet, many posts here are anything but that! Quite disheartening really!

Add a comment:

Ignore this:
Leave this empty:
Name is required. Either email or web are required. Email won't be displayed and I won't spam you. Your web site won't be indexed by search engines.
Don't put anything here:
Leave this empty:
Comment text is Markdown.