As I've made my way from being a greenhorn programmer (It's now around 8 years since I wrote my first C program, and more than 12 since my first BASIC program) to being reasonably competent, I find reading technology-specific programming books less useful. Unless I am doing work with some newfangled technology (or some oldfangled technology that's new to me), I've stopped reading books related to the latest C# fu, or .NET remoting, or managed sockets, or whatever is the newest buzzword in network programming. Books more generally related to programming per se, with insight into general, non-language-specific concepts seem more useful to me. Language and platform-specific books serve as great references, to be picked up when a task is to be accomplished at work(or elsewhere - but I am a mercenary coder right now :-))
I just started reading "The Practice of Programming" by Bob Kernighan and Rob Pike. So far, I've liked concepts put forth in the book related to the real-world practice of writing efficient yet readable and maintainable code. It talks about things like how much commenting in a program is important (my answer: go with what feels right - is fairly close to theirs). Another gem is how using funky operator combinations to do ten things in a single line of code is a bad idea. It will take the reader two hours to understand it, and a day to decode issues with it. The "if A ? A:B" format for a condition in C is as complex as a line of code should get.
I'm still reading the book, and it's been a fascinating one and a quarter chapters so far. Most of these things I've picked up over the course of time, with experience. Some are probably situations I haven't encountered, so knowing the scenario a priori isn't too bad.
Also on the list: The much-revered Art of Computer Programming by Donald Knuth.
While I'm at it, "Code Complete" and "Writing Secure Code" too. It shall all be done. One insight at a time.
Another area that I would like to explore is languages. Being an Electronics student in my undergraduate years and a networking/systems major in grad school, languages/compilers and the evolution of these concepts is an area I've never really explored. I've heard good things about The Design and Evolution of C++ which may be a reasonable place to start.