There are many flavors of "smart engineer". But I think the one you're describing is the sociopathic one.
The key problem here is the lack of empathy — to users, to fellow developers, to the company goals, to the business. They basically don't care about anyone and tend to look down on others.
Those are the kind of people who would kill anyone who points out their "smart" solution is just an overengineered piece of crap in real life.
In my perspective those are not smart at all, they'd better focus on some academic research and not come close to any user facing products.
And I don't see any simple way to change this attitude, it's something deeply rooted in personality.
Of course there are other types of smart engineers who just didn't have a good example or haven't thought about caring for other factors in software engineering beyond pure CS, then it may help just being straightforward with them and find a "good" smarter developer as a role model.
The key problem here is the lack of empathy — to users, to fellow developers, to the company goals, to the business. They basically don't care about anyone and tend to look down on others.
Those are the kind of people who would kill anyone who points out their "smart" solution is just an overengineered piece of crap in real life.
In my perspective those are not smart at all, they'd better focus on some academic research and not come close to any user facing products.
And I don't see any simple way to change this attitude, it's something deeply rooted in personality.
Of course there are other types of smart engineers who just didn't have a good example or haven't thought about caring for other factors in software engineering beyond pure CS, then it may help just being straightforward with them and find a "good" smarter developer as a role model.