The reprex package was born out of my STAT 545 experience! Last Sept - Dec, I weighed in on ~300 issue threads (I know, because I analyze the traffic on the Discussion repo to compute participation marks). I wrote reprex initially for myself, so it was easier to include runnable code snippets and to reveal & discuss the associated output. The package wasn’t very mature then, so I didn’t strongly encourage students to use it, but I would today.
reprex only solves one problem, but it’s a big one: are you providing a self-contained runnable example? If not, the reprex “won’t work”. In the privacy of your own computer, you get to keep trying until you meet this technical requirement.
Of course, there’s more to a well-formulated question than that. That’s where a (semi-) public forum is critical. I think the students learn a lot of the art by reading each others questions and the answers from students + TAs + me. Trying to answer (or even understand) other people’s poorly formulated questions tends to raise self-awareness.