Hacker News new | ask | show | jobs
by warty 2977 days ago
There's nuance here. There are plenty of cases where individuals ask XY questions, meaning they've gone down a strange route to solve X and now need help solving Y, and it's always been debated within the community on whether you should solve X or oftentimes go to great lengths to solve Y. I've seen many questions where a solution to X is answered and heavily downvoted. I'm not sure how you resolve that.

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.

8 comments

Your kind of answer is precisely why I find SO useless.

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 people that really need to know how to insert a 500mb string will actually explain why they need to do so (beyond the typical “it doesn’t work”).

The ones that can’t explain why are almost always unaware of the actual problem they need to solve.

That's a pretty big assumption on your part. Unless you're going to cite some SO stats or a study on it, I'm going to assume that you're wrong.

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.

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

This removes a great deal of utility from the site. The majority of value in the site is not answering one individuals question at a time. Every single time I ask the search engine a programming question SO pops up as the first result. Most of the time that link has the answer I need, but every single time the conversation has violated some inane rule and has been shut down. Every single time. The rules are wrong, it is that simple.
> Most of the time that link has the answer I need, but every single time the conversation has violated some inane rule and has been shut down. Every single time. The rules are wrong, it is that simple.

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.

95% of the time I want to do something in a clearly sub-optimal way is because I'm required to use an unmodifiable code base that forces a path.

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.

> When a user asks a question on X, it would be better to first assume that he knows what he’s freaking doing.

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.

When you are doing something at work, often you have to do something that seems absurd to a random person on the internet, simply because the easy, sensible way would rely on things and people that are not under your control. A lot of people come from a perspective where you should be able to administer everything in an organization yourself, and that doesn't happen in any place I've ever worked. The vast majority of my experience with 'real world' programming is working around institutional barriers and silos.

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.

My experience is always been like this:

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.

Mine too. As a result I ask a question on SO as a last resort, and spend more time preemptively addressing those kinds of unhelpful responses. It always seems like I have to make at least 3 exasperated comments to try to keep the question on track.
That's what's called an "XY problem": you want to do X, and someone wants to write about Y, so he tells you that you actually want to do Y instead of X, and goes on to explain Y in excruciating detail.
I am an active contributor to Quora, which employs similar mechanics but has much higher adherence to being nice. When I see a silly question, I write a direct answer to that silly question and then write an answer to the question that may have been implied by it. I've written answers on data destruction for drug dealers whose phones are due to be seized, for example.
> There are plenty of cases where individuals ask XY questions, meaning they've gone down a strange route to solve X and now need help solving Y

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

StackOverflow tends to want to make questions valuable to more than just the asker, but it's really annoying to come to a question from Google and find that none of the answers actually address the question that was asked.
Bad questions bad accepted answers go hand in hand.
Oh look a question, oh look bellow the accepted answer is the real answer to the question!
Yeah, this actually gets handled reasonable well by the combination of the accepted answer and voting dynamics. You can see which answer(s) everyone found most useful, and you can see the answer that the asker thought met their threshold.
> Me: Don't do this, your compiler isn't designed for this! Consider loading the text from a file instead!

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.

I understand that sentiment, but for the overwhelming majority of poor questions the "if you really want to do that anyway" isn't useful to OP - they're clearly confused and looking for something else. In those cases, it's not worth your or the question asker's time to write an extended answer (especially if that goes from trivial to complex, overengineered, and esoteric). The StackOverflow community refers to these as XY questions.

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.

If only every moderator/admin was as reasonable as you!