The Pragmatic Programmer: From Journeyman to Master by Andrew Hunt, David Thomas
Recently, I studied this book. The chapters about how to write solid code from chapter 2 is not that interesting to me. Many books have discussed these a lot. The most attractive part for me is in chapter 1, especially the section "Knowledge Portfolio". I have been in the software industry for almost 5 yrs. Many of my coworkers don't study, they just polish the skills they already have, the skills that might be outdated. The question is, without absorbing new knowledge, how do you know if there are new and better ways or tools to solve the problem you are solving ? How do you marry the new knowledge to the skills you already have is another story. You don't even have any chance to do it without having learned new knowledge.