in reply to
What you refuse to see, is your worst trap
Another flap side of the "ego" story is that, it's not easy to explain to someone from nonengineering background why a programmer who wrote the code should not be a tester himself. They don't see why a programmer would be "blind" to his own code.
Peer code review is a good practice. I never found it possible nonetheless when the programmers have been worked to their limit (coming in before dawn, or leaving late, sometimes, especially hard for those married with kids).
In heated debate situations, I often based on the other party's arguments to construct a series of questions which lead the person to draw a contradiction himself, if there were flaws in the arguements. Work pretty well with any decently intelligent people, albeit stubborn for a moment(provided you're cool-headed yourself).
I feel that in order for someone to be willing listen to you at all, it's best to be able to use and speak in his argument, terminology and language, that way, you become a Trojan horse arguing from within his ego instead of from without.
Besides, rephrasing what someone said in your own language minimizes misunderstanding (which is especially important during requirements elicitation).