On the topic of tutoring people.
I've had friends ask me to teach them programming (mostly after they realize you can make money making games), and I've realized I actually love to teach. I used to wonder how teachers can be happy with their lives, basically doing the same thing every year and never really going anywhere, but even when I was saying the same explanations and repeating the same introductions, there's a sense of satisfaction when you teach someone and they end up doing something with what they learned.
And yeah, it was interesting seeing things that are extremely intuitive that you wouldn't think twice about apparently being not easy to understand at first.
Something I do is that I tell them, that the only way to change the value of a variable, is by doing "variable = value", there's absolutely no other way to change the value of a variable. Then I ask them to figure out a way to increment a variable by 1.
And it's really interesting seeing them think, and trying to get them to figure it out on their own. The thought process is something like, "When your brain wants to increment a variable by 1, it takes the value, adds 1 to it, and returns it. So if I tell you increment 'counter' by 1, you're going to check the value held in counter, and add 1 to it, then make counter equal that value". And I wait for them to translate that into code of "variable = variable + 1".
And it's such a beautiful "Aha!" moment when it clicks.