In order to learn something you need a reference source that provides more information about a topic than you already know. In my mind there are two sources for personal improvement:
1). Unguided study via books and web sites.
2). Guided study via classes, seminars, conferences, tutors, etc…
The primary challenge with Unguided study is determining the best reference source. Without a required text book, a conference/seminar agenda, or a similar guide, it is difficult to get started on the correct path. The benefit of unguided study is that it is typically cheap, particularly with the Internet. However the financial savings have a huge time cost. Without a guide you end up stopping and starting as you correct your path when you hit a dead end such as a bad website, an unhelpful tutorial, or useless book.
Guided study offers the benefit of a proven set of reference materials. It could be an expert speaker/presenter or a list of required readings. Once you spent some time unsuccessfully trying unguided study, this list of proven references becomes invaluable. However the time savings provided by the list of references typically comes at a financial cost.
Guided study is experiencing a revolution right now. The most recent issue of Fast Company has an article about on-line courses being offered for free from some of the most prestigious universities in the US. This is not a utopia yet though, you still need to know which classes to take.
I unsuccessfully spent 2 years attempting unguided study as a way to learn programming. I kept thinking the next tutorial or website or library book was going to be the silver bullet. It never was. After going to class again I realized that it was mostly my fault. My professor said that “You can’t learn to drive by reading about it. You have to drive the car. And you can’t learn programming by reading a book, you have to write code”. I needed the structure of a class with homework assignments and exams to force me into focused practice.
If you go the unguided study route, make sure you practice what you are trying to learn. Find books with practice problems and do a lot of them. Create your own syllabus and follow it just like you are in a class. That is the only way you are going to learn the material at the level necessary.