How to teach so that your student doesn't feel stupid? I'll start by admitting I'm not a teacher. But I am a professional computer programmer with over 20 years of experience and a BS in computer science. I'm also a dad. My daughter is 9 years old and is about to finish 3rd grade.

She does very well in school, her favorite subject is math and for the last year she's participated in a computer club. She enjoys it immensely and is at the top of her class there -- but no thanks to me.

I've tried to talk to her about programming many times, but somehow it just doesn't work. I don't push it either. Recently she made her way into a programming competition final, and we tried to study the previous year's questions for practice. It was difficult. For some reason she kept getting discouraged.

I talked about this to my wife who is also a computer programmer (hey, it runs in the family!) and with whom I've also always had problems whenever I tried to explain her something programming-related. She helped me put the problem into words - at least somewhat.

The idea is that I somehow make it sound... too easy? Like it should be obvious. But when it doesn't immediately click, it makes the listener feel stupid. And that's when learning stops and inecurities kick in.

I do try to be as encouraging as I can. I'm never impatient, I don't chastise (or give any negative feedback at all) and if the first explanation doesn't click, I try to come up with another and another and another. But when you know the subject very well then it's hard to imagine what it's like for someone who doesn't, and to understand just what doesn't click -- especially if they can't explain it themselves.

Atr there any tricks or methods that can help me here? I'd love to teach the subject that we both love to my daughter, but this is an obstacle that I just don't see how to overcome.
The idea is that I somehow make it sound... too easy? Like it should
  be obvious. But when it doesn't immediately click, it makes the
  listener feel stupid. And that's when learning stops and inecurities
  kick in.


This reminds me of the first time I was teaching an intro to programming class and I was going through a live demo of how some code worked. I mistakenly had an error in my code and got a compilation error. One of my students gasped and said, "You get those too?!"

Previously, it hadn't occurred to me that students thought that people who are "good" at programming didn't get errors. They thought there was some inherent quality that I had that prevented me from making errors like they did.

I'd recommend modeling the problem-solving process. Try doing one of the problems yourself and just let her watch and ask questions. Think aloud and describe everything that goes through your head. Even try explaining different approaches you might consider in solving the problem. It helps demystify the problem solving process of programming when novices get to witness your thinking (and debugging) process.