How do I fit this square here on this here car so that it gives a smooth ride?

and it comes with all the requisites to be a valid SO question (description, code, error messages, bolts & wrenches), do I then answer

Fit it like so and make sure you tighten the bolts properly

or do I start off by saying

You can't possibly want that, so I'll assume you want a circular wheel instead and then you proceed like so...

In other words, should I consider - and possibly change - the context of the OP and give the answer cast in a specified context that makes more sense to me, or do I first point out to the OP that the context is shaky and that s/he better review that first and re-state the question?

Or first ask for clarification. I often see people answering too quickly (not necessarily referring to you). Maybe they're making a car that should drive up and down the stairs. OPs often forget to give context details that are so obvious to them they forget it's not obvious to others.
– Gert ArnoldMay 11 '14 at 9:09

20

What makes you sure that the road intended to use isn't designed especially for square wheels?
– JensGMay 11 '14 at 9:12

3

Yes, it could of course also be a space car
– PatrickMay 11 '14 at 9:21

@JensG most users asking about square car wheels actually need a bicycle with training wheels. If OP is absolutely positively certain they need square wheels, they can see that their question is contradictory and they will (or have to, anyway) explain properly why they are asking such a nonstandard question.
– CodeCasterMay 11 '14 at 10:25

3

@CodeCaster: But isn't that what SO is about? Helping people out with issues that eventually migrate them from needing training wheels to doing the Tour de France?
– PatrickMay 11 '14 at 11:50

Yes, a little knowledge is a dangerous thing. It is absolutely hateful when someone with (some limited) knowledge in a specialist field blurts out "Oh, you SHOULDN'T DO THAT!"
– FattieMay 11 '14 at 17:35

5

What if doing it the wrong way is outright dangerous, and you can't know whether it was wrong until it's too late? I don't have a car analogy, but a case in point is cryptography. Most questions there show a lack of understanding of basic principles. Somebody wise once said that programming cryptography is like arming a bomb...
– ntoskrnlMay 11 '14 at 17:59

If users knew how to ask good questions, volume on the site would decrease by about 90%.
– Gordon LinoffMay 14 '14 at 17:45

33

No, no, it NEEDS to have square wheels so that it doesn't roll away when I park it on a hill. Please read the question fully! I do NOT WANT an answer involving circular wheels.
– Dawood ibn KareemMay 20 '14 at 7:38

3

@DavidWallace I want to use all of my daily vote allowance on your comment
– mjsMay 20 '14 at 8:03

Even if you can provide sample of car with square wheels - then, please - do that carefully. You should do both things in that case - both provide example and explanation of why is this bad. You also may provide some alternative (that, usually, will improve the answer)
– Alma DoMay 20 '14 at 11:57

9 Answers
9

I'd ask them if their track is so very unusual that it necessitates square wheels. In general, asking questions before condemning the message/messenger is useful and kind. Underlying assumptions and prejudices sometimes inhibit our imagination.

I am now wondering if including graphs/pics/videos generates 10x upvotes.
– rickhg12hsMay 17 '14 at 7:24

And as you don't know if A or B, toss a coin and close against the duplicate of A or B already. When OP answers the comment and you see that tossing the coin did miss, offer the other duplicate or re-open in case there ain't one.
– hakreMay 18 '14 at 11:46

Except answering like that will sound snarky however you phrase it, and so you will fall foul of the new Code of Conduct.
– RaedwaldAug 14 '18 at 5:48

@Raedwald Asking directed questions to get clarification has worked for me 100's of times - mostly in person, but also online. With a sincere desire to help, snarkiness is rarely perceived. Ofc, if help isn't the goal, slamming them with some severe Socratic Method is a cruel option. But why would anyone here want to do that?
– rickhg12hsAug 14 '18 at 6:00

