I've been programming for just under 30 years, and just recently (5+ years) realized I still couldn't touch type the symbols and editing keys (Insert, Page Up, etc).
I tried forcing myself to try without looking, and made many mistakes along the way.
But I kept cheating and peeking at the keyboard.
So I decided to buy the following keyboard: (About $130 CAD at the time, not cheap!)
Das Model S Ultimate Keyboard
It is a high quality mechanical keyboard WITHOUT any characters or symbols.
So I was forced to learn and master the keyboard layout, and can say that I can type any symbol now without much trouble (a few are tricky!).
Also, make sure all keyboards you use (work, home) use the exact same layout.
Most are the same, but some have weird Enter keys that are 'L' shaped, or a vertical edit key layout rather than horizontal, etc).
One caveat of this keyboard is when you are not programming and your fingers aren't on the 'home row', and you need to just quickly type a 'U' or something random for some prompt, it's funny how hard it is to find a certain key in a blank keyboard without your hands in the familiar position!
I find I did this NOT to improve my programming speed, but to improve my programming flow. By keeping my eyes on the screen it seems to make programming faster and smoother.
Another thing not mentioned was avoiding using the mouse while programming.
I would advise learning all the keyboard shortcuts so you can almost eliminate your mouse usage while programming. Such as going to the end/beginning of a line, end/start of the entire document, hilighting a word or line (for cut/paste etc). Anything to keep you in the flow.