CS 246 - Software Design and Development

Communication and Conflict Resolution

One of the leading causes of failure in relationships is a failure to communicate well, especially when differences of opinion arise. This happens between friends, workmates, and family. So knowing how to communicate well and how to deal with conflict is important.

Listed below are several resources for understanding how to communicate and deal with conflict. The first group is a set of practical videos; the second is a set of conference talks; and the third is a set of more psychologically-based articles.

In addition, I've given some advice specific to this class and the team project. If, after learning and using the principles taught here, your team still has a communication problem that you feel like you just can't resolve, please feel free to use me as a mediator. However, resolving a conflict within your team, without outside help, is always better for the team in the long run.

First, Some Perspective

Here is a humorous example of how not to handle conflict.

Videos

Next, I'd recommend watching the following videos. Some of them are serious, some are humorous, but they all deal with different aspects of communication and conflict resolution.

It's not about the nail.
Conflict Resolution - Animated
Restorative practices to resolve conflict

Talks

As with all things, Gospel principles can help with communication and conflict:

Science & Psychology

Here's what Science has to add:

Specific Principles for This Class

There are three basic principles I'd like you to keep in mind when it comes to conflict. I'll list them here, then explain each of them in more detail.

  1. Communicate early and often.

  2. Recognize that people are more important than projects.

  3. Seek to understand the reason behind the conflict.

  4. Be humble and willing to compromise.

Communicate early and often.

Let's say you're having trouble with a task your project manager asked you to complete. After a few days, it's clear you're not making progress. There are two ways to handle this:

1. Say nothing, keep working on it alone and in silence because you don't want to disappoint anyone. When the project manager asks how things are going, tell them "fine". Eventually, the deadline will pass, you'll feel guilty, angry, and resentful.

2. Prior to the deadline, share the difficulties you're having with your teammates and let them know you're concerned you might not complete it by the deadline. Depending on the nature of the task and the problems, your teammates might have suggestions for help, or your team might decide that task isn't critical enough to spend more time on, so you can put it aside and work on something else.

Taking the first approach makes you think you're avoiding disappointing people, but really it is just setting you up for bigger disappointment later. Your teammates will begin to wonder if you can be trusted.

The second approach says that you are responsible enough that if your teammates ask you to do something, they can trust you'll either do it, or let them know when there is a problem.

Recognize that people are more important than projects.

Let me state unequivocally that if at the end of the semester your project is really cool, but everyone on your team hates everyone else, something has gone horribly wrong with your focus.

The team project is a means to an end. That end is learning how to work effectively as part of a software team.

This guideline is especially important if you are the project manager. If you are sacrificing your teammates' feelings of self-worth in the name of the project, things are not going to end well. People who feel like their needs are being listened to and met will work harder, be more open to constructive criticism, and will be willing to compromise more than those who feel they are being ignored or slighted.

Let's look at an example:

Your teammate wants to use text files to store the 
complex data for your project, but you have had a database 
class and know the value of using a relational database.

    You're thinking: "My idea is way better than yours."

One way to handle this situation would be to say something like:

Yeah, we could do it that way, but it's not a very good idea. Here's why...

While this might be the truth, the problem with this approach is that it shows a lack of interest in your teammate's idea, which can make them feel marginalized. Here's a better approach:

So, why would you like to do it that way?
...
Okay, that sounds reasonable. Let me tell you about what I think we would gain from using a database...so, what are your thoughts on that?

Note the key points of this approach: We first validate our teammate's idea, then we explain our position, then we help them feel empowered by soliciting their opinion.

You might be thinking, well sure, but what if they still don't want to use a database? If they're not in agreement, you discuss it further with everyone on your team and then the person with ownership of that area makes the final decision.

The key difference in these two approaches is that with the second one, everyone feels that they were able to express their ideas and be heard, even if their idea didn't carry the day.

Seek to understand the reason behind the conflict.

A major part of leadership is being able to look beyond the surface. Let's say we're in a situation where someone is perpetually late on their tasks, or doesn't complete them as expected. While our first instinct might be to assume that they are lazy, there are usually deeper reasons at play.

First, the person might not have understood clearly what was expected. Second, they might not feel comfortable with the task that was given them, but felt too timid to speak up about it at the time. Third, they might not have the skills necessary to complete the task. Finally, they might not feel in emotional investment in the task.

One of the easiest way to solve most of these problems is through simple follow-up. If someone is late on something, following up with them in a non-accusatory way can go a long way in helping to understand the root cause:

Hey Bob, I noticed you haven't finished that task we discussed at our last meeting. I was just wondering if you needed any help with it, or if anything about it wasn't clear.

Be humble and willing to compromise.

A lot of the discussion thus far has centered around what to do if you're the project manager. But in order for a team to work effectively, everyone on the team has to exercise some humility.

If you are in a disagreement with the project manager about something, and the person who has decision making authority has listened to everyone and made their decision, you need to be willing to let things go and move forward.

Being a good team member also means being open to feedback and criticism. It's difficult to do this, but it's important when you create something to be able to separate yourself from it. Just because someone doesn't like a certain aspect of your work doesn't mean that they don't like you.

One way you can help yourself to develop this skill is to actively seek feedback. Rather than pouring your heart and soul into something and turning it in just to have your soul crushed when you find out that it wasn't what everyone else was expecting, try to get a head start on things so that you can double-check with your teammates that you are approaching things the way everyone expects.

It's better to make that discovery after 1 day of working on something when there are 6 days before the deadline than after 6 days of working on something when there is only 1 day before the deadline.

Finally, if you're the one doing the evaluation of someone's work, remember that while we can always improve, sometimes it's better to just accept the fact that the work isn't perfect, and just move on. We can't always do this, because sometimes things need to be done in a very specific and correct way, but often there is more than one "right way" to do something. In other cases, if something isn't on the critical path to the project's success, it probably isn't worth criticising.

If you criticise every little thing, nobody is going to pay attention when you criticise the things that really matter.