This is a free e-book which is worth reading for programmer. I wish someone have told me all these when I started my career as a programmer instead of learning most of those things the hard way.
Free e-book How to be a Programmer by Robert L Lead. If you think that technical skills are the most important skill as a programmer, think again and go ahead and read the book.
Other useful free e-books are also available from http://samizdat.mines.edu