For programming, "Game Coding Complete" by Mike McShaffry and David Graham. The book gave a very nice intro to a number of design considerations and given that McShaffry did a decent amount of game programming in the early days of programming, there are discussions of how they dealt with incredible design constraints. The book served as a good introduction to thinking about performance and size of the software that I build today. The book introduced me to concepts like how hardware could introduce unexpected performance changes. I honestly don't do much game programming at all, but it was a very nice introduction to some otherwise difficult topics. I think that even some experienced developers could get something out of that book.