The worst thing you can do when trying to become a great programmer is to think that you need a book to learn how to program. I used to think that and had to learn the hard way that the whole joy of programming and the proper learning approach to programming comes from having an interesting project idea that you want to build and use. That should be the driver at all times, and you will see that after you have developed a couple of those project that you learned a great deal and had a lot of fun doing it. Now that said, if you still want to use books, which can be useful if you are a complete beginner, I would recommend books that are based around building an example application. In web development one such book is "agile web development with rails". If you want to develop for iOS I would strongly recommend "The iOS Apprentice". This last one is the best single learning resource I have come across ever. The whole course is a joy and you learn how to think as a pro programmer and the natural iterative workflow of a pro programmer. I cannot recommend it enough. I wish you good luck!
I tell people to just sit down and build something. Nothing genius or great. But <i>something</i>. Even if you get bored half wy and change projects. Just build it. Need help? Build a hacker news replica in whatever language you like.
Don't shy away from technical content. I used to program as a teenager, but ended up not going into computer science. I mainly focused on learning whatever would help me accomplish a short-term goal (usually creating a game). Now I am a doctoral student and mainly program for research purposes, and sometimes regret not focusing on more difficult material like algorithms, applied mathematics, and low-level languages. There is high returns to the stuff that seems boring as a teenager, but a lot of that stuff will be relevant even if the language you choose to learn now turns out to be unpopular when you try to get a job.
I created this document full of curated lists of resources, recommendations etc.. check it out
<a href="http://www.scribd.com/doc/126959684/Learning-Technology-Coding-Care-Package" rel="nofollow">http://www.scribd.com/doc/126959684/Learning-Technology-Codi...</a>
What do I recommend for a teen programmer? Unit testing.
Best resources and books? There are just so many good books. Last one I enjoyed was The Pragmatic Programmer. Next I'm going to try reading Clean Code.
Keep learning. Keep reading. Keep writing.
Two words: Video games.<p>Sweigart's tutorials [1] are a perennial favorite. The materials formerly hosted at simpson.edu [2] are also good.<p>[1] <a href="http://inventwithpython.com/" rel="nofollow">http://inventwithpython.com/</a><p>[2] <a href="http://programarcadegames.com/" rel="nofollow">http://programarcadegames.com/</a>