To be an expert in programming is not like being expert in social knowledge. If you know, programming is part of science, its come from experiments and not enough if you only trying to buy many of books without doing some experiments.
What I mean? You must have experiences. How you get it? You must doing something in practice as you will be. You can start with one project. With working in project can teach you better and faster than you learn step by step, function by function.
As you know, technology is running very fast, if you don’t run like how technology run, you’ll nice in old methods, but you blind in new technology. Because to lern function by function needs more time to you to understand.
Think about something simple in your life, convert it into idea that can you develope this. Its not always about money first, money will come to you when you ready.
When you doing project, you’ll think how to do something, how to correct some bugs, how to functions working, how to use some features and much more. It will be helpfull for you if you new to this world.