A solid and entertaining treatment with good C++ examples:
by Paul Watt
From the middle of the article:
... To further clarify this statement, not all code should be reused.
Because the majority of software that is written is designed to fulfill a very specific purpose. The challenge is to find the balance point between generic reusable building blocks, and a tool or application that meets a need. Generic software components are very valuable, however, they are almost useless by themselves...
And gems like this:
... For every statement of code that you write or use, you should ask the question: Does this add value or risk?