I've been teaching myself for a while now. I started out learning C++, but after finding it difficult to understand some of the more "advanced" C++ ideas without any real coding experience I didn't actually grasp WHY I was doing some things. So I went back and learned Perl, which is completely different, but being able to actually write useful scripts quickly peaked my interest and got me to understand concepts enough to go back to C++.
The only thing C++ has taught me is how little I know about C++.