Damn might have to share that pointers vid, I've never been able to explain it well to others it's just something I know. Good stuff.
Okay, so, this is the kind of thing that is absolutely integral to have an understanding for -- eventually. And in a lot of Computer Science programs, you're going to get that exposure whether you like or not. I was supremely lucky to have many talented teachers teach it, and do so correctly.
That said.
The various pedagogues out there -- and I'm speaking to the random passerby who comes in here looking for advice to start programming now -- vary wildly in what they think is important. Now, if you think about it, people tend to teach the way they were taught, or at least, the way that made sense to them. This makes sense. But if I've learned anything from interacting with people who program, whether they've been doing it for 10 years, 30 or just 1, it's that there is a lot of variance in how we learn, and that's really important to understand.
For example, some people learn from teachers and school. Some people struggle in school, but find a YouTube video or two speaks directly to them on the exact same subject. This pointer video is a good example of that -- it's meant for people who ran into a concept they didn't understand, and to give them a resource for solving that lack of understanding.
So I would add some advice to this thread to those looking to learn: be cognizant of how you learn. Understand how you *prefer* to absorb information, but also how you succeed in absorbing information. It should go without saying that when it comes to a practice like programming you must practice, but the resources which inform your practice must be both accessible to you, but also congruent with how you learn.
So, if you *don't* like books, if you've always hated reading, if the notion of purchasing or reading a bible of text elicits your gag-reflex, stop and think about what that means in terms of how you should proceed. Maybe, a book is not the right approach, even though with enough time and dedication you *could* do it. If you've always learned by having a professor place the metaphorical gun to your head in terms of a "due date" on an assignment, consider a class. If a class is too costly an affair, consider an online program -- either the far-reduced costs one you see on well-established websites, or (and this really can't be overstated how good these can be) free website resources in the forms of videos. Some people are visual learners, and they want to see pictures, and they want to be able to press "Pause."
Chances are good, if you're reading this right now, you know how you learn when it comes to resources. And you need to understand that people who teach, books that teach, videos that teach -- they have various different ways of doing this. It may take a little bit of time for you to figure out which resources complement how you actually learn difficult topics. So, a further strategy to add onto a previous post of mine:
1) Figure out what you want to do
2) Figure out what technologies can take you there
3) Figure out *how* you learn best
4) Purchase, or otherwise locate, a source of learning on the technologies you are interested in that complement how you learn
5) Practice
6) Fail
7) Practice
8) ... Eventually succeed
There is one final resource that I haven't referenced: other people. If you're in this thread, then there is a good chance you thought of this one ;) But it goes far outside here, and into the realm of the offline world. Do you have friends or family that know how to program? If you do, there is a very very good chance that you can harness their knowledge to steer you, or in some cases even help to mentor your efforts. This isn't one of those things you have to do *completely* on your own, and in fact, very few can say they have. Just understand that if you do ask for their help you will be subjected to their ideas, and so long as you understand that you may not find success in the approach of another person, don't let that be a deciding factor in continuing or giving up.
One of the things I've heard so often is: Programming isn't for me because {X}. {X} is usually something to effect of "I'm not smart enough," or "I'm no good at math", or something to that effect. Programming will make you smarter, and it will assuredly make you better at some math, but neither of those things are necessarily a prerequisite to *start* writing code. Take that negative idea that is in your head and throw it the fuck away, because it will only serve to impede your efforts. Forget any preconceptions you have about difficulty, and the like. That doesn't mean it will be easy, as nothing worth doing typically is, but anyone here who is some grizzled vet will tell you the same: you need to crawl, then walk, then run -- and crawl again much later on.