I just graduated college with a degree in CS and took a job as a SE. I was curious to know if there were any books that would be valuble to help me bridge the gap between school and industry. Thanks for your suggestions.
I read these two books in the first few months at my job with a book club that included the other new hires and a good mix of more experienced developers.
* The Pragmatic Programmer [1]
* Apprenticeship Patterns [2]
+1 for Being Geek. It's essentially a well-laid out rehash of Rands' blog posts over the years but I've found it good reading, even with the enormous amount of typos. I'm in the same situation as the OP, so the strategic career advice is much more relevant now than when I read it in the past.
If you will be programming in Java, my condolences. (yes, I'm ready for the downvotes).
I'm sure there's some nice Java code out there. I recently agreed to do a Java project, and the 6 months I was at it sucked the joy of programming out of me.
I've spent the last few years doing Python, C and K, and in comparison, Java is so bureaucratic that I felt like 10% of my work was advancing towards my goal, and 90% was bureaucracy (compared to 20% bureaucracy in C, 5% in Python and 0.001% in K)
And as for books, I recommend Jon Bentley's "Programming Pearls" series, Steve McConnell's "Software Project Survival Guide" and DeMarco and Lister's "PeopleWare". The last two have more to do with project (and people) management than with software engineering - but you will need these skills much earlier than you'd expect, perhaps even in your first couple of months of work. And PeopleWare is a short and enjoyable read, you could put it in the "leisure" pile.
Code craft is the book I normally recommend for people starting out. Code Complete which several other people recommend is a great book, but it's one of those books that make much more sense after you've been programming for a year or so.
I am sure you'll get enough suggestions on technical books so I won't bother suggesting one. But make sure to pay extra attention to communication. A huge part in software engineering is communication.
[1] http://swanson.github.com/writeup/2010/10/25/pragmatic-progr...
[2] http://swanson.github.com/writeup/2010/10/26/apprenticeship-...