Disagreement is vital for growth, so how do we do it productively?
When disagreeing, both parties have roughly the same mindset. They will change the other person's mind using facts. They assume the other person is rational and simply believes what they do because they don't have all the facts. However, no one approaches an argument believing that they are the ones who are missing information. This outlook pits the two parties against each other, both believing that the other is misguided. For every point one brings up, the other's reaction is to find flaws and produce a counterargument. This is how we were all taught to argue. Find faults in the other person's logic and justify any faults that get found in yours.
This is not productive.
It leads to endless nitpicking without questioning one's initial beliefs. Once pride gets entangled, it's difficult to escape with a solution to the original discourse.
We can do better.
For every point they make, try to understand it before you look for flaws. Restate it in your own words. You don't truly understand something until you can explain it. If the other person believes that you understand where they are coming from, they will be more receptive to feedback.
Once you understand what they are trying to say, acknowledge it. It probably has some validity. It makes sense to them, so figure out why. What context do they have that justifies their opinion?
Everyone has a mental model of what they consider to be true. Does this new point fit into your mental model, or does it interfere with something? Interfering isn't a bad thing, it's necessary for growth. Every point they make gives you an opportunity to reevaluate your own opinions and reshape your mental model.
If it doesn't fit, explain why and elaborate. Showing how you reached your conclusion will help the other person understand your perspective, and might help you find a hole in your own logic.
Since we are not perfect, ask if you've missed something. You probably have. Encourage further exploration of your own assumptions. This is an opportunity to learn.
Convincing them that you are right does not make you smarter. Figuring out how you are wrong does.
Framing disagreements this way will transform arguments from a confrontation between two competitors, who might have their reputation and/or pride at stake, to a collaboration between peers trying to solve a problem. This way, the other person will not feel attacked, belittled or get defensive. They will see that you are trying to find a solution and will want to help.
Approach every argument assuming that you're missing something. This will instantly put you on the same side as the other person, as that's what they probably think. Make arguing a team effort in search of the truth, instead of a gladiatorial showdown. When you fight, no one wins. Even if you do "win", it's at the expense of the other person. They might not want to bring new ideas to you. They might resent you for belittling their opinions. They could still disagree with the result of the argument and not commit to doing their part. They could reduce how much they communicate with you in fear of being burned again. They might even work to undermine your efforts out of spite. So don't fight, don't risk the unknown reaction to your aggression. Find a solution instead of creating different problems.
Now, Dear Reader, I am not trying to get you to change your ways. This is just how I currently operate. I've read some books, talked to some people, coached & played on some volleyball teams, built software in groups, accumulated personal experience and have put a little bit of thought into this. I hope you find flaws in my logic! I want to become better, so please help me and disagree :)