I completely lost my shit when a self-professed "MPI expert" on StackOverflow with high reputation score told new MPI programmers that asynchronous sends/receives (MPI_Isend(), MPI_Irecv()) should not be used, because they tend to cause deadlocks.
But, for a new user, lacking a great deal of insight into messages, that might be a perfectly reasonable answer.
I forgot to mention that the original asker was specifically trying to learn about async messaging using MPI_Irecv()/MPI_Isend(), and the response from that high-score dude was "don't do that, it's bad; I'm a high-reputation MPI expert, and we never do that in practice".
(I was trying to find the question, but I think the asker or moderators deleted it. My own comments needed a bit of moderator intervention, I got so heated up.)
It's when high reputation score, or otherwise trusted/popular people talk garbage and refuse to acknowledge any errors, that I get angry.
I don't mind people being wrong -- I'm often wrong myself --; it's the unwillingness to acknowledge an error when you must know better, willingly leading others astray with known incorrect advice, that yanks my chains too much.
I would not push async transfers on a new user, of course. Getting initial tests and calculations going with normal synchronous sends and receives with MPI is hard enough

Step by step, getting visible progress, while climbing the learning curve, works.
Take a simple example: Serial IO. We can have polled input or interrupt driven input with a queue. If a new user came by and asked "how do I implement serial IO", we probably wouldn't give the interrupt driven answer.
Right. I would probably write a three-stage answer: use a library; examine existing implementations to understand blocking I/O, nonblocking I/O or polled I/O, interrupt driven, and DMA driven; then implement your own from scratch. Progress as deep into the rabbit hole as you wish, forking into the different approaches, or stay with the library approach if that part is not a key point in the learning experience yet.
For new users, it is important to get some visible/tangible examples done from the get go, no matter how simple, because the suckage at the beginning of the learning curve hurts, but the newness and even simple achievements make it bearable, often fun. The trick is to not lie to them and say "this is how you do it" if you don't really do stuff that way in real life, but explain that this is a simple way to get going, although harder ways that can be more efficient do exist, and one might wish to learn about them at a later date.
It's like when a student asks a chemistry teacher whether electrons really orbit nuclei like planets orbit a sun. No, they don't; but what they do is pretty odd (to anyone not familiar with particle-wave dualism or quantum mechanics), and the orbits or orbitals are a pretty good approximation of their observed behaviour.