7

This problem is not specific to Scala answers (it also affects e.g. Haskell answers), but I'll use Scala as an example. Apologies for the length.

Scala has a problem. It has a sub-community who know how to do things in advanced ways, and are not afraid to reply to simple questions with answers which use advanced techniques (example).

These techniques aren't just advanced - sometimes they are criticised as inefficient, overcomplicated, or hard to read. I am not taking a position on that here, I'm just pointing out that this controversy exists, so even the descriptor "advanced" may be disputed by some as misleading.

Fortunately none of this was a big problem for the user who asked that question, who actually accepted that answer. And I think the answer was intended to be humorous as well as useful. Nevertheless, some beginners learning Scala who encounter such StackOverflow answers, might get scared off Scala as a result of reading this, and other answers like it (on SO and elsewhere). Or, they might be driven away from that question page, or StackOverflow as a whole, by what they judge to be overcomplicated answers.

This is a frequently discussed topic in the Scala community, and I have seen blog comments citing this kind of thing as "Why Scala sucks and I won't use it".

It's also not a new problem. In the 1990s, Perl was an example of a language for which simple questions posted online could elicit "advanced" replies that might have scared people off Perl.

Before you say "it's not StackOverflow's role to help particular languages achieve greater popularity" - I agree. However, the "scaring people off Scala" thing is just an aside for Scala programmers, to help to highlight why this is a problem.

The more general problem is: beginners - especially beginners not particularly familiar with StackOverflow and how it works - and also "intermediate" and "pragmatic" Scala developers - might conclude that because they find that answer hard to follow, they should give up on that SO page. Instead, they might hack something together themselves - maybe in Scala, or maybe not. And thereby miss out on an opportunity to learn - if not from the "advanced" answer, then from one of the less "advanced" answers. Yes, even though the other answers are right there on the same page! Not everyone reads web pages from top to bottom - even programmers!

