This is called the XY problem and is extremely common on tech related forums and mailing lists.
This is called the XY problem and is extremely common on tech related forums and mailing lists.
The thing people don’t get is: when you answer on SO you’re not answering that poster. You’re answering anyone who will ever have this question. It’s quite arrogant to assume it will be an XY for every single person forever more.
The proper way to answer is to answer the question exactly as ask and then insert your “but you probably should be doing Y instead” at the end.
Doing things the right way is BETTER.
If you can't, you should add a bit to your question saying "I know the standard way is to do Y, not X, but because of reason Z I can't do it."
Most readers will be able to use the "right way".
My experience with less experienced developers is that they ask the exact question as that is where they have stuck but they are ignorant of the better ways.
I do tend to answer differently depending on the questioners reputation. If they have a higher rep then I can assume they know what they are doing.
Because you're answering every person who ever will ask, a lot of the people who pass through your question & answer will be people who don't know the difference between the right way and the wrong way. If they want to know how to do something the wrong way, because they don't know what the right way is, an answer that simply tells them how is a bad resource.
It's not enough to tag caveats onto such dangerous answers, because people can't read. Instead, newbies should have to overcome a sufficient amount of opposition to filter out those who don't know why they're doing what they want to do, and the rest can make the little effort of being very explicit about why they want to do something the wrong way.
Can't be done, will be marked as duplicate.
Then Googling for doing X with Y gets you a bunch of closed questions and a labyrinth of links all leading to a question that was answered 10 years ago on a different software version where Z possibly was the right way to do it but now isn't.
And of course there's no way to reopen the question because it has been closed by a level 15 Magister Templi moderator and a lowly level 3 apprentice moderator like yourself needs to either answer 146 more questions or moderate 192 other questions to clear enough arbitrary hurdles to achieve holy question reopening powers.
And there's possibly an appeals process but that involves recruiting 13 moderators who you have to convince to give this question special treatment and declare that one of their number of sacred moderators made a mistake.
Some of it is that SO has gamified shitting on and suppressing the question/asker instead of gamified providing the answer, and built a culture of toxicity that tolerates the abuse of the tools in this fashion.
And when the CEO asked them to tone it down maybe 5 years ago they basically did a collective “am I so out of touch? no, it’s the askers who are wrong”. Extremely funny to read the meta responses to that at the time.
https://stackoverflow.blog/2018/04/26/stack-overflow-isnt-ve...
https://news.ycombinator.com/item?id=16934942
(admittedly "women and people who don't speak english well are particularly unlikely to adopt to the pedantic neckbeard culture we've built" is a spicy take for your average SO'er, or wikipedian, but it's also not actually a wrong one either. SO's culture problems probably do disproportionately chase away users with marginal engagement, nobody likes putting up with formalized neckbeard culture and those users have absolutely encountered it before and absolutely have an aversion/revulsion to entering yet another online neckbeard nest. I think this is a case of “he’s probably right but the medicine would have gone down better with the manchildren if he hadn’t mentioned women and minorities”, and he’s also right that those issues have continued to bury SO over the last 5 years.)
Then you have to do two things in your answer:
1. Correctly answer the question as asked.
2. Add your opinion about the "right way" to do it.
If you only do #2, you are failing "every person who ever will ask."
[0]: https://www.joelonsoftware.com/2000/04/26/designing-for-peop...
You know that's not your responsibility. If some newbie makes a mistake, that's their responsibility (and a learning experience for them).
And frankly, I think you greatly overestimate how valuable and essential your non-responsive "you're asking the wrong question" answer is.
> https://www.joelonsoftware.com/2000/04/26/designing-for-peop...
That link is about users. You're misapplying its lesson if you're using it to justify not answering a developer's development question.
Quit coming up with excuses for not answering the question.
Why do you think "users" is an inaccurate description of the role question askers have on a developer Q&A board?
Put another way - when was the last time you used a development tool, or a library, or some other resource, and sat down to read the full documentation of it? I would posit that that's very rare as an activity, even for developers who need to develop a deep understanding of what they're using.
It's much more common to learn by doing, and the limit of that learning is very often what the developer can't do. Answers which easily enable developers to do something are overwhelmingly likely to lead to developers doing that thing - much in the same way that a long page of library documentation which gives an example is likely to lead to developers repeating that example, even if at the end of the docs, there's a little caveat saying that you shouldn't follow the example for so-and-so reason.
>If some newbie makes a mistake, that's their responsibility (and a learning experience for them).
But is it a good experience? Sure, maybe they'll learn that they always have to read the whole answer before they use any part of it. But we sensibly have abandoned this no-guardrails approach to teaching in almost every arena where it's been used, because it's not really suited to the way people do things in real life - and in real life, people often end up affecting others with their mistakes.
Does junior developer who learns how to glue SQL strings together in their favourite programming language, and makes the "small mistake" of not learning anything about SQL injection in the process, benefit from the learning experience when they cause a data leak? Do their customers? Or should the learning resources they access maybe use the pedagogical tools available to make sure those kinds of mistakes are really hard to make, even if it occasionally inconveniences a seasoned pro?
The are a lot of different kinds of "users," and I think the kind of thinking in that article is totally inappropriate when applied to developer Q&A board.
To be perfectly blunt: the result if what you're advocating is to condescendingly treat experienced people as newbies so dumb that their question should not be answered, because you think they're so dumb the real answer might distract them from the lecture you want to condescendingly give them.
People like that are super annoying and almost always unhelpful.
Every single fucking question I ask on SO has some lazy condescending dude chiming in to answer the easy question he thinks I should have asked, after he totally failed to understand the constraints that made my question hard. Of course, lazy condescending dude always thinks he knows better.
But I think it will always be up to the user of SO (not the poster or answerers) to make the real judgement on what is useful.
Often I think SO is useful to use as a bunch of puzzles folks solved. You gotta decide if they are relevant.
SO is at its best when it’s actual error debugging IMO. When you google some specific error whoever else has the similar error it’s right there. I feel like GitHub is replacing this more and more though - I often get the GitHub ranked specific error higher than Stackoverflow these days. Usually you get better discussions on the GitHub issues too, for a multitude of reasons. Two off the top of my head:
1. all of the people working on the stuff related to the issue are very close by
2. the moderation is not nearly as heavy handed as SO.
ChatGPT is also much better than SO as well if you can give it enough context and the thing you are working on wasn’t built on stuff released after 2021
I also really like Stackoverflow for current event type stuff, like black swan type events. One recent example is when google’s Paris data center was on fire and infra guys were helping each other out trying to get systems online.
All of this combined means that StackOverflow the forum is probably on its way out though. They made the mistake of taking VC money and the model hasn’t really proven profitable so they have really made some poor decisions to please the vc overlords.
I won’t miss Stackoverflow much other than nostalgia unfortunately - better alternatives have arrived. Seeing the decline of all of the other Stackexchange sites kind of sucks though. There aren’t better alternatives for many of those
Both sides can identify ChatGPT answers as being wrong. The question is how can they be deleted. The moderators say they can delete a lot by manual inspection. SO say that AI tools were deleting wrong ones.
Which is more than Google, or a previously answered StackOverflow question, can say.
But then, it’ll probably greatly vary depending on the problem you are facing.
Bots closing issues because someone doesn't spam the page. Closing as duplicate of (non related bug). A slew of random solutions that are only tangentially related and don't really solve the problem.
Comes up all the time when people ask how to do things in bash/sh. I know there are better tools for the job, but this is the one I have.
Explaining what the XY problem is to people who are telling you about it's high false positive identification is, itself, an XY misdiagnosis.
Your reply is an example of what people are complaining about - you are addressing the issue you wished was asked, not addressing the issue you were presented with.
But those are correctly diagnosed XY problems. No one is complaining about those.
My parent was told the issue is too many incorrectly identified XY problems, and responded with an explanation of what the XY problem is.
That is the example of a misdiagnosed XY problem, which was kinda my point. This sort of behaviour makes the actual experts leave the site in droves.
If, when answering a question, one where to discard the answer the minute they write "Why would you want to do this?", you'd get much fewer incorrectly diagnosed XY problems.
As I said in a different thread, ChatGPT sometimes does this as well, but at least with ChatGPT, when it is answering a question that was never asked, it doesn't also act like a condescending jackass. There are no "Why would you want to do this?" type of questions.
But on second consideration, I suppose you would not, either, and I suppose you are specific'ly talking about responses which, each taken as a whole, are easily interpreted as some form of hostile.
I responded to the person above me when there were literally two other comments in this thread.
> Your reply is an example of what people are complaining about
Defining something is not an example of an XY problem.
> - you are addressing the issue you wished was asked, not addressing the issue you were presented with.
As I am not much of a programmer but work on electronics and computer hardware I deal with different types of people than would be on SO, so I am not addressing anything but my own experiences.
And then to ice the cake you find the question because your question has been marked as a duplicate of the older question where they answered using unix binary tools… and you specifically asked about doing something in “pure shell script” or something similar to that phrase.
Stack overflow is fundamentally a system design that breaks down at scale due to misalignment of incentives that are necessary for it to work well at smaller scales (as can be seen in the successful operation of various smaller Stack Exchange sites for various topics such as Law, Aviation, Physics, etc)
I must admit that I don"t buy in to that philosophy and like using one tool so for scripting I would do all in python, so I would not be answering that question.
Many Linux users think that their way is the only and that means bash as the shell and many others like GNU coreutils, gcc etc. I am an MacOS user and my professional career includes several non Linux Unixes so I know bash is not the only shell - try csh for fun - which is partly why I use python or previously perl as they are the same on all machines
You may know, but someone else asking the exact same question may not.
So sorry then, but listing every constraint and design descision it is.
You don't need to do that, a simple "I know what the XY problem is, and this isn't it" prefixed to every question you ask should be enough to stop the race to tell you all about the XY problem.
I mean, at this point it's clear that more people know about the XY problem than people ho don't.
True, but that logic goes both ways: Unless told otherwise, whoever reads the question, isn't required to assume that there is a constraint.
If I get asked how to water plants with a sieve, without getting told why getting a watering can is impossible, "You don't, use a watering can", is a perfectly acceptable answer.
Especially when the question is aked in a question archive, rather than a help-forum.
If specific constraints apply to a question, then they should be a part of the question.
IOW, any time you think you have spotted an XY problem, you're probably wrong.
And that's the problem with SO moderators and regulars. They classify everything as an XY problem because it allows them to answer the question they know the answer to rather than answer the question that was asked.
One common example I've run into lately, as I've been reading about state machines, is people asking how to implement a simple react component as a state machine, and others objecting to the premise of the question since using a state machine for a simple react component is obviously a bad idea.
I’m sure if you’re twitter Kafka is actually a better solution, for everyone else, it isn’t.
Want to host videos on a laptop (which has a big SSD) and stream them to a Pi (which is attached to a big screen) over a LAN? Hey, here's a post about how to host videos on a Pi and stream them to a laptop! Upvote and share! My point is, you don't even have to be trying to do something all that strange for people to apply the XY Problem logic and refuse to help you.
(Solution: NFS mount and a patient understanding that the Pi cannot play certain kinds of video, so you'll need to transcode some of them first. See? Nothing bizarre, but surprisingly outside-the-box given what I could find online at the time.)
It’s fine, I think, to answer a question and then suggest a better method. It’s presumptuous in the extreme to dismiss a question with some pseudoacademic neologism.
1. To do Q that way you would to <solution, or at least pointers to how to find the solution elsewhere> but you will likely it far more efficient/easy/whatever to do <something else> instead.
2. Q can be achieved far more efficient/easy/whatever by doing <alternative>, but if you are stuck with using Y then try <solution or pointers as above>.
Of course this relies on you correctly deriving that they are trying to achieve Q, or them explicitly stating the fact. Maybe instead they are trying to get to K.
"I'm trying to learn foo.js and attemt to do so by porting Tetris to it. I know foo.js is a terrible option for a game. So. How can I write to the canvas from foo.js?"
Is often answered properly, if only because to many it's a nice puzzle.
"How can I write to the canvas fro foo.js?" Is different in that it will attract a lot of people explaining that foo.js deliberately did not allow writing to the canvas, because Z"
This may help less experienced engineers not understanding their problem set, but for a more experienced engineer it's absolutely obnoxious to think of all the ways to defend my question so I don't have to deal with a rush of "oh but you should do this instead" answers getting up voted that don't actually answer my question, then asking to accept the answer.
To one set of users it's possibly helpful, to another it's useless if not also condescending, often condescending to both sets.
The bottom line is now, SO is so filled with these types of responses, I can't expect to get a very specific question answered, which is really the only reason I'd ask a question in the first place, so why use it?
There are plenty chat groups now via Slack and discord in my field where I can get much more direct answers. People aren't worried about getting down voted for a bad question, people aren't giving low quality answers to boost their points. So for me, SO is practically dead except for the occasional obscure error message that I can query for there.
My experience is that it's not so much a defensive argument, but context. My example was poor in that it could be misread as a defensive argument, sorry about that.
I meant it to show how adding some context changes the question. Because, in programming, it is all about context. AKA that "It Depends" meme.
What's the name for the "I don't want to use a sledgehammer to solve a problem that should be solvable with a screwdriver" problem?
Or in this case, the "spinning up 300 lines of code to integrate an XML parser vs. a dozen lines of code based on regexes" problem. For reasons that are unclear to me, XML parser libraries tend to be painfully difficult to use (speaking from personal experience with 4 different XML parser libraries).
I don't think it's a surprise to anyone involved that an XML parser is going to solve the problem.
Here, I'll coin a name for a problem I see much more often, which is called the XX problem:
1. User has problem X, and asks for a solution for it.
2. People viewing the question decide that the original user actually has problem Y.
3. Those people tell the original user that they actually want to solve problem Y, condescendingly flame the original user for not asking about problem Y, and if they have the power to do so, edit the original user's question to be asking about problem Y.
4. Those people use poorly-thought-out pop-social-psychology to justify their shitty behavior.
5. The original user still doesn't have a solution to problem X, and they really needed a solution to problem X all along.
It is not without irony that examples of the XX problem are sometimes also examples of mansplaining.
You realize that it's dismissive and condescending to ignore the problem I'm describing and respond with an assumption that I'm unaware of the tone of my post, right? Pot, meet kettle.
Because you're propagating the idea that you (or anyone asking questions) knows better what a person asking needs than the person asking does. Telling people you know what they need better than they do is pretty close to the definition of condescending.
People are emotional because nearly everyone who asks a question on the internet has to deal with people telling them "You don't actually want an answer to your question, you want an answer to this other question." By boosting the signal of the horrible XY problem idea, you're contributing to that problem.
I'm not saying this kind of miscommunication never happens, but the opposite is actually far more common.
Unfortunately I had no idea about the perverse incentives for question answering and the terrible moderator practices on SO, so I walked into a minefield giving an answer here that I thought was helpful based on my experience as a hands on technician working directly with people -- but it turned out to be a lightning rod for people's frustrations on these issues.
But apparently I can't comment as a new user so I guess the discussion will just be "because calculus classes use matrices in examples".
[0] https://matheducators.stackexchange.com/questions/26417/why-...