|
There are perfectly good programmers who haven't picked up a book since they graduated, unless it was to prop up a monitor or build a shelter from Nerf darts.
There are a lot of great online programming resources, but personally, I couldn't survive without my books. When I encounter a new topic, the first thing I do is track down a good book about it. Mmmm... tasty hardcover brain food.
Programming is a topic that gets a huge section at the big bookstores. Buyer beware however, not all of those books are worth your time or money (mini-rant: do nearly all computer books really have to cost over $50?). To help you avoid the duds, I'm posting short blurbs about some of the better books that have collected on my shelves over the years. Some are specific to games, other are broader programming books I've found to be relevant to game development.
To kick things off, here's a short list of solid general programming books:
Code Complete
By Steve McConnell
Code Complete is an essential book for programmers who have learned how
to program, but don't have as much experience with the complete
software life cycle of full-scale projects. It's filled with lots of
good practices for everything from planning, to design, coding style, performance, debugging, and maintenance. The author also includes plenty of references to other good programming books to bulk up your brain.
Even if you don't agree with
or adopt all of McConnell's advice, these practices show up in
other people's code, so it's good stuff to know.
In short: The professional programmer's tour guide.
Design Patterns
By Gamma, Helm, Johnson, and Vlissides
This one is a classic for object oriented programming (OOP). It's not for beginners, but if you've already got the basics of OOP, Design Patterns will save you from reinventing the wheel.
DP is presented as a catalogue of proven OO design solutions. Some seem obvious at first glance, but if you really dig into them they reveal a lot of depth in the details. Even if you rarely do any heavy duty design work, being familiar with the design patterns in this book will help you find your way around other people's code more easily.
In short: Read it, or else.
(...or else skim it, it's good as reference too)
Refactoring: Improving the Design of Existing Code
By Martin Fowler
Refactoring is a great book that describes how to properly refactor code. Sketchy programmers have been known to use refactoring as an intimidating word to smokescreen coding by trial-and-error and "rewriting your code to look like mine". Don't let this put you off, real refactoring is a good thing, and Fowler wrote the book on how to do it right.
Proper refactoring is about safe transformations you can apply to code to improve its quality. It's a great strategy for those situations when you've inherited a horrible code base (or let's face it, maybe you helped build it), but can't afford to throw it out and start again. Refactoring is not just for salvaging bad code though, it can also be applied to good code to make it better. This book is similar to Design Patterns, in that it provides a catalogue of refactorings for you to use. Good for reading, great for reference.
In short: Friends don't let friends talk about "refactoring" without reading this book first.
That's it for the general purpose programming books. Got one to add to the list? Please share below!
|
http://www.amazon.com/Effective-Specific-Addison-Wesley-Professional-Computing/d
p/0321334876/ref=sr_1_1?ie=UTF8&s=books&qid=1247100522&sr=8-1
and most of the Game Programming Gems books are really good.
by Robert Sedgewick
3rd edition (is current, I think)
I am well aware that this is one of THE classics that any CS student should have bought, read and committed to memory by their second year. However I find that more and more CS courses have a rather flimsy algorithm curriculum and/or use sub-standard teaching materials.
Even if you worked through every single data structure in there during college I strongly suggest to keep it around. There comes a time in every programmer's life when one has to look up the details of how a trie really works. Also, the various language editions actually diverge quite a bit with regard to implementation details.
@Klaus: Thanks, Sedgewick's algorithms books are new to me. I learned from Intro to Algorithms by Cormen et al, which was a definite keeper from school days. Looks like Sedgewick has a 4th edition in the works. Maybe when it comes out, a big algorithms book round-up will be in order. :-)