(This is a key insight of "usability people": most people don't act as perfectly rational robots. And even if someone is "perfectly rational", they might not have time to read and try to understand all the answers.)

Admittedly, hacking something together yourself is not necessarily bad. Having tried to do so, and maybe succeeded, a beginner might be better placed to come back to the answers on Stackoverflow, understand how they work, and appreciate and understand their tradeoffs. However, what if they don't come back to that StackOverflow page, because they got scared off? Call it scared, call it "I don't like complicated nonsense", call it what you will.

There's a more subtle "problem" here as well. Because StackOverflow has no explicit convention or feature for dealing with this problem, some people might feel that the most "socially appropriate" thing to do, is simply not to supply such advanced answers at all to simple questions, to avoid "scaring off the newbies", or "presenting a misleading impression of the Scala community". I know people who feel this way! This is arguably bad for both StackOverflow and the Scala community if it leads to useful answers being self-censored and/or not upvoted.

My proposal: Either a social convention, or a new feature, to allow answers to be marked as "advanced" - with some canonical text that explains what "advanced" means.

Now that could be extended - there could be a site feature, or if people don't want that, a Greasemonkey script, that allowed users to replace all "advanced" answers with "Click to show 'advanced' answers". Some might scoff at this idea, but e.g. first-year undergraduates who had never programmed before in any language (and yes, Scala is being taught to undergraduates now) might actually want to use such a feature.

But that's just an extension. The core idea is purely to have the ability to mark answers as advanced in some way - so if you don't like the "hide advanced answers" idea, please don't downvote purely on that basis.

I'm not wedded to any of this. But I do think it's a serious problem that needs addressing, somehow.

12
  • 34
    Side-question: How to avoid scaring off readers with book-length questions?
    – animuson StaffMod
    Jun 3, 2012 at 6:58
  • 1
    Well, it is a Sunday - least worst time to post such questions? ;) Jun 3, 2012 at 6:59
  • 1
    @RobinGreen - It's not really about the day of the week, but just that "Not everyone reads web pages from top to bottom..." to quote you ;) This is a looong post. Any chance to scale it down a bit? Maybe you have a few different potential meta posts in there?
    – jmort253
    Jun 3, 2012 at 7:14
  • @jmort253 I cut out some of the fluff. Anyone with edit privileges, feel free to do the same! Jun 3, 2012 at 7:36
  • 2
    Maybe there should be a <tl;dr> tag in which the abstract is displayed in big, bold, dummy-proof font and style.
    – Junuxx
    Jun 3, 2012 at 11:24
  • LOL to animuson :) (although I don't think this question is very bloated.)
    – Pekka
    Jun 3, 2012 at 12:05
  • 1
    I like the idea. Part of the problem is that these answers get lots of upvotes because they're clever and people learn something new, rather than being useful to the questioner, who is more often that not a noob and thinks that this must therefore be the best way to tackle the problem, so accepts the answer. It could be implemented as a flag, whereby if there are more than say 3 people flagging it, the answer is headed by a banner reading something like "This answer represents an advanced solution to the question. There are likely to be simpler ways to achieve the same goal." Jun 5, 2012 at 22:34
  • 1
    Easy. If you think an answer is too advanced for you, skip to the next one. Also, you're likely wrong. If it's a good answer, spending some time with it you might find that you're more advanced than you think.
    – Apocalisp
    Jun 6, 2012 at 22:21
  • 1
    @Apocalisp That is an answer to a slightly different question - namely, "How should beginners [or people not familiar with the programming language in question at all] react when faced with an answer they think is advanced?" The problem is that empirically, not everyone does react that way. So is there anything StackOverflow, as a community or as a system, can do about this? Jun 7, 2012 at 7:59
  • 1
    No, there is nothing the system can or should do to make you feel better about the relationship between yourself and a particular answer or question.
    – Apocalisp
    Jun 7, 2012 at 13:25
  • 1
    You state that advanced answers tend to force inexperienced programmers to just give up and quit SO/the language. I find that the more common problem is that the OP just copy/pastes code that they don't understand, rather than being given a solution that they are able to understand (even if they just copy/paste it).
    – Servy
    Jun 7, 2012 at 14:58
  • 1
    This "question" is pure intimidation. Why do you gather psychological and social pressure against those who answer questions in a creative way? Now, you link to a question that I answered. I answered the question correctly, and in some detail. I even provided a unit test. And I did that for my own selfish enjoyment, and for no other reason. It's my experience that motivated beginners have absolutely no problem with Scala. If you're not motivated, maybe programming is not for you. And you know, that doesn't make you a bad person.
    – Apocalisp
    Jun 8, 2012 at 1:28

2 Answers 2

20

I don't think your proposed feature is needed.

  1. What is "advanced" depends on what the reader knows, so such a tag adds no reliable information. This is the same problem as a basic tag for questions.

  2. Anyone who is "scared off" at first encounter with an answer he doesn't understand has problems that the SE community should not try to pander to.

  3. Simple diversity of answers solves this problem for any reasonable individual. By having a variety of answer styles for a single question a reader can find an answer that is approachable for him.

2
  • 1
    Point 2 in this answers deserves severe criticism. Making helpful answers more accessible is not "pandering." The questioner is pointing out that point 3 is not true. Simple diversity is not helping people find the most helpful answer to their question. We can quibble about the proposed solution but I've felt this pain when trying to learn Haskell. It would be best if questioners could easily find answers that would fit the definition of "idiomatic."
    – darrint
    Jun 4, 2012 at 16:18
  • 6
    @darrint I think you misunderstand me, or rather I didn't communicate what I intended. I am not saying "newbies be damned" and anyone who follows my posts will know that I answer many easy questions with simple answers and I am willing to explain them further on request. Rather, I am saying that the existence of advanced answers is a good thing and these answers should not be dumbed down or abridged to pander to one who doesn't like the fact that it takes some thought. Rather an additional answer that is more basic should be posted for newer users.
    – Mr.Wizard
    Jun 5, 2012 at 0:00
7

IMO the easiest solution is to:

  1. Provide an answer you feel is level-appropriate
  2. Add a comment to the question, or the non-level-appropriate answer, stating there is an alternative, perhaps easier-to-understand (if that's the case) and/or more-efficient and/or etc. and that you've included it as an answer for completeness.

You must log in to answer this question.

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