Jos de Jong has a great concise write-up on pitfalls and excesses in building reusable software.