I had a school assignment about writing a letter as if I were part of the Trojan War. I figured I'd learn Dactylic Hexameter and write it all in Dactylic Hexameter. Bad idea.
This is a project management problem, not a problem with too smart developers.<p>The problematic activities described here, overgeneralization and solving imaginary problems (aka Coding for A Rainy Day), are simply typical newbie mistakes.<p>Otherwise highly competent developers almost always fall into this trap early in their careers, so the important thing is to have someone experienced in charge of the project who can veto their weirder ideas until they mature.<p>I think every software company should hand out a copy of "The Pragmatic Programmer" to all new hires. It gives much good advice on how to not overcomplicate things.
Anybody can rationalize anything to his own satisfaction, regardless of IQ. The problem with being smart is that there are fewer people who can see through your rationalizations. The skills of dissasembling your own cognitive biases and testing your ideas against reality grow in value as your IQ increases.
A rationalization means to come up with reasons to support a belief, idea or action that one knows (or could know) is not actually rational. It is a form of dishonesty mimicking rationality. The issue with smart people is not that they rationalize (i.e. are dishonest) but they are able to come up with sincere reasons, often very convincing reasons, for their beliefs. This makes it very difficult to get them to question their premises.