I recommend using the American keyboard layout if you're doing anything remotely programming related, otherwise all the special characters are just way too annoying (even though personally there's also a few of those in the American layout that are suboptimal, but a keyboard only has so much space...).
If you frequently find yourself needing German (or other European) symbols like ä then you can also look into using EurKEY [1] which is basically the American layout but gives you easy access to the "umlauts".
Have you tried the US-International layout[0]? It's basically the standard QWERTY US layout but ", ', ^ are dead keys used to generate diacritics.
If you press " followed by o you get ö.
' + e prints é.
The only thing to get used to is that if you want quotes for example, you need to press <space> or another character that doesn't accept accents after the key.
I used this layout for French and it's way better than the weird French AZERTY layout.