Game Programming Lore: Differences between console and PC development, Part 1Fixed console hardware vs. endlessly variable PC configurations
One of the most obvious and most important differences between console and PC development is that console hardware is fixed whereas PCs are very variable in what CPU, graphics hardware and memory they have. With console hardware being fixed and developers being covered by NDAs with the console manufacturers, developers will usually have much more direct hardware access and much more detailed information on the low level design of the hardware than on the PC.
Targeting a fixed, known hardware platform makes life easier for programmers in some respects. If the game runs well on the development kits then it should run just as well on every customer's box. This is in contrast to the PC where the different performance characteristics of different CPUs and graphics cards and the varying amounts and speeds of memory on different systems mean that developers must test many different configurations and provide options for performance scaling and sometimes entirely different code paths for different hardware.
On the other hand, in order to deliver the quality of experience consumers expect on a console, programmers must be comfortable with low level hardware details that developers on the PC don't have to deal with (even if sometimes they wish they could!). In order to compete with other titles on the market, console programmers will need intimate knowledge of the hardware at a level which is generally not even available to PC developers. Not every programmer on the team will need to be a low level hardware expert but a successful console team will need some programmers who are very knowledgeable about the hardware.
I'll have more to say about some of the specific technical implications of fixed console hardware in future posts.
It's like retardo land in this place sometimes.