I would just say you should be very careful about assuming the person is an idiot/beginner and is falling in to a well-known "you shouldn't do that" situation in your specific field of expertise. A good example is when experts ask questions about using goto (in sophisticated algorithms, say). You always get a few "undergraduate" clowns who heard somewhere that you "shouldn't use goto!" yelling about how they heard that you shouldn't use goto.
– FattieMay 11 '14 at 17:39

12

@JoeBlow In my experience, when the question is coming from an expert who wants to do something somewhat unorthodox, there are clear signs that is the case. They'll either outright say "I know goto is not a good solution for many cases," or there question will make it obvious why goto is a good solution in their case.
– just.another.programmerMay 11 '14 at 17:57

@just.another.programmer yes that's what I think most of the "experts" would do, and I try to pretend to be an "expert" by doing that too.
– Richard Le MesurierMay 11 '14 at 18:08

1

THIS. Answer the actual question of how to do X. Then explain - gently and politely - why doing X is a bad approach if they're trying to achieve Y, and what a good approach is instead.
– DVKMay 12 '14 at 0:42

4

As an expert, I frequently get "You shouldn't do X" answers/comments that are annoying as hell. Just because I didn't spend half my question explaining WHY I'm doing "X" and that my IQ and expertise are enough to know that I want to do X and not Y, doesn't mean you should assume otherwise and answer with a smug - AND useless "Don't do X". Frequently, my asking about "X" is simply a distillation of a larger problem, or simply poking under the hood of a technology.
– DVKMay 12 '14 at 0:44

1

Sometimes you're also working with obnoxious upstream code you have no control over, so the question becomes a game of "how can I do this with this obnoxious limitation?" It's frustrating for both the person asking the question and the person answering, because both of then know the real answer is "you REALLY shouldn't do that", but the asker is stuck knowing they HAVE to do it in a really stupid way.
– LinearZoetropeMay 14 '14 at 9:46

Answering those kind of questions too early may prove fruitless in cases whereby the OP changes the question in a way that you didn't imagine, rendering your answer less ideal if not plain wrong.

Asking for clarification in the comments section would be my recommendation. There are cases whereby it's abundantly clear the OP has an XY problem, but applying this logic to all questions borders speculation.

Actually I have reconstructed the question text and code entirely, as it was pulled out of OP using various comments.

The base question itself, "How do I reset a stream in .NET" was answered within 5 minutes. It also had been years before, so looking at it like that it should have been closed as a duplicate instead of answered.

Please note the offending question is answered in that duplicate. This is how I think the duplicate system works. The question does not need to be the same, as long as the question asked is answered in that thread. The duplicate linked also is (for me) the top web search result on the query "C# reset stream".

Apart from being a duplicate, as which it could have been closed, it clearly is an XY problem. Anyone with any programming experience will notice reading a file twice for first counting the lines and then actually reading the lines is a bit convoluted and will perform badly on larger files.

Asking the proper question will get it answered, and usually before it becoming a question on SE.

Remember:

give a man a fish and you feed him for a day; teach a man to fish and you feed him for a lifetime

By not properly reading and understanding the real question behind the question, but dumping an answer that seems to solve the most obvious problem, the answerer gets a few points and the asker can happily continue copypasting code. Both haven't learned anything.

The proper answer was ultimately given:

Why not just read it into a List<string> and then build an array from that? Or more simply still, just call File.ReadAllLines:

string[] lines = File.ReadAllLines("TestFile.txt");

The problems addressable from this example and other experiences:

Question askers may or may not have a clue to what they're doing. This may cause them to ask the wrong question. Their experience level often is not clear from their profile, nor necessarily from their language as many non-native English speakers (such as me) take part.

Question askers may have made a design decision earlier on which created the need for the question at hand. Preventing the design mistake could render the question obsolete. The mistake may or may not be fixable.

Duplicate flags can be disputed in comments by users who don't see the the similarities, usually causing the question not to be closed. This can be fixed by revising reference questions.

