"I want to be able to take an idea and turn it into a product that people would be willing to pay for." <-- there are lots of great programmers unable to make a product people would be willing to pay for.
You just need to do lots and lots of dummy exercises, developing experience with the tools at hand. Then, when you attack the next great thing, you can draw upon your previous examples to figure out what to do.
As a personal example, I used to start writing very large assembly projects in straight x64 assembly. This has a logistical problem, namely that you dont necessarily have a working version for weeks.
Then i discovered python! After doing a few small projects in python, I saw the light (the productivity of python) and nowadays I find myself starting in python and slowly reducing components to C/C++ (using python/C or boost::python) and finally replacing those components with assembly equivalents.