A discussion is talking with the goal of finding the truth. The truth will often be already covered by one of the two opinions. In that case the one person is right and the other one is wrong. Often it turns out that neither has been right and the truth is yet to be discovered; often by discussion as a means of accomplishing this together.
So, the first point I make here is this one:
Don't believe people who tell you that all opinions are equally correct or that somehow everybody is right in his own way. This is wrong. In fact, if that were true we should stop having any discussion right now.
The second point I want to make is that there is exactly one way to have a discussion:
1) Finding common ground
2) Logical reasoning, based on the common ground
3) Determination of the one single element in the chain of predications that is not agreed on
4) Repeatition of the process for that isolated predication until either agreement or a fundamental disagreement is found.
2) Logical reasoning, based on the common ground
3) Determination of the one single element in the chain of predications that is not agreed on
4) Repeatition of the process for that isolated predication until either agreement or a fundamental disagreement is found.
The usual way to work this through is to allow one person to moderate the discussion and present his logical reasoning after a common ground has been found. This is often the step that doesn't work. If both persons try to moderate the discussion (often misunderstood or misused as dominating the discussion), chaos follows. This is especially true if both persons start at step (2), assuming incorrectly that the other one agrees on their "obviously true" assumptions.
As both people try to execute step (2) at the same time, the discussion becomes two people talking to themselves and not talking to each other. They are repeating their own opinions and reasonings, wondering why the other one doesn't understand. But the reason the other one doesn't understand, is that he doesn't listen, as he is busy reasoning himself.
As both persons find themselves un-understood, they keep focusing on the assumptions, that they assume are 'obviously' correct. This leads to the typical repetition of opinions in front of each other. Very boring to watch and even more boring to execute.
A good technique to avoid this is to force yourself to actually listen to your partner by repeating the quintessence of what he just said prior to every of your answers.
The intermediate goal of a discussion is to strip away all those things that you agree on, to find the one point you disagree on. Sometimes this point of disagreement is fundamental. Like for example: "I think humans are selfish" vs. "I think humans are altrusitic".
In such cases only research helps. If research isn't available, an agreement, of a sort, is still possible.
"We agree that if X was true, you were right. And we agree that if X were wrong, I were right".
At that point a discussion is finished. You would need additional information to continue.
Often, however, the process of finding the one point of fundamental disagreement makes one or both persons see where they were wrong. That would be the "happy end" of a discussion. You found the truth - together. Until a third person disagrees.
If you find yourself in the discussion with somebody who does not seem to know the process of discussion, there are two things you can do.
1) Play Socrates. Socrates has become famous for doing discussion by asking questions only. At first, his questions lead to a common ground. After that, the questions lead the discussion partner towards a logical inconsistency in his reasoning. Alternatively, Socrates himself finds out that he actually agrees himself and is convinced.
2) Ask questions until a common ground is found. Start presenting you logical reasoning, forcing it upon the other. Obviously, this is not as elegant as (1) and doesn't work with people who have a low self-confidence.
Trolls:
Lastly let me warn you about trolls. Both deliberate and undeliberate ones. They will sabotage the finding of common ground and logical reasoning by distracting you.
You see, you were just about having the troll to agree on something that could be used as common ground. The troll is about to have to say "I agree", because denying what you just said would be utterly ridiculous even for him. Often he unconsciously interprets this as weakness and instead of agreeing, he starts talking about another aspect of the subject that he knows you disagree with. At that point there is not much you can do. If you give in, you will forever be running circles.
A second way to sabotage a discussion is to put something highly controversial, but unrelated into an answer. If you make the mistake of going into that, you are changing subject yourself. Bottom line is that there is no way to discuss with somebody who doesn't want to find the truth and considers everything, that doesn't help him convince you, unhelpful.
A third way is to have lengthy monologues. I should know, because I tend to do this myself. But it is a mistake. Focus on what you really want to say at a point in time and try to keep it as short as possible. Always allow the other person to interrupt you. He might want to tell you that your last point is exactly what he disagrees on!! If he interrupts you too often and without reason, tell him.
Do not fill your talking time by repeating your opinion or parts of it over and over or by covering several predications with one overarching jump. You are interested in finding out on what predication, exactly, the two of you disagree!
A rather nice discussion between two people with fundamentally different opinions on a very complex topic can be found here. Unfortunately, they don't have enough time to really follow through. Notice, how Jon Steward tries to find common ground already with his very first sentence.