I really like this post by Jeremy Keith on the difference between under and over-engineering:
Ubiquity; universality; accessibility—however you want to label it, it’s what lies at the heart of the World Wide Web. It’s the idea that anyone should be able to access a resource, regardless of technical or personal constraints. It’s an admirable goal, and what’s even more admirable is that the web succeeds in this goal! But sometimes something’s gotta give, and that something is control.
I’ve been thinking along similar lines when someone suggests using a third party tool or framework at work (for example a spreadsheet component); if we want complete control then we should make our own, but if we want the ubiquity of that design and subsequently we’re okay with limiting ourselves by the original codebase then that’s fine.