Put your hands on home row and keep your eyes on the screen and just go, with discipline... it's how I learned, sorta. A friend and I competed to learn how to type without looking.
I won't recommend it. You sure can just go to a shallow swimming pool, flail around and learn swimming, but re-discovering first principles is distracting and might de-moralize you.
I don't remember which one I used when I learnt(it was about 6 years ago and I was using windows at that time), but I would say use one which teaches basic letters, n-grams, symbols and integration. Muscle memory is built over time and it's hard to override. Unless you believe using wrong fingers give you some sort of advantage, why would you want to learn the wrong fingers when you can very well learn the right ones with the same level of effort(your comment about y and b)?
I'm just giving anecdotal evidence for what worked for me; and TypeRacer puts me at 90-110 wpm, which is far more than I'll ever need for my programming work.
Then again, if he's actually asking for a program to help him because he actually wants a program's help (as opposed to thinks it's the only way he can learn), it'd be better to go with a program. What I was encouraging was that you didn't have to have a program to help you learn how to type. Also, just using all 10 fingers on the keyboard all the time, and having them rest on or near home row, even when you have to look down occassionally to see which finger should go after which key, and where that key is, is a good step toward improving as touch-typist.
I don't remember which one I used when I learnt(it was about 6 years ago and I was using windows at that time), but I would say use one which teaches basic letters, n-grams, symbols and integration. Muscle memory is built over time and it's hard to override. Unless you believe using wrong fingers give you some sort of advantage, why would you want to learn the wrong fingers when you can very well learn the right ones with the same level of effort(your comment about y and b)?