I am also an aspiring programmer. One question that I am really curious about when it comes to programming games in general is that when writing the code for whenever it interfaces with the OS if that is contained in a generic object that could then contain code that has specific commands for say Windows, or the OS of Xbox 360 or Playstation 3.
Is there anything radically different for the OS of the consoles compared to the PC?
Is there ever a need to write any assembly-code for the x86 instruction set?
Some of the concepts are the same (a filesystem is a filesystem) - but the implementation details are usually different. Windows hides a lot of stuff from the programmer because it has to abstract away millions of combinations of hardware and software, but the consoles are more low level - partially because the OS's job on a console is to get out of the way of the game and take up as small a chunk of time and memory as possible.
I don't think we need to *write* x86 assembly on PC anymore - the compiler usually does a better job and can take into account the way a processor works better. However you should be able to at least read and understand assembly, as well as the basics of the architecture like how memory is managed. You'll be looking at it when trying to track down obscure bugs or timing issues - especially when you're trying to find a bug that happens in a release build, but not a debug one.
If designers get ideas from other games where do you coders get ideas?
Other games
Though we probably look at it differently then designers/artists do. And I, personally, like to look at how other games are moddable to see if they have any awesome ideas for our own stuff (they usually do!) I can also find inspiration from non-game programs. For example, databases have a lot of interesting mechanisms for data manipulation and retrieval - and our masterfile is kind of one big database!