Sometimes, maybe during a code review or a design meeting arguments can get heated and it's easy to insult someone unintentionally. These things can in turn create a tense atmosphere in the workplace or in a team which will sooner or later harm the co-operation between colleagues.

My question is: what are some good methods for resolving these tensions? What can you do - on a personal level - to help these issues?

Competing is assertive and uncooperative—an individual pursues
his own concerns at the other person's
expense. This is a power-oriented mode
in which you use whatever power seems
appropriate to win your own
position—your ability to argue, your
rank, or economic sanctions. Competing
means "standing up for your rights,"
defending a position which you believe
is correct, or simply trying to win.

Accommodating is unassertive and cooperative—the complete opposite of
competing. When accommodating, the
individual neglects his own concerns
to satisfy the concerns of the other
person; there is an element of
self-sacrifice in this mode.
Accommodating might take the form of
selfless generosity or charity,
obeying another person's order when
you would prefer not to, or yielding
to another's point of view.

Avoiding is unassertive and uncooperative—the person neither
pursues his own concerns nor those of
the other individual. Thus he does not
deal with the conflict. Avoiding might
take the form of diplomatically
sidestepping an issue, postponing an
issue until a better time, or simply
withdrawing from a threatening
situation.

Collaborating is both assertive and cooperative—the complete opposite
of avoiding. Collaborating involves an
attempt to work with others to find
some solution that fully satisfies
their concerns. It means digging into
an issue to pinpoint the underlying
needs and wants of the two
individuals. Collaborating between two
persons might take the form of
exploring a disagreement to learn from
each other's insights or trying to
find a creative solution to an
interpersonal problem.

Compromising is moderate in both assertiveness and cooperativeness. The
objective is to find some expedient,
mutually acceptable solution that
partially satisfies both parties. It
falls intermediate between competing
and accommodating. Compromising gives
up more than competing but less than
accommodating. Likewise, it addresses
an issue more directly than avoiding,
but does not explore it in as much
depth as collaborating. In some
situations, compromising might mean
splitting the difference between the
two positions, exchanging concessions,
or seeking a quick middle-ground
solution.

I take it Thomas-Kilmann's option 4 is the best one?
–
Robert HarveyNov 25 '10 at 18:01

Not necessarily, as different people may prefer different styles. While collaborating may be a good starting point, there are many times where that isn't going to bring about a resolution,e.g. some people may have strong opinions about a software company that cannot be changed easily and thus collaborating on what is the best software company may be better resolved through a competition as there could be various Apple, Google, and Microsoft fan boys that will disagree rather strongly with each other.
–
JB KingNov 25 '10 at 20:02

Reading about human relations is an excellent suggestion, and that should be done. But for those people who think they are already perfect...

Expectations should be clearly set by the Team Leader or Architect about the manner and decorum in which meetings must be undertaken. While open discussion must always be encouraged, it is also important that the discourse remain civil. Things such as Ad-Homineum attacks should be expressely forbidden, and strictly enforced.

As long as all of the team members are reasonable people, this works well. In fact, teams like that seldom need many rules. This conversation is not about them; this conversation is about the teams having one or two difficult personalities. We've all worked on those teams, and my guess is we've all found a way to get along (or the problem personality finds another place to work).

However, if you work with a team where everyone is reasonable, but fights still break out during meetings, it might be time to reexamine your assumptions about the meeting process, or explore other reasons why people might be discontented (unrealistic workload expectations, for example).

It is never easy to insult someone unintentionally, unless you are in a strange country with a very different culture. If both of you are working at the same place, on the same project, I'm quite sure that both of you also speak the same language. This means, both of you are likely acculturated to the same beat. Note, I did say likely.

On a personal level, you can think before speaking.

When you realize that you've made a mistake (we all make them), make every attempt to make reparation. The words "I was wrong" go a long way in having an apology accepted. This is because the person you offended likely thinks that you are unreasonable, so .. well .. make every attempt to convince them that you are reasonable :)

Sometimes this has to be a passive process, it depends on the other person. You might consider asking them for advice on something, including them in some activity, or otherwise saying "It wasn't personal".

If I meet you and start conversing with you, I'm placing an implicit trust in you that you won't do something bad to me. Just do your best to demonstrate the fact that you are a good natured person, who is flawed just like everyone else.

Separate your identity from your idea. If you focus your heated and passionate exchanges on the relative merits of the ideas at hand, and are able to commit to supporting the best idea - whether it was yours or not - you'll win every time. Sometimes the idea will be yours, sometimes it will be someone else's, but arguments about anything only get personal when you make them about the people who hold the ideas instead of the ideas themselves.

But to 1000x reinforce what's already been said - apologize when you screw up. It doesn't show that you're weak, it shows that you're pretty freakin' strong.

Just sensitize everyone to the fact that heated discussions are a given in review meetings and they can probably share a cup of coffee after that to smoothen things up.

Having said that - heated debates about what is the best approach is fine. People should also realize very well that personal attacks and insults have no place in a professional environment. This depends on the culture built into the organization and it starts with the senior most/best programmers you have got.

I personally try to ensure that the culture promotes respect towards one another and treats mistakes as just that.. mistakes. There is no place for jerks in a good team, however strong that person is technically.

So once everyone is very very clear that all comments are for the work at hand and is never attached personally, I don't think there will be much of a problem.

I've always found that getting to know my co-workers outside of work can be useful. Assuming you're a decent person, it will be easier for them to see you as criticizing the idea and not the person.

That's another idea that I don't think I've noticed in the other answers. Make it obvious that you're speaking of the idea proposed, not the person. Also, make it clear that just because you don't agree with the idea, doesn't mean that you don't value their opinion.