Maybe because we as programmers are used to the idea that computers are deterministic, maybe because of the disconnect between what we think should happen inside a machine and what happens, perhaps because we keep studying/reading/continuously learning (because we like it or peer pressure).
I believe we are in a field full of dogmas, a thousand 'best practices' that are at least partially right and that most of us decide to not only believe in unconditionally but also define ourselves by them.
"I am a TDDer", "I am a software craftsman", "Functional programming is best", "OOP is best", "Language X has the best experience", If you worked in programming for a small while, I am willing to bet that you heard one of these sentences or a variation of them.
And I believe these dogmatic beliefs hurt us in general and particular.
In general, it creates too many situations where a group of us in a discussion resumes to each reciting their mantra turn by turn, not listening to the rest, and unwilling to move from their position.
It hurts us because once we deal in dogma, we lose a lot of flexibility when doing our job, and I have yet to encounter a situation that is as neat and 'perfect' as in one of the books/articles I have read.
It hurts us because we tend to export that attitude when dealing with business problems, and business is even more uncertain than code.
I sadly can't give you (or myself) a silver bullet to deal with this, or I risk just reciting another dogma. But try to identify your dogmas, listen and identity dogmas in other people and keep an open mind about them; it will probably make your interactions more constructive and your actual coding moments more flexible.
To conclude, keep in mind that reality will probably differ from your theoretical ideas, embrace that; it's what, in my opinion, makes our job so enjoyable.