What is the best way to answer questions and teach people on this forum?

Interesting topic!

The whole issue seems to be related to the following paradox: saying only the minimum necessary or instigating the other's mind to fly higher. I believe that the forum user group is heterogeneous enough for both approaches.

I believe telling people better ways to do things is not necessarily related to give them optimal solutions. At this point I agree with @UKHeliBob:

I can. Some years ago I was given the task to teach Calculus to people who had failed education during their youth. Some of them couldn't remember how to add fractions. What I tried to do was reminding basic math concepts as long as they were needed and trying to keep new concepts as simple as I can.

So, wrapping up, I believe the secret of teaching people is to identify their background and adapt the answers to their level. When they feel comfortable, they will do more advanced questions.

Basically I agree with @PerryBebbington:

PS: I didn´t make the slightest idea of the existence of this "range based for loop" before reading this topic. :upside_down_face:

1 Like

How'd that go? Were you able to comprehensively cover the typical syllabus of a standard CALC I course? How long did it take?

I had to simplify a lot, specially on integrals and the course took 1.5x the time. But I was happy with the results.

I'm impressed that you were able to cover it that quickly. Here's how I imagine a typical day would go:

TEACHER:
Today we will cover taking the derivative of trigonometric functions.

CLASS:
What are trigonometric functions?

TEACHER:
They’re functions based on the angles of a right triangle. For example, the sine function of an angle in a right triangle is the length of the opposite side divided by the hypotenuse.

CLASS:
What’s a right triangle?

TEACHER:
Well, a right triangle is a triangle with a 90-degree angle.

CLASS:
What’s a 90-degree angle?

TEACHER:
It’s a right angle like the corner of a piece of paper.

CLASS:
What’s a hypotenuse?

TEACHER:
It’s the side of a right triangle opposite the 90-degree angle. It’s the longest side of a right triangle.

CLASS:
Why is it the longest side of a right triangle?

TEACHER:
Because the sum of the other two angles must equal 90 degrees, so neither one of them can be greater than 90 degrees.

CLASS:
Why must the sum of the other two angles equal 90 degrees?

TEACHER:
Because the sum off all three angles in a triangle must equal 180 degrees.

CLASS:
Why must the sum of all three angles in a triangle equal 180 degrees?
.
.
.
.

they often ask ZERO question...

Interesting discussion; however everyone seems to accept that the response to Ops is a "teaching moment" and not an "answering-only moment."

There are the code-review questions and the better/more efficient Op dialogs which lend to a teaching opportunity.

I think the majority of questions are in the "help category" and the Op is frustrated and simply wants an answer! Often it is homework and Internet forums are fair game as 'technical resources' in the instructor's view. Ops just want a basic answer that works and then they turn in the homework: many never working with Arduino again.

Remember the philosophy that created Arduino ... provide a platform for non-technical use. From Wikipedia:

The Arduino project began in 2005 as a tool for students at the Interaction Design Institute Ivrea, Italy,[2] aiming to provide a low-cost and easy way for novices and professionals to create devices that interact with their environment using sensors and actuators. Common examples of such devices intended for beginner hobbyists include simple robots, thermostats and motion detectors.

I do not think advanced C++ concepts are useful to the majority of Ops and will likely backfire.

When answering Ops, I always attempt to put the answer in the Arduino command reference frame.

Ray

1 Like

Agree. but the genesis of this thread was a request for the former.

Yeah, that actually happened. I noted a big interrogation sign over some heads. So I stopped the class, we all laughed, and next class I brought a 2 hour revision on the theme. Fortunately they knew triangles, and the rest of the basic kid´s math. :stuck_out_tongue_winking_eye:

Whereas this is probably generally true the OP is not the only consumer of the thread. For example I was first exposed to range based for loops when member X ( X has a very long name) used one in a solution he presented to a newbie.

Edit

I've just found it: [SOLVED] Better way to code this

It's a tricky judgement call. Many people asking for assistance here have one project in mind, have seen video showing someone using an Arduino to solve their problem and just want to get it working. They may not touch an Arduino again for years, if ever. They don't need or want to learn better or more modern methods.

Then there are "do my homework" threads. Again, little or no desire to be educated.

If the user has multiple threads or has described themselves as skilled in C/C++, perhaps it's a teaching moment, but so many people really just want their project working in time for Christmas/Thanksgiving/Yom Kippur etc.

Hard to tell often which camp new posters fall in.

I guess I'll add my 2¢

To answer the question "..... best way...."; I don't think there is a "best" way. These are individual posts and often the title is not as succinct as it could be, making a forum search unlikely to have the related post pop up. Besides, many of the posters have not even googled the question/problem.

