Well there’s your problem… you should be able to type without looking at either 
No joke on that, I’m usually reading something else while typing – transcription skills FTW.
define “special characters” – do you mean alt+keypad, or do you just mean non-alpha characters and/or shifted numerics? If the latter, that’s just a matter of practice and time… I’ve actually had a bit of a struggle lately as, well… [url=]Model M Elitist jerk checking in… and I’ve been doing some coding and testing on a Tandy 1000 SX, which has a radically different keyboard layout for anything other than alphanumerics – like the only backslash is on the keypad 7, vertical break is on keypad 4 instead of being a shifted tilde, tilde is on keypad 8, etc, etc… (and print-screen is located in a particularly annoying spot) – so it’s been a bit different… but I’m adapting quickly enough. It’s all about practice and use.
Only at the very start… most of the coders I know can only hunt and peck despite the rather impressive code they come up with – but in a way I think it would depend on what languages you’re going to use.
Anything C syntax like PHP or Javascript is going to be hell due to the needlessly cryptic and obscure formatting and delimiters. Unfortunately around 90% of programming languages right now are just versions of C in drag, apart from minor syntax changes, scope changes, and different object implementations they’re all just C…
Probably why I spend so much time in Object Pascal and Assembly since they tend to use more easily followable code and text – I’d rather hand compile 8k of machine language and enter it on toggle switches one bit at a time on a cosmac elf than deal with 1k of C++ source in a modern environment.
Learning the languages will get you that mastery of the keyboard through practical use. “learning the keyboard” completely doesn’t necessarily develop the proper muscle memory for each programming language – each language tends to have it’s own set of common characters – Pascal for example you’ll be using colon, equals and semicolon a lot, without too many oddball characters apart from operators… C you’ll be using all sorts of oddball characters like curly brackets, asterisk, etc… PHP takes that C syntax and adds a slew of dollar signs along with minus signs, and greater than signs (and not using them for their actual meaning and instead making an arrow with them), ampersands, etc…
You’ll probably spend a week or two dropping out of ‘banging out alpha-text’ and into hunt and peck, but soon enough the muscle memory will build up and you’ll be typing along just fine…
One thing I miss from the old days of computing is source code in the back of magazines – because instead of “I’ll just download it” you had to type it in… It was a GREAT way to learn how to type code. Do that with some tutorials, instead of cutting and pasting spend time actually copying the code by typing it in. Set a plain text editor to half screen width, the code to half screen width, and transcribe.
As the old saying goes, the only real way to learn is by doing.