If you could only meet the needs of one constituency, I'd say they made the right choice to favor expert answerers, but I think there are other solutions.
Specifically, if I was trying to fix this I'd set up a two-tier system for questions and answers. There are lots of people who would be happy to answer questions, even if the question is a dupe, and even if it's not framed very well. Give people points for answering these in a kind way, and moderate around that.
For questions that are sufficiently well-asked, and not duplicates, elevate them to a wikipedia-like status: allow them to be indexed by search engines, make them easier to see by the expert answerers that dislike sifting through novice questions, and moderate them for quality. Give points for people that review and elevate high-quality, non-duplicate questions, or that edit questions to become high-quality.
If there are very different personas that you're trying to appease, sometimes a multi-tier system is appropriate.
Question: How do I #include a 500MB text file in my C++ code as a string? My compiler explodes when I do this!
Me: Don't do this, your compiler isn't designed for this! Consider loading the text from a file instead!
Comment: -1 Dude this isn't helpful. What if it's code golf and you need to include a 500MB text file!? You never know. Get over yourself.
Stuff like this has happened to me so many times.
When a user asks a question on X, it would be better to first assume that he knows what he’s freaking doing.
E.g. yes there might be valid reasons for inserting 500 MB as a string, and myself as another user desperately searching for an answer to it, I get pretty annoyed when I see answers for a Y instead.
SO contributors should answer the freaking question first. Can it be done and how. Otherwise the answer is of no use to people having the same question but for a different problem. Not to mention that I’ve seen questions closed as duplicates.
This is why I rarely go to SO for answers. I don’t want an opinionated forum, I want a mailing list where people assume you’re a grownup that really wants a solution to the question and not something else.
The ones that can’t explain why are almost always unaware of the actual problem they need to solve.
Also good questions shouldn't need explanations for the reason you're trying to do something. It's not like I'm going to explain my business requirements on a public forum to complete strangers.
And I'm going to mention this again — if the purpose of SO is to provide a searchable database of questions and answers, then the answer has to match the question, not a supposed use case that the user may or may not have, because that answer is then useless to others.
Of course you can include 500 MB in a separate file and read that. It's totally uninteresting and now that SO question, along with its non-answer is showing up in search results, having precedence over others. Which is a pity, because I thought SO is a place where you can ask questions on obscure features of the tools we're using.
You can, as long as you're clear on why you need these obscure features. So there's nuance... if someone asks "hi, I want to call `add` like `add(10, 20, 30)` and it's not working" and the answer is "Use `10 + 20 + 30` instead!", they're answering the intent of the question. They've totally not answered the original question (I want to call add) but OP is probably misguided.
It'd totally be fair to say "Oh, declare a function with 3 params and return the sum, or even make a function with variable arguments, then enumerate over each of them, summing into an accumulator. You can also do this as a functional reduction. In fact, you can use the mapreduce framework to do this, and here's how to create an adder circuit" - Every tidbit of the above is just... overkill.
I totally empathize with you - it sucks to google "how to do X given good reasons Y Z" only to find a question "how to do X given terrible reasons A B" that's answered by "don't do X"! I think the way that's respectful of others' time is to ask another question and clarify why you truly need X.
If you've taught a multidisciplinary class, you'll have faced people who truly are confused - EE students who want to understand, for example, "how do I declare a 20 bit integer in C for this program that's running on Windows?"...
Not 100% for me, but easily 30%. And you can almost taste the authoritarian arrogance dripping from the moderators words. I was disappointed this incredibly negative aspect of the site wasn't even mentioned in the post.
But sometimes explaining how the situation arises:
* Violates NDA/secrecy/licensing agreements.
* It can be complicated to explain the conditions that created the situation to people that aren't working with a custom/proprietary tech stack.
* Is irrelevant. If the operation needed to solve my problem can be concisely stated, why type a distraction?
I remember one post where someone said something like: "It'd be better if you tried this, but if you really need to do X..." followed by an explanation that solved my problem. It made my day.
Yikes. SO is where I learned to program, and if this were the norm, I wouldn't have made it.
If I ask a question the premise of which suggests I'm _way_ off, I wanna know. I have to imagine this scenario is far more common than the one you outline, wherein the poster has arbitrary constraints on his/her problem that need to be respected.
Let the voting system decide which answers are useful for posterity & which aren't. But to the answerers who take the time to help askers tackle the spirit of a question--not just its text--I say: thanks.
I find the attitude of "solve your problem by ignoring stated constraints" particularly irritating among database gurus, who should be more in tune with the business world than a lot of people.
When someone simply refuses to accept the constraints of a problem, it doesn't demonstrate intelligence, even if the problem as stated is insoluble; better to just ignore it. All they are really saying is "sucks to be you, glad I don't have to work there" which is boorish and unproductive.
None of that means that people don't sometimes go down a rabbit hole that they didn't need to. But know-it-alls generally need to step back and either disengage entirely or consider the constraints on a problem.
Question: I'm trying to do Y so I can do X. I know Z is the right way to do X, but I'm not allowed to do it for $BUSINESS_REASON that I have absolutely no control over.
Response 1: Don't use Y to do X. Use Z.
Response 2: $BUSINESS_REASON is stupid, fix that.
Then some time later I'll come back and post my work around, with fair warning it isn't the right way to solve problem X, but if you have to use Y this is the best I've found.
In my experience I see more of the opposite: XY answers. I search for or ask X, and there's a bunch of "smart guys" trying to subvert a secret hidden context to the question resulting in a secret question Y. When I arrive from Google to see the Y answer on X question, the answer is useless because unmentioned condition Y doesn't apply to my scenario. Multiple answers are always great though, because sometimes there is a sane default answer, and one or more "well if Y applies, you might actually [...]". There's a lot of value in multiple answers with their nuances explained or why they're outdated or the new way explained, etc..
A better answer would be:
This is wrong because <reasons>. Consider loading the text from the file. If you want to #include it anyway here's what you can try.
This will ensure that the code golf people can do what they want and normal people try the recommended thing.
Of course there are cases in favor of both sides here or there. If you have reasons to go the esoteric route, then you should simply explain why. If you're browsing from the internet, you have to understand you're reading a conversation between two individuals, catered to the question-asker and not the rest of the universe.
there's also the third, silent, probably much larger group, who neither asks questions nor answers them.
it seems as though the single authoritative, comprehensive answers is what helps those people the most.
> Specifically, if I was trying to fix this I'd set up a two-tier system for questions and answers. ... For questions that are sufficiently well-asked, and not duplicates, elevate them to a wikipedia-like status ...
i think i'd very much like that to happen.
In the earlier days, it was designed to straddle the line more with a wiki; there were "community wiki" questions and answers, but people couldn't get reputation for those, and if someone's question or answer was edited enough it would automatically converted to "community wiki". However, people would get upset about losing the potential karma, so that feature was taken away, and major edits to other people's answers that change the meaning of it started to be discouraged.
However, there's no way for anyone other the person who originally asked a question to change which answer is accepted. So if someone asked a question 10 years ago, and someone gave a bad answer or an answer that is now out of date but which was accepted, and those two people have now left the site, there's no good way to get the first answer to the question to be the correct one. You can write a better answer, and even if it's upvoted, there will still be the accepted answer ahead of it.
I've tried following the original, more wiki-like spirit of the site by editing such answers, and then gotten other people reverting me because the edit would "give reputation to someone who didn't deserve it."
I feel like the incentives, and balance, and community of the site are just off right now. It still serves a useful purpose, but it could be a lot better, but whenever I've tried making suggestions for how to improve, I've gotten so much pushback that I've just given up.
I'm in that group and the problem is Google results seem to favor the recent, locked and left unanswered question over the so-called authoritative one
We tend to forget that even really basic things like googling for an answer are learned skills. Some people are so green, they don't even know what they are looking for. They have some collection of objects that they want in a certain order, but they don't know enough to know the name of the thing they are looking for is a sorting algorithm. Or you have a situation where someone needs a linked list, but they have no idea what to call it, so searching fails. I've seen genuinely bright people who are new to programming fail in this way and get really frustrated when people tell them to "just fucking google it" when they already did, but honestly didn't know what to call what they were looking for.
On the other side, you have some people who are not so interested in a single canonical answer to a well-formed question. There are people who really get a lot of enjoyment out of guiding people and teaching them.
I would say the quickest way to satisfy a lot of the dynamic here is to have a place to migrate really poor questions instead of just closing them down. Something like how-to.stackoverflow.com or whatever.
Yes, some people just don't want to learn and are looking for someone else to do their homework. It's true. But I think those are best evaluated by the kinds of people who want to hang out there and try to offer guidance rather than the population as a whole who is going for more of a nerdapedia site.
In other words, give the people who want to teach a place to teach, and give the general site a way to move those questions to that context. Let the teaching-focused users evaluate the genuinely bad actors.
As a junior, I've run into this, especially since I have no mentor and I just kind of have to wing it when it comes to my own education. Example, I have an Android project where I use the HackerNews API to get the top stories, but I got the IDs and then the JSON for each all in one go. At the time, my thought was that I wanted to do this dynamically; I had no idea how to describe this to people for weeks. Then someone told me I was probably looking for "pagination". Boom, that was it. Don't know how to actually implement my own pagination still because all of the articles on it are trash and end up recommending the libraries for pagination anyway, but now I know!
One thing I've been pondering is if it's possible to have a sort-of "Junior's Dictionary" where a common (or semi-common) scenario is laid out and terminology is attached to it. Would have been great to know I was looking for pagination the entire time.
The downside of disallowing ‘unworthy’ questions is that people feel made stupid for asking, and unwelcome. Also, people feel made stupid for answering, and unwelcome. There is plenty of elitism in tech, and you could keep the main stackoverflow for unique, well-asked questions, as well as adding the novice area.
The advantage of having a novice area of stackoverflow is that more people will use the site. While not every question will be great, the total number of great questions, and the total number of people helped, will be higher.
Turnover/churn. If a Q/A site allowed basic questions then the site would be flooded with them since the population of novices greatly exceeds sophomores or experts. Moderation would need to keep up with silo-ing these Qs into the 'novice area' you propose. Experts would need to sift more to get to the interesting, challenging or novel Qs if moderation can't keep up, which might affect the retention of these users, thus diminishing the resource pool available on the site.
To me it's clear that tact and grace is called for, and is currently mostly missing, when directing askers of basic Qs to existing answers, whether on- or off-site but there is such a thing as tragedy of the commons. Some stewardship and curation is required to maintain an acceptable SNR.
This is really excusing bad UI/UX (like surfacing existing answers while a user is typing a question) and a bad ranking algorithm. There is no such thing as "being flooded" only bad search algorithms, and bad UX. Google is "flooded" with a result set spanning the entire internet, and they manage to surface answers. Stack Overflow can do the same--they have more tools to rank and influence behavior (rewards, moderation, points) than google has because they control the site, its structure, and how it is gamified.
The only problem is if the question is not exact duplicate, but that doesn't happen very often with such easy questions.
The user's question seemed like a fairly standard one: how can I force kill a goroutine. But actually there was a question underneath it. The issue wasn't that they needed to kill the goroutine it was that the library they were using didn't have a mechanism for timeouts.
The sad thing was there was a PR available that fixed the problem.
Its like arguing with someone who takes everything you say completely literally and makes no attempt at a charitable interpretation.
The problem is, they added the review queues, which prompts people to review questions on topics they might know nothing about, and give badges based on how much people review. So people go through those review queues and might be motivated to just get through things quickly without thinking very much about the effect of what they are doing; there is no meta review, no downside to just making hasty decisions that just prevent other people from engaging in useful discussion.
There is. There are "audit" questions designed to test whether the reviewer is paying attention. If they improperly vote to close a "good" audit question or improperly vote to leave open a "bad" one, they get banned from reviewing for a while.
But I don't think that "audit" questions do much to address my issue. They enforce that someone is paying at least a little bit of attention; but they still emphasize things like voting to close a "bad" question, rather than helping the person asking the question ask a better question. They might help a little bit with people who are just not paying attention at all for questions which are black and white as to whether they are "good" or "bad" (such as blatant spam), but they don't help at all with pushing the "grey area" questions in the right direction.
That's the crux of the issue; the community is so focused on just cleaning up bad questions by closing them, rather than working with the person asking to help get them to be able to work better with the community.
Lets say that it takes 15 minutes in chat to help a person (who wants to be helped in asking a good question rather than getting the answer now).
Next, lets apply Sturgeon's law to Stack Overflow. There are 8000 questions a day and 90% of them are crap. Thats 7200 questions that need work. This is 1,800 hours of mentoring per day.
The close (and down vote) is such a minimal amount of work that it allows the group within the site that is striving for a particular vision of quality that it allows them to do the most they can. Furthermore, it is not infrequent that a person who provides assistant for trying to unravel a question from getting a "why can't you just help me now?" with assorted vulgarity interspersed.
On smaller sites, with a greatly reduced amount of questions per day the group capable of mentoring as well as moderating is able to spend the 15 minutes of time without significantly impacting the time taken to moderate and curate the rest of the questions.
With 8000 questions per day, its really hard to look at all of them. As I write this, there are only 16 people who have exhausted their close reviews for the day ( https://stackoverflow.com/review/close/stats - only 16 have 40 reviews). That doesn't show the people who are doing new questions, but it does give an idea of how shallow the bench of people who are spending time to moderate the site actually is.
Getting more people to help out would be great, but most people aren't doing anything to help.
There are also people who believe that up voting a newbie question and saying "welcome to the site" in the comments without improving the question is helpful.
The first post review and triage queues are intended for providing this help. You can see that this doesn't always work well ( https://stackoverflow.com/review/first-posts/19570266 or https://stackoverflow.com/review/first-posts/19569647 - note the not even trying to fix the grammar of the question or asking for the necessary information or providing help on how to improve the question, just no action needed)
I don't expect every bad question will lead to a valuable mentorship opportunity. I've certainly encountered my fair share of those that weren't worth spending my time on.
Bad answers are more problematic; there's good reason to be vigilent about those.
And of course spam, obvious homework, and just completely incomprehensible questions should be closed instantly.
What I see is questions which are not phrased well but you can actually work out what they're asking being closed. So by the time I've written up an answer, the question is closed, and my answer is wasted. I can copy my answer elsewhere, and vote to re-open, maybe after editing the question to make it more clear, and it might get re-opened, but then I have to spend a lot more time and attention waiting for that. By closing out questions too aggressively, not only are people putting off newcomers, but also wasting the time of those answering questions.
> The first post review and triage queues are intended for providing this help. You can see that this doesn't always work well ( https://stackoverflow.com/review/first-posts/19570266 or https://stackoverflow.com/review/first-posts/19569647 - note the not even trying to fix the grammar of the question or asking for the necessary information or providing help on how to improve the question, just no action needed)
Yeah, one of the things that really frustrates me about the review process is that they just incentivize taking some quick and easy action, not actually doing the right thing.
Effective moderation is not easy, and a very different skill set than answering technical questions, but the rep needed to perform many of these mod duties is just given to those who accrue enough rep.
So that does exist, but it takes a LONG time for it to get cleaned up in some cases. And if people jump in with a "this might answer your question, hope it helps", it will likely never get deleted.
Its not that these questions hurt the site - bits are cheap. Its that they hurt the search results and the perception of the site. Admittedly a single reddit data point: https://www.reddit.com/r/stackoverflow/comments/8d15h4/10000...
> The toxicity is in all the unanswered questions.
---
> What I see is questions which are not phrased well but you can actually work out what they're asking being closed.
Consider fixing the question with an edit before writing the answer so that it won't be closed when you get around to writing an answer. This way its a good question from an earlier point in the life of the question. Furthermore, it makes it easier for other people to provide answers too. Leaving the question in a poor state with an answer makes it harder for the google only user to find the question and understand what is being asked.
---
Doing the right thing in review takes time. Many of the first post or triage reviews are done by people who haven't... fully bought into the philosophy of answers for people who haven't asked the question yet. They look ok to the standards of a 500 rep user who doesn't see what Jeff and Joel were trying for with Stack Overflow ( https://stackoverflow.com/help/privileges/access-review-queu... ).
There's no instruction for people for how to help in the review queues. As such, everyone is doing their own thing with their own "this is the quality that I'd write at, it looks ok." The only way to correct this currently is with review bans... and that has its own problems with negativity and the perception of Stack Overflow as elitist.
Heard so much from so many colleagues over the years about how SO is inaccessible and unwelcoming, and started to realise why. I'm glad SO themselves have been on the same journey, because they're far better placed to do something about it!
I love Stack Overflow, and it's sure a valuable if imperfect resource, but this is something that drives me bonkers about it.
If the question is intelligible enough to receive an answer, and if your answer is potentially helpful to the asker, then it's well-asked as far as I can tell, and the scoring system can take care of its relative utility.
The additional level of moderation doesn't seem to have added much value over my time participating. The closest thing I can think of as nice is combining duplicates, though moderators often seem to miss subtle differences between questions and in some cases information gets lost in the end. Generally, the moderation focus often seems legalistic or driven by artificial incentives rather than primarily focused on improving the breadth, depth, and quality of the site as a technical resource.
Honestly, I'm pretty sure that a significant portion of the hostility people experience is coming from moderation actions.
I might hope the SO team has the intention of going to town on that problem in general, but I don't see it specifically mentioned in today's discussion. I'm sure that if they took it deeply seriously and engaged with enough specific situations where it's been a problem, they could find ways to do better.
I think today's announcement is a really good indication, though, that they're listening to people who are having problems with their SO experience, not just to people who'd congratulate them for their (deserved!) accomplishments and for whom everything is more or less fine.