Is it because the area they practise in now, is at a much higher level of abstraction than what a beginner should do and they have lost touch? Or is there some other reason?
E.g: You ask an expert programmer for advice on how to learn to become a good programmer, they will almost always suggest mid tier resources.
So assuming those are somewhat independent skills, you can find skilled practitioners and skilled teachers but in my experience it's hard to find someone with that skills intersection. I consider this kind of people quite exceptional.
It can be hard to accurately gauge your interlocutor previous knowledge, so you don't make them feel dumb by explaining too simple things, or by starting with too complex stuff.
>or point to obscure or very high-difficulty resources.
Although here I think that's on the learner to make an effort. If you want to learn X but you need Y to understand it, your next question should be how can I learn Y, and if you need Z to learn it, you should ask how to learn Z, and most of these questions can be answered by search engines, you don't usually need an expert for that.
"E.g: You ask an expert programmer for advice on how to learn to become a good programmer, they will almost always suggest mid tier resources."
Well once you went through something like CS50, you should be able to grasp mid tier resources, or at least be able to find out what you need to learn to go through them.
Unlike in Universities, where each student are given the same resources for them to read through and progress, most of the teaching in real world ( non-academic settings ) does not ofter the same path.
And without those foundational knowledge, a lot of discussions would be broken because the assumption of you knowing is untrue. For example, half of the software developers have absolutely zero idea how computer works. But they somehow think they do, as witness in the recent HN discussions. This makes teaching and discussions on a subject enormously difficult.
Edit: OH this is great. I just discovered there is a term for it in the comment below. The curse of knowledge. https://en.m.wikipedia.org/wiki/Curse_of_knowledge
I was sitting down to join a voice call with a friend with the intention of introducing him to programming basics. I explained that we were going to "simply go over printing" and he informed he he wouldn't be able to work on this today, as his printer was in his basement and not accessible on such short notice.
It's hard to explain instinctive things, or, for some, to understand why they are not automatically instinctive to others.
It's rare for the best coaches to have been the elite practitioners of a sport. What's very common is for someone who struggled to even break into the elite league or had a very short career there goes on to work through the coaching ranks and become an elite coach.
I have always thought it's due to mid-tier players needing to really focus on every lesson they get, studying every drill, obsessing over every piece of advice they get. Elite players just absorb the drills and lessons into who they are and forget it was ever taught to them in the first place. When the learning comes hard the player will understand the complete process to come to understanding. They will also see the elite players around them apply the lesson and improve, so they know the lesson works. Being worse at doing the skill can ultimately make you better at teaching it because you are forced to understand the skill more deeply.
Being a replacement-level player doesn't automatically make you great coaching material though, that's where the filtering starts to find great teachers and communicators. As many others have commented, teaching is a skill unto itself, one not everyone has.
Add to that other circumstances like no teaching education for most experts in other fields, and there's your answer.
idk i think the same pattern applies in many fields. as a beginner you worry about plan should i follow, which diet, which book, which language, which guru to follow. But all of the "how" questions are really just a proxy for the discomfort of feeling dumb and confused and incompetent at something new. The only real answer is yeah, feeling dumb is part of it, just keep going.
In your experience, are mid-tier practitioners better at teaching? If so, that would be mean less support for my hypothesis.
But it's not true in my experience.
Teaching is a hard skill. You start with an explanation that you think works. Then you have to adjust it based on how your subject responds. Do they get it? Part? Is it not clicking? And then step out of yourself and figure out what's another way to visualize or think about the problem.
A lot of it is not about being right, but being useful.
Ive applied this to things you wouldn't think is teaching, like helping a friend understand why her career path isn't working out for her and steps she can take to improve it. Took an hour to figure out the bad assumption in her mind and figuring out a way around it.
I still attribute my engineering mind to that formative experience. At one point the company got bought out, teams dissolved and it became a hot mess where nothing was really done anymore. I left the team, with a heavy heart, and in a year's time the company was basically dead apart from some invested (crashed stocks so they must go up!) people that were left to maintain ongoing projects.
Since then, and it's been close to a decade, I haven't found any company where even a tiny sliver of hope exists to be able to mentor people the way I have been mentored. The landscape changed and everyone is looking for velocity. In my current role, whenever I ask a potential 'expert' if they have any experience with 'X' (due to their background in it), they just google, get to the first result and suggest that as a solution.
My best friend has trouble reading graphs, as in y-axis, x-axis kind of thing. He doesn't know whether < means bigger or smaller. This is something a lot of experts have internalized decades ago, so we'd completely overlook how hard it looks to a beginner trying to learn comparison or AND/OR in a condition.
Is it useful to learn multiplication before addition? Or exponentiation before multiplication? Or tetration before exponentiation?
I mean there's arguments that if addition and multiplication both must be learned then maybe linear combination is a more useful end-state target for the lesson.
I'm not begging the question to refute your point. These are important questions, and I worry that society isn't seeking the answers, because as far as I know students still learn "times-tables" even though we have handheld computers capable of, from a photograph: reading, interpreting, and solving math problems from a description, so that those tasks are as contained as an arcane reference like integral lookup tables.
I see a world where students instead learn even finer machinery, such as logic, encapsulation, and organization rather than obsessing over whether they can rhythmically remember what 11x12 is for the rest of their lives.
I wrote about this 15+ years ago: https://antipaucity.com/2006/05/06/the-good-the-bad-and-the-...
At the end of the day, self-taught like what they do - so if you really like what you do, you'll eventually figure out simply by spending time on the subject at hand...
e.g. Umberto Eco never replied to young authors who asked him "how can I publish my book?", simply because he did not had a good answer, he thought "same everyone publishes I suppose, you start small and then you go big and if the publisher thinks the book is good, they'll publish it"...
Another matter is if an expert is approached by someone who does not put in even a bit of effort (looking for a mentor but rude, or did not do any prior research on their own).
Maybe it is too much of a tautology, but I would not consider someone that cannot communicate clearly an expert. The practitioner will need to put in the effort too, of course.
Programming is not just any field though. Programming is incredibly immature and filled with wildly unrealistic expectations. As a self taught developer of 25 years of experience I have largely given up teaching beginners how to easily write high performance code.
There is a lot of insecurity in programming putting tremendous downward pressure on bad habits. Teaching disciplined techniques to produce higher quality output is often met with hostility if contrary to a popular tool or current trend.
If the results of trying to teach produce such hostility why bother? Why would I volunteer my time to help people if the result is bitching, whining, and anger? Instead I will keep my experience to myself for my personal projects.
It is a reason why I like to teach by asking questions so I can learn where they have gaps and help them see their own gaps. "How does the teacher actually access the bread?" "oh, we have to open the bag first!"
An expert is someone who knows the final state very well, but for whom the initial states and state transitions are a distant memory.
Those may include hygeine, grooming, diet, social skills, sensitivity to faux pas, extreme ineptitude in unrelated skills to their specialty (these can get to absurd levels) and so on.
So it stands to reason perhaps that their ability to illuminate is next to impossible.
The road to understanding can be complex, filled with head banging on the wall...if you think to yourself what exactly made you go from "i dont get it", to "Eureka" - a lot of times there is no answer. Sometimes the synapses just do their thing. Now - previously mystic concept is intuitive, how do you go about translating that?
tl;dr; Tacit knowledge is knowledge that cannot be captured through words alone. Think riding a bicycle.