I recently finished a good book, The Pragmatic Programmer, by Andrew Hunt and David Thomas. (I had read their Unit Testing book a while back).
What I liked to much about it was that:
- It really was practical
- Andy and Dave are good writers, with a down-to-earth style
- It transcended the current technology (much like Code Complete)
- It addressed a huge range of topics, from automation to testing to team culture. Software engineering isn't just about a lone-wolf developer typing the write code. Rather, it requires a huge breadth of skills and process.
- It boiled things down to specific tips.
- It pretty much takes a bunch of lessons that I learned the hard way and presents them.
- It's short - maybe 250 pages (not including appendix, references, etc...)
I wish I had read this five years ago.