What is the best way to learn programing? Well I don't know but this is my opinion
Now the internet is certainly full of opinions and where as I think there is not a single perfect way to learn programming, I do think there is ways that are more beneficial.
Just to clarify I'm in no way an expert, as of writing this article I'm not even a university student yet. Despite that I have tried to learn in different ways books, teachers, web-tutorials, documentations.
Programming is however a quite unique field and so learning the things that become important with more advanced projects, and getting the easiest learning curve is important for new developers trying to get into the seemingly extremely complex and ever expanding topic that is programming.
To me there isn't a single best ""tool" for learning, but it's really about finding the strongest element in each of them to get the best result.
As a complete beginner I would recommend starting with some light programming, watching some video tutorials is a great way to start as it shows you exactly how to structure it, and examples of what to write(I'd highly recommend TheNewBoston).
This might seem weird but since programming doesn't have a single right answer, having a teacher to start can give you a end up giving you vague answers. Once you've gotten a fine idea of the structure of a language(recommend Java with Eclipse) it's time to get a teacher. A good teacher will help giving you challenges, helping you use the stuff you've learned to create new software and guiding you of how to find the information on the internet.
Now time to expand, this is when you learn different languages, expanding you horizon and see the similarities and learning the uses of each of them, at least 5 is a decent goal, two object oriented languages, one or two markup languages and at least one scripting language. For this either video tutorials or web tutorials are great, the real point is not to learn every detail and the specific specifications, but to give a broad overview of the language and understand the best uses of the language(the specific is something you learn when you need it).
When learning the different languages making mini-projects is a good way to get the information to sink in and also to test the limitation of the language, it also help you to avoid just mindlessly letting the information phasing through your head(and don't be lazy change the variable names it help keeping focus).
In programming learning how to learn is where it's at, so doing a project that's out of your comfort zone, is great like I don't know....a website. This forces you to scatter the internet for information, which will inevitably lead you to StackOverflow, where you can also ask questions. Learning to read documentation is also a good thing to learn sooner or later.
This is also why I don't value reading very specific information in the beginning, because you'll likely forget it and most of it is not very useful.
WELL WHAT ABOUT BOOKS, books are great! Huh?... no not really, I think a lot will disagree but as a beginner, books might seem intimidating and later on books gives outdated information. I certainly think there can be exceptions, but as a general thought I personally think there're better alternatives.
BUT... that's just my opinion, and people are different so this is not a concluded topic and it's important to be open for changes and different theories for the ""best" way to learn programming.