I've just finished reading The Pragmatic Programmer by Hunt&Thomas. I'll try to be pragmatic and keep it brief; I liked the book because it is
- timeless - talks about patterns and ideas as opposed to domain-specific tips'n'trick
- well-written - no waffle or forced jokes, the reader is easily able to relate,
- down to the point - book well structured, every chapter hides some value for the reader.
The authors discuss critical aspects and problems in software engineering: testing, estimation, orthogonality, "programming by coincidence", refactoring. A really good read, The Pragmatic Programmer was time well spent.