Like others here, I did a lot of learning via a game and via a typing class in high school. But one thing that helped me a lot was doing some imaginary practice away from a keyboard as well. For example, if I was a passenger in a car I would read road signs and imagine typing out the letters. Sometimes I would physically move my fingers, and sometimes I would just tense the finger involved while I imagined reaching to the appropriate key. I practiced this way anywhere I was hearing or reading words and had the spare mental cycles to do it.
I used this technique again when I switched from qwerty to colemak. You'll still need some dedicated "coursework" like a game or program, but this approach lets you fit in some extra practice over the course of a day.