Here's a little trick that helped me learn 10-finger-typing really well:
When you read an article in your browser, activate the search function (ctrl+f) and just start typing the text you are reading. With firefox or chrome, the text you are typing will simultaneously get hightlighted.
Just read the hightlighted text. You'll want to know what comes next so you'll type as fast as possible. You want to read the text fluently, so you'll type blindly and so on. Worked 100 times better than all these boring training programs.
I learned to touch type (ish, very ish) by forcing myself to look away from the keyboard when i was typing, and stare at the screen. This lead to about a week of very slow typing, as I kept fumbling my fingers across the keyboard, trying a key, deleting it because it was wrong, trying a different key, etc., etc. And then, after that, my typing as was fast as it had been before, only I didn't have to look at the keys. And, shortly after that, it was faster.
Come to think of it, there are a lot of things like that - places where you have to leave a point of high optimisation*, and be _less_ efficient for a while, in order to find your way up a different hill to a new optimal solution. I did that when I left my previous job and moved to my current one - I took a £3000 paycut because I believed that I'd have more potential in the current job - and sure enough my pay is now 70% higher than it was then. there have also been the odd social situation like that - I found it very hard to let go of some things because it felt like life was getting worse, but it was necessary to do so in order for things to improve in the long term.
*See Local Optimum for more on this kind of thing