* The Pragmatic Programmer [1]
* Apprenticeship Patterns [2]
I would highly recommend both.[1] http://swanson.github.com/writeup/2010/10/25/pragmatic-progr...
[2] http://swanson.github.com/writeup/2010/10/26/apprenticeship-...
* The Practice Of Programming (co-authored by the 'K' in C's K&R)
* Code Complete 2Software Estimation: Demystifying the Black Art
Pro GIT
Debugging by Agans
Code Complete
Being Geek * Effective Java
* Java Concurrency in Practice
* Head First Design PatternsI'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.
seems like there should be a good book on how to manage your boss / client but i don't know of one.
Coders at work - For inspiration
* Head first design patterns
* Agile Web Development with Rails
It's not obvious, but the rails book is a great introduction to test-driven development in general.