To become a good programmer, one must code a lot. There is no alternative to that. However, listening to experts on podcasts, watching them code on websites like tekpub, reading blogs and most importantly reading books can add a purpose and some direction to the learning experience.

I started preparing for own list of books. Hanselman has good suggestions here . I also came accross some additional ones on this good post by @Latish In addition to these, I am working on the following:

Most of these books are language agnostic. I like that!

Clean Code Handbook Handbook Software Craftmanship by Robert "Uncle Bob" Martin

The art of unit testing with examples in .net by Roy Osherove

Pair Programming Illuminated by Laurie Williams and Robert Kessler

Patterns of Enterprise Application Architecture by Martin Fowler