I learned in a classroom (Fortran). A classroom provides course structure and someone you can consult with should you need.
The media though probably matters less than a structured approach that introduces concepts, gives practice cases to reinforce those concepts, and some "real world" full program exercises. That could be a video tutorial or a written tutorial whether online or in print. The key is to have a guided incremental approach.
The biggest hurdle is committing the time to follow the course to completion.
"Learning to program" to me is getting dragged off a live system by my boss' boss to jam together "a codes" to get the competition's data into discrete files and onto storage media because they forgot to bring their printer and didn't have a way to preserve their data... completely illegal in contractual terms... and I didn't get a farthing added to my pay stub... so "None of the Above."
@dougp - You were in band? That's a diatonic clef draw-er (EGBDF). There was a hole-filled pulldown shade that a chalk-laden eraser would deposit dust in a perfect grid for graphs. Cant find a picture of it.
Well, yes but, I seem to remember (it was a long time ago) the teacher using that to put up notes for the music segment of some grade school class, not necessarily in the band room.
I think you must not combine "programming" with some programming language. They are related, but are NOT the same thing. Programming is learning to analyze a problem and separate out the individual segments of the problem and then after solving them, you can solve the original problem.
Using a computer language will help in solving a problem, but logical thinking is the basis of all. I do not think you can develop that from watching videos.
Being able to articulate a problem and being able to accurately describe a problem in writing comes first.
None of the above. I am lucky to have 2 friends for whom programming seems to come naturally. Both taught me, one in particular. The one who helped the most seems to have a natural talent for language, both computer and human, he is currently learning German (after getting quite good at Spanish and French).
Personally, I start with an idea of what I want to do with my code and start looking through resources focusing on what could help with my program. Following a guide on things to make can be helpful but sometimes feels really limiting for what you are "supposed" to do first.
And why not read a book??? I have Deitel and Deitel, but that is a bit outdated (as c++ is always backward compatibel it still works, but you may miss some handy improvements). Arduino has starter books to build a few small projects (it includes code, but it is the very very basics).
I'm not looking for how to start with Arduino but how to become an advanced programmer. It is best to use online websites where you can test yourself and do exercises.