When I was a teenager first learning the basics of coding, I usually found programming books that focused on actually making things to be the best tools for learning. Books like "Beginning C++ through Game Programming" and "Teach Yourself C# in 24 Hours" were way more engaging and picking apart the code samples probably taught me more than what most of my peers did in the intro to CS class in college.
When you can actually see the changes to things and have a real interesting project to work on its way more engaging that just going over the theory of things. Obviously, one should follow up with actually learning the theory as well to get a deeper understanding, but I often just can't grok things unless I can play with them.