I'm reading SICP at the moment and have to say it's been a real eye opener.
I'm finding that seeing concepts I take for granted when I'm programming being built up from first principles changes the way I think about the languages I use.
I'm not sure it's made me a better programmer, but it has given me a better understanding of why programming languages are the way they are.