In Andrew Hunt and David Thomas’s The Pragmatic Programmer, the authors attempt to distill years of experience into a slim (but highly-priced) book. Instead of presenting a huge over-arching methodology or a single grand idea, they just have lots of little (usually 2-5 page) tips about ways of working and thinking that produce better results.
The bite-size nuggety nature of the book is a big strength—lots of good ideas aren’t book-length, and hence don’t get written up for posterity—but it’s also a weakness. Some of the info-nuggets are dreadfully obvious, some of them are highly controversial, and some of them are too complex to be crammed into the space allotted for them. The book is an uneasy amalgamation of common sense notions, really good ideas, dubious ideas, and the occasional vague idea.
But that’s fine. You don’t expect every bit of a book to be great. The real problem I had with this book is that it was all over-familiar. Use version control, master your editor, do automated unit tests with xUnit, have an automatable build process, don’t believe users’ stated requirements: I know these things, and I’ve read scores of articles and Web pages over the years telling me exactly the same thing that Hunt and Thomas are telling me, so do I really need to pay them this exorbitant sum to tell it to me again? Not really.
On the other hand, if you haven’t heard these things and are a working developer… well, first of all, you need to read around a bit more; but you could do worse than to start your reading with The Pragmatic Programmer. There’ll be very little new for experienced developers, but lots of interesting tidbits for new ones.