A friend recently asked me about which either general or games specific programming books would I recommend. The true and legendary must read. I answered him directly as I was feeling lazy about posting a comment on each one of them but here I am now. Nevertheless, before going straight to the list, please bare in mind that just like any other best of [insert year here] collection, this is simply a matter of opinion. Not every book is necessarily suitable for everyone at any given time.
Effective C++
Provided you already know how to code in C/C++ reasonably well, this is the book you should be looking at. Proficiency is in the details and you want to get better, don't you? Structured in small pieces of advice, makes it highly entertaining and almost hides the complexity of the dense topics it covers. Contents range from subtle language details to design gems and wise use of OOP, it has a little bit of everything and I love it. The best non basic C++ book I have ever read, absent doubt.
If you want to go further, More Effective C++ and Effective STL are worth checking out as well.
Design Patterns
I read this one a few years ago and it has proven itself most helpful since then. It is the classic patterns book, elegantly designed solutions to common problems. Singleton, facade, factory and all their friends are explained by presenting a real life problem, discussing a few alternatives to finally come up with a beautiful approach to solve it. Patterns are widely used in companies and, I believe knowing how to employ them wisely is paramount to be a good coder. As it is also an item structured book, it becomes quite accessible and allows being used as a consult source.
Game Engine Architecture
Personally, I consider it the ultimate game programming Bible. Brilliantly written by a Naughty Dog coder, it goes through every single component a decent game engine has. Input, rendering, collision detection, AI, networking and many others are there. Not only it explains what every subsystem does and a few ways of implementing each one of them, it also details how subsystems cooperate to achieve the bigger goal. Even though it does not provide an excessive amount of sample code, it hints enough so a mere commoner coder like me can implement stuff and feel fairly smart afterwards.
However, I would not recommend it as a first contact with game development, being so massive and detailed, it can blow any newcomer's mind.
Game Programming Gems
This one is actually a series of books, very well known if I may add so it will not strike you as a surprise. Each issue is made of several articles written by industry professionals on themed blocks. I read a few when I was a complete noob so my ability to absorb knowledge from them was quite limited to put it nicely. As opposed to Game Engine Architecture, which scratches the surface of many topics, these texts are highly specific and therefore, recommended for medium to advanced programmers. This is the real deal, profusely tested and used in tangible projects.
Artificial Intelligence for Games
Want to learn about game AI? Search no more because this is it. Very few books start covering the very basics about an artificial intelligence system and end up explaining quite advanced stuff such as space partitioning, hierarchical path finding and machine learning. Even though it warms up with a friendly vision of how AI systems are designed and layered, it turns to be absolutely right and precise. Movement, physics, steering behaviors, state machines, high level strategies, decision making, you name it, the book explains it in plain English and easy to digest Python like pseudo-code.
I read it from cover to end only to find out later that it was going to be the course book for the AI module I took in Kingston University.
Currently I am reading through Large Scale C++ Software Design and it seems like a strong candidate for this list. I will probably write my impressions on it in the near future.