If anything, I am a pretty good software engineer because I can "literally" see how people think about software when reading source code and pull requests (I say literally because these things are... objects I can manipulate in my mind? it's hard to describe, and it took me a while to realize not everybody sees it this way).
There are many different ways of thinking, and they are right there in front of me, and some people are aware of certain patterns, certain people tend to consistently not realize this approach exists, others just can't back down from rewriting everything in a functional style, when others in the team don't do well with it. When I see programmers argue about style or programming language or framework I am often confused because I don't understand why they can't see that other people don't think like them :)
This same kind of behaviour can be observed all around us every day. I never understood how people get upset at staff at a restaurant, or get angry when someone bumps into them. Don't they realize that the other person didn't do it on purpose, and didn't mean harm? Why do people argue about politics so much? Don't they realize that other people have different values, and that we have a government in place to channel disagreement about them? Why yell at each other on facebook, don't you realize none of this is going to change the other person's mind?