While comments are being exchanged (or not, especially new users will ask and run) about some things that must be cleared up before a proper answer can be given, users will post answers to their interpretations of questions without conforming their beliefs with OP.

This all boils down to either the experience and lack thereof in askers and answerers, or not understanding that handing out fish by the dozens will leave you both hungry by the end of the week.

The main problem I have with users answering duplicate, too broad and XY questions causes is that knowledge is spread out. Yes, the askers are helped for now and the answerers get reputation, but more and more knowledge that may become outdated or otherwise needs maintenance is spread amongst more and more answers, and unhelpful or plain incorrect answers are less likely to be noticed because of the sheer volume of new content on the site.

Users with the appropriate voting rights and tools and experience are unable to keep up with the stream of questions that should be closed or redacted.

Experience does not mean reputation, by the way. Julian Reschke hardly ever gets an upvote while he is the HTTP authority on this network and "Principal Software Design Engineer" (WinAPI designer) Raymond Chen's comments are often ignored.

There is one silly solution I've been thinking of lately, which could become a feature request later to vote on appropriately, consider this my sales pitch:

Questions from certain users* should not be posted open, but temporarily** put on hold, so it won't attract any quick answers***, as such answers most likely are duplicate anyway. During this 'timeout', users can use all tools available to them (edit, flag, definitely close, except reopen) and request clarification using comments.

The 'reopen' action should be only available to a select group of users****, enabling them to 'green light' a question before the automatic on hold-timeout expires.

*: new users or users with a bad question history.
**: for example the first 15 minutes.
***: users can type a draft answer, which they'll have to explicitly submit
after the question unlocks.
****: moderators and another group of users.

This new group of users will have to be responsible for redirecting the askers of duplicate, too broad or XY questions to resources the asker can use to narrow down or even solve their issue. Other users can then take those users' behavior to learn how one should properly interpret a question and act accordingly.

It's about setting an example, for which I think for now most high-rep users apply.

Thanks @CodeCaster for this elaborate expose, going well beyond the initial issue, but placing it in the wider context of Q&A quality. I concur that a threshold for entering a question, especially for new users, may be a useful feature. Having been around on SO for a mere two months I cannot reflect upon the good ol' days but with my BBS and Usenet upbringing - yes, that old - it is not hard to establish that access is too easy, judging by the flood of questions that reek of no analysis, no research, no effort. A "no pain, no gain" approach might remedy (some of) that.
– PatrickMay 11 '14 at 15:29

If the question is asked "in good faith" and has enough information, so that it looks like it can be rescued, I try to read the OP's mind and answer the question I think is really being asked (and explain why). That's the essence of being a good teacher: improve the question as you answer it.

But if the question is just poor quality, I mark it for closure (unclear or not enough info) and downvote it.

In fact, I pride myself on my ability to do this - and I also upvote other people who do it, and I sometimes comment to encourage them, as here: stackoverflow.com/a/23594990/341994 Just a small example, but my point is, this answerer "read the OP's mind" and got to the heart of what the real problem was even though the OP didn't.
– mattMay 11 '14 at 18:10

Here's an example of my own: stackoverflow.com/a/23001020/341994 I felt that the question was wrongly pounced on and snarkily pushed back and downvoted and closed by others, who looked at what the OP said (badly) but didn't think about what he might mean. I did the latter and so was able to give him a sense of what he was after even though he hadn't used any of the right words. (By the way, the moderator 0x7ffffff seems to me particular guilty of this sort of premature impatient closure: the question was phrased poorly, but was quite legit and rescuable.)
– mattMay 11 '14 at 18:15

Personally I tell the OP that he/she better go for a different approach which spares him/her time and nerves in the future. We also have to think about future visitors that may use a better approach too then when reading the answers. Since we like to build a knowledge base of professional answers we do not only want to help beginners fixing their horrible code. Tell them what's wrong.

