Teamwork

Credit for this section belongs to Michael Liu and members of the Teamwork Skills Project. Their materials have been adapted for this course.

Assembly

In this section, we’ll discuss the importance of teamwork and how to build a successful team. Why are we learning this?

  • You will work in teams in this course, and likely in your future career.
  • You will experience conflict at some point.
  • You will have time management issues.
  • You will have team motivation challenges.

We want you to be prepared for these challenges and to have the tools to overcome them.

Success

Successful teams are built on trust, respect, and communication. We’ll discuss the steps and actions you can take to make your team successful.

What are the attributes of a successful team?

AttributeWhat does it mean?
Shared mission and goalsThe team clearly understands and agrees with the mission and goals of the project.
LeadershipThe team has a leader who can guide the team to success. Leadership tasks are performed reliably and consistently.
CommunicationThe team communicates effectively and efficiently. Team members share beliefs and expectations.
Decision makingThe team has an agreed-upon decision-making process.
Team cultureThe culture that you collectively build provides structure and support for team members.
Conflict managementThe team has a process for resolving conflicts, and addresses conflict productively; it avoids personal conflict.
Team meetingsMeetings are held regularly to facilitate communication and group decision making.
Self-managementIndividual team members complete individual tasks and assignments effectively.

Phases of team development

Teams don’t come together and become effective overnight. It takes time, and deliberate effort on the part of team members to build a successful team.

One common model of team development is Scott M. Graffius’ “Five Stages of Team Development”:

Five Stages of Team Development

  1. Forming: The team comes together and gets to know each other. This is a time of excitement and anticipation.
  2. Storming: The team starts to work together and differences in opinion may arise. This is a time of conflict and disagreement.
  3. Norming: The team starts to resolve their differences and work together more effectively. This is a time of cooperation and collaboration.
  4. Performing: The team is now working together effectively and achieving their goals. This is a time of high productivity and success.
  5. Adjourning: The team has completed their project and is ready to move on. This is a time of reflection and celebration.

Team meetings and team contracts can help the team move through these stages more quickly.

Step 1: Team contract

A team contract is a document that outlines the expectations and responsibilities of each team member. It is a tool that helps the team establish a shared understanding of the project and the roles of each team member.

The exact content is decided by the team, but the contract typically addresses:

  • Team leadership and communication
  • Team meeting expectations
  • Team & individual expectations
  • Managing team challenges and conflict
  • Other considerations

It may include contract clauses such as:

  • “All members will attend meetings or notify the team by email or phone in advance of anticipated absences.”
  • “All members will be fully engaged in team meetings and will not work on other assignments during the meeting.”
  • “All members will come to meetings prepared by reading the assigned material and/or watching assigned lecture videos ahead of time.”

See the Public Gitlab Repo > Templates for a sample team contract.

Step 2: Define team roles

It is useful to determine team roles at the start of a project, to help guide the team’s work. Roles can include:

  1. Team Lead: This is the project leader, NOT the technical leader for the project. This person is responsible for keeping the team on track and ensuring that the project is completed on time. They do this by ensusing that the requirements are defined accurately, that the team is tracking work properly, and that the team is meeting its goals for each deliverable. They often define the agenda for the team meeting, take minutes and ensure that the team is following the team contract.

  2. Technical Lead: This person is responsible for ensuring that the technical aspects of the project are completed correctly. They are responsible for ensuring that the team is following best practices, that the code is complete and follows course guidelines. In the way that the team lead helps manage the project, the techical leader helps manage the code contributions of the team. They often review code, help team members debug, and ensure that code is reviewed and merged properly.

  3. Design Lead: Teams (at least in this course) may have a Front-End Design Lead, and a Back-End Design Lead, each of which is responsible for the design and delivery of a core part of the product.

Note that these roles are NOT prescriptive. They are meant to guide the team in their work. The team should be flexible and adapt to the needs of the project. It’s normal for someone to wear multiple hats e.g. design lead for the front-end, but also handling packaging (because they may have done that before).

This means that, for example:

  • Team leads still write code. Managing the project is not a full-time job.
  • Technical leads can still take meeting minutes and write code. They are not just code reviewers.
  • Design leads can still help with other parts of the project outside of their immediate area of responsibility.

No single person is “the boss” of the project, and significant decisions should be made with the input of the entire team.

Step 3: Project planning

A project plan is a document that outlines the tasks, resources, and timeline for a project. It helps the team stay on track and meet deadlines. This can help with time management issues.

Info

As an Agile team, you are not expected to plan everything up-front. Instead, you will plan in short iterations, called sprints. This allows you to adjust your plan as you learn more about the project and the team’s capabilities.

However, it is still useful to have a high-level plan that outlines the project’s goals, timeline, and resources. This plan can be used to guide the team’s work and ensure that everyone is on the same page.

Identifying project components

Identifying what needs to be done should be, at least initially, a team effort. The team should brainstorm and list all the tasks that need to be completed.

This is a good time to use a whiteboard or a shared document to list all the tasks. This can be done in a team meeting or asynchronously.

Given an Agile framework, you should expect to review and update this list regularly.

This is an ongoing activity as you learn more about your project, and make design decisions.

Creating a Gantt chart

A Gantt chart should be included in your project proposal to summarize your project components.

This type of chart lists high-level objectives down the left side and dates across the top. Each task is represented by a bar that spans the dates when the task is planned to be completed.

https://www.productplan.com/glossary/gantt-chart/

