Code Complete ++
I backed into programming from engineering and, as such, had no formal education in software development. Feeling really ignorant on the subject (I was, probably still am :^0 ) one of the first things I did was read the first edition cover to cover (took me a while)-- but it was well worth it. I highly recommend it.
The second book that I would recommend is "Practical Software Maintenance" by T. M. Pigoski. My (limited) experience is that, while most methodology books focus on creating new stuff, most programming revolves around maintaining existing stuff-- apparently maintenance isn't a very sexy topic for authors. I guess that must I disagree with most methodology book authors as I tend to think that knowing how to maintain something well should be a prerequisite for being allowed to design something new.
The third book that I'd recommend is, errr, hmmm, I don't really have a third recommendation.
I seriously enjoy book shopping, but yeah, don't buy the books if you aren't going to read them (not that I've read all the books that I've bought, just most of the non-reference ones). Hmmm,
htere's (%#@ qwerty keyboards) there's a few that I should re-read.