I have had success teaching programming to beginners by simply letting them program simple text based adventure games. I show them the minimum to get started (print, read, if) and they run with it, creating their own little adventure games. Then they start asking question about “how do I keep track of health?” and I introduce variables etc. But only when they have identified a gap in their knowledge, and have an interest in filling that gap. I had a class room full of kids excitedly programming away even after the class was done. And the quicker students started teaching other kids. It was a wonderfull experience.