How do I explain ${something} to${someone}?

One of the not infrequently asked questions that shows up on Software Engineering.SE is along the lines of:

I am trying to explain the differences between a NoSQL database and a relational database to a manager. How do I do this?

These questions generally take the form of "How do I explain ${something} to${someone}" where something is a programming topic and someone is not a programmer.

This is particularly relevant with the oft said "If you can't explain it to a five year old, you don't really understand it."

Why do these questions keep getting closed? What can I do to ask them in a way that doesn't get closed?

• I'd guess you'd do it ${somehow} – jwenting May 1 '14 at 13:45 • "If you can't explain it to a${number} year old"* – AD7six May 1 '14 at 15:08
• Send ${someone} to get tutoring in it from their${grade}-th grader. – Kaz May 4 '14 at 7:15
• As an additional data point, I've seen a few cases on Security.SE where people ask such questions and get reasonable answers. E.g., How to explain buffer overflow to a layman and How to explain heartbleed without technical terms. – Brian May 5 '14 at 20:13
• @Brian it is indeed possible to have good questions of this form. However, the first works from an abstract 'ideal' and the second has the restrictions of what is acceptable and not built in. Those are likely more the exception. If you look at this you'll see an example of "how to win an argument" - and there are numerous ones of these, and we tend to want to avoid this with its 20+ answers with no 'right' answer. "I thought of another example", "I haven't really thought it out" – user40980 May 5 '14 at 20:35

Problems

So many targets...

The first problem with these questions is that there are so many possible audiences. How do you explain pointers to a 13 year old. How do you explain the internet to your grandfather? How do you explain testing to a manager who has pointy hair?

The way you would explain something to a 13 year old is different than the way you would explain it to your grandfather or a manager Ok, maybe the manager and the 13 year old would get the same explanation.

Key to this is that each type of person you explain something to is different. Whats more, each person you explain something to is different (maybe your grandfather was given write enable rings for teething and had a very good grasp of UUCP back in the day). Your grandfather is different than my grandfather, and your boss is different than my boss. The explanations for one won't always work for the other.

These questions inevitably get refining the specifics of explaining it to one person. At that point, the question and answers become useless for anyone else who wants to explain it to another grandfather or 13 year old.

So many understandings...

So how would you explain pointers to a peer in computing? If you do not understand pointers fully yourself, the question will turn from how do you explain them to someone else to the community explaining them to you.

If you lack the full understanding of the topic at hand, you will not be able to properly answer the follow up questions from whatever analogy you pick (the internet is a series of tubes... but how do they go to the right tube? - if you don't understand routing and DNS and all that fun stuff yourself you won't be able to properly answer that question).

On winning arguments...

One form this type of question will take is:

I disagree with my boss/coworker over [some issue]. How do I persuade them otherwise?

These questions are problematic because

1. We don't know who you are trying to persuade and what his or her reasons for those beliefs are, and
2. We don't know what you already understand.

They also suffer from another problem: "I'm trying to collect bullet points for ammunition in this argument" which can easily turn the question into a poll where every answer is a new argument/opinion.

Such questions for trying to win arguments really fall down on these points and only very rarely produce good answers. The key to Stack Exchange itself is about having high quality answers - not bullet points of "you could bring this up."

Solutions

So what can I do?

Make sure you understand the subject you are trying to explain, at least to the level you are going to try to explain it to and one deeper.

Make sure you understand that. Ask a question about that misunderstanding if you have it so the misunderstanding may be corrected and you'll be able to think of the proper car or train analogy to explain what you are trying to explain.

Consider asking in chat. While this isn't the main site and you don't get rep for it, it can help in being able to particularly address your understanding and the understanding of the person you are trying to explain it to. Consider for example, this conversation where we went through several iterations of understanding the target audience before recognizing the proper way to explain pointers.

Asking about how to explain something and working through the solution is not a 'fire and forget' question where you ask it and come back to get the answers. Those are the questions get get closed. They take a significant amount of work explaining what you understand and properly tailoring it to the audience that you understand best. While we can help with your understanding, trying to answer it for your audience is not a good fit for the Q&A site.

• I think you have missed one case: [let's say about pointers] I fully understand what memory models are how dynamic variables are allocated, when do I deal with a byref data transfer and when do I copy referenced data, but the guy (one of my former employers) had the attention span of a 4th grader on acid, and had no basic knowledge on the topic. He kept coming up with assumptions gemem should always be followed by try..finally freemem or every pointer type used has to be freed in the same block. (Which are mostly but not always true.) So what can you do with a guy like that? – mg30rg Jun 2 '15 at 12:34
• @mg30rg, clear up the basic misunderstood words and symbols. Ask him to define the words he is using and the ones he appears to be confused about. Then ask him to define the words that came before that (taking them from whatever material he is studying or should have studied or you gave him to study). Clear up the misdefinitions with a good dictionary. Misunderstood words (or symbols) are the prime factor involved with stupidity. – Wildcard May 16 '17 at 4:19

This is one of those cases where people phrase a question in a way that disguises their true intent. They are not asking for a tutorial on persuasive speaking. They are seeking a deeper understanding of the subject.

Take https://softwareengineering.stackexchange.com/q/237500/3965 for example. His real problem is not lack of skills of persuasion. He has been taught that using exceptions this way is inadvisable, and his gut tells him it is wrong. However, he doesn't know objectively why, and the person he is trying to convince won't accept an answer of "because that's what everyone else does" (rightly so). He is seeking to move past a cargo cult understanding of the topic, which is a good thing.

When people ask a question like this, you should translate it to, "What is an objective justification for this practice?" Edit it in that direction if you must, but we shouldn't penalize otherwise good questions because of the way people naturally choose to phrase them.

• But these questions are not asking for better understanding. The OP already thinks they know the answer. Why would I assume that the person is trying to gain better understanding when his question implies that he's already made up his mind, and he's just trying to convince someone else that he's right? Why would I have any interest in helping someone win an argument? – Robert Harvey Apr 30 '14 at 16:06
• We can guide the person to ask the question better. However, a editing the question to be a fundamental change that is based on what we think they think is most likely be incorrect that won't help anyone. The best course of action is to close the question quickly, possibly as a dup of another question that attempts to explain the larger issue. Closing quickly also then allows the question to be edited into one that isn't about trying to explain something to someone. – user40980 Apr 30 '14 at 16:10
• I would also further point out that the OP for the question used as an example wouldn't consider such an edit to be valid at all and restates that the question is about how he should persuade his coworker that he is right. – user40980 Apr 30 '14 at 16:18
• Correct. Most read like "I've no clue about X and want to know but am too vain to admit I don't know so I will trick people into explaining it to me by telling them I want to explain it to someone else who doesn't know about it". – jwenting May 1 '14 at 13:47
• @RobertHarvey I think it's wrong to assume that everyone asking a question which is formulated this way pretends to hold the Holy Truth about everything. When someone takes the time explaining why he believes he's right, and that some of the facts he bases his opinion on is actually wrong, correcting him will both help him and anyone else reading and believing the same thing as the poster. This is a common thing in this job to disagree with someone and being right or wrong about it depending on the context. – Crono Oct 22 '15 at 19:03

These types of questions would likely be on topic for the newly created Computer Science Educators SE.

Computer Science Educators Stack Exchange is a question and answer site for those involved in the field of teaching Computer Science.
-Tour page for CSE