As a lot of members have already stated - experience is really the only way to learn here.
Doing is far more advantageous than reading it from a book.
Get stuff for free and hope it breaks. See if you can fix it. I started learning at 4? (I can't even remember) on a 486SX running Windows 3.1 - Google didn't exist and if I wanted my games to work I had to figure out what was broken and play around with it until it worked. We have a huge advantage with Google having essentially unlimited access to all the documentation and forum boards where others have tried and either succeeded or failed. Either way no matter what the problem is you are bound to find something on it.
In IT theoretical situations/simulations are almost never helpful in reality - so reading examples from a book will give you an "idea" of what is what, but won't actually give you the experience of that system/network running in actual practice. I find it extremely hard to learn from books when it comes to IT concepts and much easier to see the system and network running in practice. By the time you get that piece of equipment in your hands the firmware/GUIs/commands have all changed. IT operates in real-time and constantly gets updated - the pictures and references you'll see in books are outdated by the time they are printed.
If you can collect equipment from friends, neighbors, etc this is a good way to start building your own network of PC's and other devices so you can see how it all works. You'll find out quickly the limitations of certain devices and begin to form a foundation for recognizing problems.
If you want to learn programming in a digestible fashion I suggest starting here:
https://www.codecademy.com/
I absolutely hate learning to program, but I've somehow made it through a few of the tutorials and I find that the process they make you work through commits vocabulary and programming skills to memory rather than making you do "X" once here and there and then expecting you remember it 100 tutorials down the road. It builds your ability from the ground up and they have a large variety of different languages you can learn.
What language you choose to learn first will be up to you - there isn't exactly any language you can learn that will "better" than the others. It all comes down to goals and what you want to be capable of.
My last piece of advice is that there is no shame in asking questions when you have truly exhausted all of your options and knowledge. Communities like Overclockers exists partially for this reason. We are here to help one another through issues we may or may not have seen yet and provide one another with the best direction we can.
Good Luck! I hope you find your path down this road
I find solving everyday IT issues fulfilling - we are definitely a rare breed of people!