C++ is a Huuuuuge Language.
The Path towards Expertise would be:
- Understanding C++ - Step 0
You have got to read The C++ Programming Language by Stroustrup, no way you can escape this. http://www.amazon.com/The-Progra...
- Understanding Histrory of C++ and Why come they designed the C++ Features - Step 1
The Design and Evolution of C++ Book from Stroustrup would help you.http://www.amazon.com/The-Design...
- Understanding Internals whats happening when you declare classes. -Step 2
Inside C++ Object Model by Stanley Lippman would help you.http://www.amazon.com/Inside-Obj...
- How to write Efficient Programs in C++ - Step 3
Agner Fog Optimization Manuals would give you Start. http://www.agner.org/optimize/
- How to write Correct C++ Programs - Step 4
Effective and More Effective C++ book would help, you cannot clear any C++ technical Interview without reading this. Better search for Scott Meyers in Google and Read Everything. He has huge insights for writing correct way of C++
- Understanding Design Patterns - Step 5
It would give basics to understand Huge C++ framework libraries such as Qt , Boost etc., The Gang of 4 Book would help you. http://www.amazon.com/Design-Pat...
- Understanding How to Create Efficient Frameworks - Step 6
API Design by Martin Reddy would give you a start. http://www.amazon.com/API-Design...
Phew .... We came so far without even touching Meta Programming and Templates.
- Meta Programming and Templates - Step 7
- Understanding C++ Templates would help. http://www.amazon.com/C-Template...
- Modern C++ Techniques from Andrei Alexandrescu would give you a start.http://www.amazon.com/Modern-Des...
- Another good stuff from Andrei Alexandrescu http://www.amazon.com/Elements-P...
- Knowing how to use STL also helps, The C++ Standard Library.http://www.amazon.com/The-Standa...
- Understanding How to become proficient in MetaProgramming - Step 8
For this you need to take different path instead of learning C++ ,
you would learn Haskell or CommonLisp. Haskell would be perfect. http://bartoszmilewski.com/2009/...
But i took the other one (Common Lisp). http://letoverlambda.com/
- Now its time to lose focus on C++ and Learn Compilers, Functional programming, meta programming etc..
- Implement C++ Compiler. (no mere souls done that if you can pull off you got big future in Google,Facebook etc..)
You may notice from Step 8, it become vague path. So I would say after Step 8 you need to invent your own Path.
Did I mention to read C++ 0x11 oh god So much to read but life is too short .
So
my opinion would be C++ language is gonna stay for foreseeable future
unless we work on computer which is not based on Von neumann
architecture.
So better invest your 10 years to expertise C++ and Computer programming.
It does pay off, you can demand Good Salary, no matter what hype is (VB, Java, C# and now Go). Its tested against Time .