Sometimes I also directly answer the question if for instance the OP tells me he/she can't change the database structure to fix the problem. But leaving a note for a better solution is always good.

-1. As a professional and an expert, sometimes (or rather, almost always) I ask questions on how to do "X" for a reason, not because I don't know enough to not be aware of "Y". It's OK to ask a clarifying polite comment "Have you considered Y" and then, in case of a negative, to answer this way, but NOT OK to blythely assume incompetence.
– DVKMay 12 '14 at 0:46

It's a judgment call of course. Answers on Stack Overflow always have to walk the line between being too direct one one side and thus "answer but not teach", and too invasive on the other side and thus not "just answering the damn question".

Often I find that it's quite possible to tell how where your answer should go on this spectrum from the way a question is presented. If the asker knows the field and needs something unusual, they will usually have the wits to explain briefly the motivation for their request and why the "standard" approaches don't suit.

On the other hand, it is very unlikely that someone who doesn't know the field actually needs an unusual solution and just happens to stumble across a problem where standard techniques don't apply. And even then such a person would be best advised to develop some understanding of the field first before embarking on something unconventional.

As others have suggested, you may very well use the comments to get clarification, but you can also get a decent signal on whether you should start working on a question right away, or perhaps just walk away, just from the question itself.

If it's clearly a poorly thought out, incompletely conceived, inaccurate, or uninformed question, I usually answer their first question with whatever assumptions I need to make it work as if it were an engineering contest question -- where you are given limited resources or inappropriate tools or methods, or limited to some specifically non-use item.

I give them something slightly over-board or outrageous, but essentially correct. "First, you're going to need an infinite number of square wheels..."

It may not be fair, but my first attempt is to derail their train of thought and then sneak a look at their map to see where they're going.

After they ask what I'm on about, I get to ask exactly what did they meant by their question -- what exactly are they trying to do, where did they think they were headed. We proceed from there on foot if necessary.

But there is a strong high-brow lobby on meta, who seldom answer questions on SO but prefer to teach others how to answer. They will tell you that you should answer the first variant. And then they go and flag your answer with most ridiculous comment "This does not provide an answer to the question. To critique or request clarification from an author, leave a comment below their post". Most people here cannot grasp any idea of abstraction. And their only idea on answer is a strictly literal and direct one.

In a way, it's the essence of Stack Overflow, though. This site is not for helping people - it is for answering questions.

Many questions are way too broad and demonstrate this behavior. A question like "How do I create a database table for a user when they register?" should be closed. It's two questions at once ("How to run code when a user registers" and "How tob create a database table from code"). Besides being closed for being too broad, it is a really silly question and shows a bad design. If that question gets answered, you can expect OP back in a day or two with a question like "How to dynamically add tables to Entity Framework" or equivalent follow-up questions inherent to their bad design.
– CodeCasterMay 11 '14 at 10:56

2

I disagree with your last statement - it is over simplified. The goal here is not to help one specific person but rather to provide answers that can be helpful to more people than only the OP.
– LixMay 11 '14 at 10:59

In some situations you don't have the luxury to change Y, so an answer with a solution Z that solves X, may not be helpful at all for the OP.
– Steinar LimaMay 11 '14 at 11:15

20

@YCS: Why do you constantly whine about the site and still use it?
– juergen dMay 11 '14 at 11:34

Yeah. If you don't want to use the site, I could use your 80k rep!
– bjb568May 12 '14 at 0:48

1

Right on the money! I've had some really very helpful advice on this site but it is always a struggle to adhere to the silly rules that seem to support only one type of question. SO is mostly for silly questions you can google anyway. Just look at the top score questions. How do I type Hello World in C? and et cetera. If you ask something more complicated - that requires discussion and the SO system does not facilitate discussion - just wanking with the format of the question all the time. It's especially bad in niche topics, where the few moderators gang up on defenseless people to nitpick
– DraxDomaxNov 20 '15 at 10:20