Often I can tell the approximate capability by the phrasing of the question. Others I will either take a shot at an answer or ask the OP a question or two. Sometimes I will add a non-electronic simile.

I do see many answers described at a much higher level than the OP is at.

Also I see many of our younger posters leave out so much detail that the reader has no clue what is being referenced. This has to do with age and excitement. I have a good friend who's son was interested in electronics. He was about 11 - 12 at the time. He is a very smart person (SAT ~1585). However he asked me a question exactly like many I've read here. Being in person at the time I simply explained the need for more details. He immediately understood. I say this only because the forum will continue to get such questions. The poster replying can either explain the need for more information or provide a snarky response which only puts the OP off. And invariably increases tension and a flurry of not to helpful posts.

If possible I like to comment on what could go wrong if other options are implemented.

But in all cases; KISS (keep it simple stupid)

IMHO I don't see how "dumbing down" an explanation can do any harm. I don't see the above mentioned concern such a answer will forever relegate the OP to not be able to learn more advanced methods.

3 Likes

It depends on the question and the audience. I think you have to meet people where they are, but you also have to answer the question you think they are asking in a way you feel good about.

If they ask a question in a public forum like "How do I split firewood with a hammer?" an answer like "I would use a splitting maul like this..." is a fair answer.

Telling them how to improve what they are currently doing, or how it is commonly done, or how you would do it, or how Arduino or someone else would recommend doing it are all good answers. In longer discussions, I'd expect multiple options and differences of opinion about their tradeoffs.

For the poorly-posted low-information questions, maybe putting in only comparable effort and asking only how their project differs from the BWOD or Button or some other easily found tutorial.

1 Like

A restatement of my belief; attempt to answer from the standard Arduino Documentation / Reference.

If the Op states they are a C++ power user but does not have a firm grounding in Electronics, maybe expand the explanation or toss out a few suggested reading links.

Few Ops do a Google search; sadly most have never heard of a site centric search. Almost no one knows about quoting parts of inquiries to inform the search engine of required keywords. Attempting to answer some questions is a real P.I.T.A.

I have noticed one interesting aspect of the new forum that was not present in the old forum: now, some members seem to want to jump into the first response just to gain an increment on the post responses; mostly these responses are to tell the Op they have not read how-to-get-the-best-out-of-this-forum/679966 or some similar terse quickie. Thus, it is mostly a badge incrementing post. Too social media'ish for my way of thinking.

Maybe a forum subsection called "Above & Beyond" where sample posts can be explored in more detail.

Ray

It does wonders for the count on how many people have read my tutorial :blush:

1 Like

But that is not your motivation is it ? Oh that would be so sad.

1 Like

I hope you have seen enough of me on here to know that's not my motivation! :thinking:

At one time for my own use I drew up a list of common errors that I came across. As it happens I never refer to it, being familiar with all of them (and more), but here it is

Code testing a condition has a semicolon at the end of the test

Code with an array in it strays outside of the array bounds

Code that does any comparisons uses x = y instead of x == y at some point

Code that uses a for loop tests the wrong final value of the loop variable

Code with a while loop in it never changes the condition so the loop never ends

Code with a while loop in it never executes because the loop condition is immediately true

Code using Serial does not have Serial.begin()

Code with Serial.begin() in it sets the wrong baud rate

Code using Serial.available() with the Line Ending not set to "No Line Ending"

Code using SoftSerial uses 2 or more instances

Code that reads digital input has the input pins floating

Code that uses serial input or output uses pins 0 and/or 1 for something else

Code that divides one number by another uses int for the result even if the result will be a float

Code that divides one number by another uses ints when a float result is expected

Code uses a variable type inappropriate for the data being held

Code that uses global variables has local variables with the same name

Code with missing or extra curly brackets

1 Like

I doubt am not sure that is true as it is far less obvious how many posts a user has made in Discourse than it was in SMF where it was displayed alongside the username

Except for the last one, those are all runtime errors. I mean, i see topics with names like

exit status 1
'LED' was not declared in this scope

or

expected constructor, destructor, or type conversion before ';' token

etc.
i was thinking more of a list of that sort of manner, with explanation on what that actually means and what may be the cause, and how to solve it.
Your list can be useful, but i would break it up into several parts.

  • Anything to do with Serial
  • Explanation about loops and it's pitfalls.
  • variables and their use and scope. Including how computations are handled.

It is of course an issue that in many cases, responders refer to the reference, when the OP obviously hasn't.

No I was stirring ya, but someone did insinuate something like that.

Put there by someone, who is just trying to help. Eh does it have a reminder to check the Arduino reference first as well.

1 Like