Author here. Thanks for the feedback.
My son's experience has generally been self-driven via Scratch. I introduced him to Scratch at around age 7 through CoderDojo and he really enjoyed it (I'm a big fan of Scratch for kids--it's the perfect balance of art, creativity and logic with programming concepts mixed in.
I introduced Python, then Javascript, after he asked me about what I do (I was excited that he actually asked, so I ordered the book). I'm more of a web designer/developer, not a software engineer, so I showed him to the tools I know (trying to keep things at his level) and set him on his way. The thought of being able to write his own video game keeps him motivated. He plays with the examples on phaser.io/examples and sees it as something he might be able to do after working through the lessons.
My biggest concern is pushing him into something that he doesn't want for himself. It should never feel like work. He likes the CodeSchool videos, jingles and exercises, so he does it. He got tired of the books, so he stopped. There are many long gaps, diversions and pivots, which is totally fine. If he just wants to play outside, build with Legos, read, watch a movie or do nothing, I don't bother him. Programming is not his job, it's just a skill that I think will be useful for him and is something I can actually help him with.
Side Note: I originally had a section in the post about how in the past it was more common to pass knowledge and skills down to your children in the form of trades (farming, sewing, blacksmithing, etc.) and is "computer programming" something worthy of passing down. I thought it digressed a bit too much, so I removed it.