With 30 kids in the room, paired up in front of one computer for each pair, I had a moment to deal with a concerned parent who had strong feelings about how kids learn - by doing, not by watching.
"I know what I'm doing", I tried telling him. "I've done this before". "We don't just pair them. Just watch. We do a thing called strong-style pairing". He did not look convinced, but I needed to step out and attend to the class anyway.
We introduced the rules. "Who is in front of the keyboard now? You're the hands only, no thinking allowed. Who is not in front of the keyboard? You're the boss. Use words to say what you want the other to do".
The buzz, the laughter, the learning commenced. And they loved it, being fully engaged as we kept reminding on the rules: the one not touching the keyboard is the boss, and we change positions every four minutes.
The concerned parent seemed happy too. He followed through the session, and I saw him smile too. I suspect that was a meeting with a developer who has either never pair programmed or in particular, never strong-style pair programmed.
This event happened at my work, and the kids were my colleagues kids. The concerned father is not an exception. Adults are concerned when they know how to code on how their kids will feel while coding, because they care.
I've sat through my share of intro events to programming with my daughter. I find that a lot of sessions pair kids (esp. young kids) with their parents, and while they then have a personal tutor, in my experience they learn less.
So I work with the rules: pair the kids up. Parents are welcome to stay and program, but kids pair with kids, adults pair with adults. There's nothing more motivating for kids than realizing they're completing the programming puzzled faster than their parents. After all, collaboration comes more naturally to kids who are not yet worried about "efficiency" - results matter. Us adults should keep that in mind a little more often.