I learned to program from a very smart man who taught me very little.

He understood the concepts so well, so thoroughly, that he couldn't relate to me, a mere mortal, and the struggles I was having.

I didn't understand what a return value was, so I ended every function with "return 0", because that seemed to be How It Was Done. He asked about this, equally confused about my behavior.

I couldn't explain myself, and he couldn't understand what I was missing.

Eventually, I asked another student, who explained that the return value of a function is... well, what the function returns. They explained why that might be useful (the function can perform some computation and then give the result of that to someone else, just like if I say "Hey here's some ingredients, can you bake me a pie" or "what's the total age of these 5 people and their children?" I don't care about how you GET there, I just want the result).

In the same way, many people who are knowledgeable about a subject are bad at explaining it. They've lost touch with the complexities, they've forgotten what might be confusing.

Better is the teacher who themselves struggled and remembers the struggles.

This is one reason I recommend Leaving a Thread, so you can revisit the places you got stuck and retain your memory of the same.

See Also

(Skip The) 100 level courses

people who are knowledgeable but bad at explaining bc they don't understand what's complex