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.
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.