|I don't think c++ takes several years to learn as many people say.|
You right to a point. The basics of C++ and the STL can be learned fairly quickly. It is being able to understand when to use what and how programs are designed that takes years of experience to learn.
Anyone can say that they know all about templates, inheirtance, encapsulation, data abstraction, exception handling, and all that good stuff. But know how to do that effectively and knowing how to professionaly design a full fledged commercial product is a whole nother ball game.
Also once you add in libraries like boost, QT, directX/openGL, threading, networking, database programming, and on and on it makes it just that much harder to say you can learn how to do all that effectively in under a few years.
So as I said before it is one thing to know C++ but it is something totally different to know how to use
C++. If you believe that you can do that in under a year you are kidding yourself and you will realize soon enough that you were wrong.
Also people have different methods of learning. Some people are more hands on and just need to mess around with a project and research documentation that they can learn some of it. Other need a book for a more structured approach. Just because one works for you doesn't mean it will work for everyone.
|If I would have read a book it would have taken me weeks, if not months simply going step by step through each lesson.|
I doubt it would take months to go through a section of a book that covers intermediate template programming or even advanced template programming for that matter, unless you were reading only a chapter a week or something.
But that is besides the point. Sometimes it is better to take information from a highly experienced programmer about the topic that you are trying to learn. When you read a book like Effective C++ you get insight about techniques and practices from someone with 20+ years of programming experience. Most likely there will be more then one thing in there that you won't know about.
Now I am not saying that you should just stick your nose into a book and you will learn everything about programming. What I am saying that sometimes it helps to both read a book about the subject you want to learn and
do a project at the same time. You are still doing the project as you say but you also are getting advice from someone that is more experienced then you and advice that will help you avoid them tricky spots.
So saying that reading a book is a waste of time is a bit out there in my opinion.