See Mermaid for an example of how to create a Gantt chart in Markdown.

Communication

Communication is the key to success in any project! This includes communication between the customer, team members, and stakeholders.

Source: Unknown

In this course, you won’t be speaking directly with the customer, but you will be communicating with your team members and other stakeholders (like your instructor and TA). It’s important to communicate effectively and efficiently to ensure that everyone is on the same page and working towards the same goals.

Team meetings

Team meetings are an essential part of any project. They provide an opportunity for team members to discuss progress, share ideas, and make decisions. Communication is most effective when it’s both written and oral, so it’s important to have regular team meetings.

However, meetings are expensive in terms of time and resources. They are most effective when you have a clear goal for the meeting. For each meeting:

  • You should have an agenda: what are you going to discuss? This can be as simple as a set of bullet points for discussion, or as detailed as a design for a feature where you require input. A team lead will typically prepare and circulate the agenda ahead of time.
  • Everyone should come to the meeting prepared to discuss topics on the agenda. This means reading any required materials, watching lecture videos etc.
  • The project lead should keep the team organized around the agenda and ensure that the meeting stays on track. Make sure you accomplish what you intended to accomplish.
  • Someone should be designated to take notes during the meeting. These notes should be circulated to the team after the meeting.

Note

Definition of team roles and responsibilities, and the structure of your meetings, can be outlined in your team contract. See Teamwork > Team Assembly > Team Contracts for more information.

Here’s a sample of an agenda for a team meeting1:

1

This is probably a longer, more detailed meeting than you would typically have in this course!

Sample Agenda

Informal communication

It’s often helpful to have other ways to communicate with your team members. This can include:

  • Messaging applications e.g., Slack, Discord, Microsoft Teams.
  • Shared online spaces e.g., Google Docs, MS Teams channels.
  • Email. e.g., your UW email account.

These tools can be used to share information, ask questions, and discuss ideas. They can also be used to share files and other resources.

These tools are extremely helpful for day-to-day communication, but they should not replace regular team meetings. They are most effective when used in conjunction with regular meetings.

Tip

We recommend that you include a section on communication in your team contract, listing one primary method of communication (e.g., Slack). Anything more formal, like meeting minutes, should be shared in your project Wiki.

Conflict management

Conflict is a natural part of work on a team. It can arise from personality differences, differences in opinion, or differences in work style.

There are seven main sources of potential conflict on a team: t

  1. Work Scope: Differences of opinion on how the work should be done, how much should be done, or the appropriate level of quality.
  2. Resource Assignments: The particular individuals assigned to work on certain tasks, or the quantity of resources assigned to certain tasks.
  3. Schedule: The sequence in which the work should be completed, or about how long the work should take.
  4. Cost: How much the work should cost (n/a for this course).
  5. Priorities: People being assigned multiple conflicting tasks, or when various people need to use a limited resource at the same time.
  6. Organizational: Disagreement over the need for certain procedures, or ambiguous communication, or failure to make timely decisions.
  7. Stakeholder: Issues with certain stakeholders e.g. disagrement with the instructor.
  8. Personal: Differences in individual values and attitudes on the team.

Conflict can be beneficial to a team, as it can lead to better decision-making and more creative solutions. However, if not managed properly, it can also lead to stress and demotivation.

Note

Task-related conflict (1-7) can be beneficial, but personal conflict (8) is always detrimental to the team.

Always treat other team members respectfully and professionally, even if you disagree with their viewpoint. Never let personal conflict go unresolved; it will only get worse until you address it.

Handling conflict

There are five main approaches to handling conflict:

Approaches to handling conflict

  1. Avoiding or Withdrawing. Individuals in conflict retreat from the situation in order to avoid an actual or potential disagreement. This approach can cause the conflict to fester and then escalate at a later time.
  2. Competing or Forcing. In this approach, conflict is viewed as a win–lose situation in which the value placed on winning the conflict is higher than the value placed on the relationship between the individuals. This approach to handling conflict can result in resentment and deterioration of the work climate.
  3. Accommodating or Smoothing. This approach emphasizes finding areas of agreement within the conflict and minimizes addressing differences. Topics that may cause hurt feelings are not discussed. Although this approach may make a conflict situation livable, it does not resolve the issue.
  4. Compromising. Team members search for an intermediate position. The solution may not be the optimal one.
  5. Collaborating, Confronting, or Problem Solving. Team members confront the issue directly, with a constructive attitude, and look for a win–win outcome. They place high value on both the outcome and the relationship between the individuals. For this approach to work, it is necessary to have a healthy project environment.

In a particular conflict situation, you will tend to have a preference for one style over the others depending on the dynamic of the team and your personality.

By understanding the consequences and impact of each of the styles, we can make more informed and productive decisions about how to approach a conflict situation.

These strategies differ along two dimensions (how much it values the individual need vs. how much it values collective need):

  • Cooperation scale: value placed on maintaining relationships
  • Assertiveness scale: value placed on addressing individual goals or concerns

Conflict strategies

In a team environment, we recommend team-friendly stragies: accommodating, compromising or collaborating. This is in-part why we enforce regular team meetings, and decision-making by consensus; it helps ensure that everyone’s opinion is considered and that decisions are made in a way that is fair to everyone.

The end goal of a conflict resolution process is to explore different options and comes up with the best (or mutually acceptable) idea.

Important

Members should view conflicts within the organization as conflicts between allies, not opponents. The goal is for the team to win, not for one person to win over another.