Code Complete 2 is a really useful book on good programming, software engineering and management principles. I read this several years ago and it’s really shaped the way I program. It’s a thick book, but it covers creating software at a lot of different levels. It starts at a really low level with coding style issues, like variable naming, spacing, and other low level details. It progresses to higher level software design issues; abstracting code into classes and functions, design patterns. It then moves on to good practices for managing large software projects, such as scheduling and the programmer/management relationship. Overall, I would say this is the best book that a fresh graduate can read to learn about programming professionally.