I haven't read the other responses. But, I do think age matters.

For example, one of my kids taught himself scratch at age 7. At 7, I wouldn't have wanted him doing Java or C. He learned scratch so well, that at 9 I handed him a JAVA book. He taught himself that and is actually fairly good. He hasn't been formally taught, he just figures it out.

At 12 with a kid who wasn't showing any interest in programming, I signed him up for a Visual Basic course. That went so well, that the next class was C. After C, came Java. Part of the order was determined by available classes.

So two different kids, two different paths, both kids love to program.