Software Engineering: Working As A Team

This page was adapted from "Teamwork Guide for CMPS115: Software Engineering . It was created by Edward Parrish (now a faculty member at Cabrillo College) and is currently used in Dr. Linda Werner's CMPS 115 Software Methodology course at UC Santa Cruz. It is used with permission of Edward Parrish and Linda Werner.

What is a team?

A team is a small group of people with complimentary skills who are committed to a common purpose for which they hold themselves and each other accountable.

Small Team Size

Teams usually work best with a small group of people. Smaller numbers make team administrative tasks easier, such as deciding where and when to meet. Meetings are generally shorter when fewer people need to speak. Small size also makes it easier to develop a common purpose with mutual goals and mutual accountability, which is so important for good teamwork. In addition, a small team of people avoids the "herd" mentality of large teams. In a large team people tend to go along with popular opinion rather than thinking for themselves. In general, the larger the team of people, the harder it is for the team to work well together.

Complimentary Skills

Complimentary skills are also important for a team. Necessary skills include: technical, problem-solving, decision-making, and interpersonal skills. Technical skills are needed to provide the expertise to meet the goals of the team. The other skills are necessary for the team to work effectively together.

Commitment

High performance teams must make a strong commitment to a common purpose and goals. A common, meaningful purpose sets the tone and aspirations of the team. The team's purpose must then be translated into specific, measurable goals, often called milestones. The milestones help to focus the team and make it more productive. Meeting milestones also gives the team small victories that are crucial to its commitment and morale. This combination of purpose and goals is important for the success of the team.

Common Approach

The members of a team must also make a commitment to a common approach. What are the standards of behavior? How will the team go about its tasks? Who will perform which task? How will schedules be assigned and how are decisions made? These are the nuts-and-bolts issues that need to be agreed upon by all members of the team.

Accountability

The members of the team must also share a sense of mutual accountability. In other words, they must hold themselves and each other answerable for meeting the team's goals. All of them must know what they are responsible for both individually and as a team.

Why have teams?

Teams are commonplace in industry today. Most companies organize their employees by function, such as engineering, finance, and marketing. Even within a function such as engineering, people are usually organized into smaller groups by their specialties. Companies then use teams when people from different groups are needed to meet a goal, such as developing a new product. Some of the reasons for organizing a group of people as a team, instead of a committee or other group structure, are discussed below.

Enhanced Cooperation and Coordination

With tasks that need cooperation and coordination, teams can perform better than individuals or functional groups. Cross-functional teams reduce the number of hand-offs and the amount of coordination needed between the functions. Because more of the expertise to do the job belongs to the team, there is less need to pass work on to another group. This improved coordination can provide strategic advantages to companies such as reduced time to market.

Working Together

Teamwork is more than getting along or being helpful. In a real team the members work toward a common goal. By working together, team members help each other to accomplish tasks. A team working together usually gets more results in less time than other types of organizations.

Organizational Flexibility

An organization can be more flexible by using teams. Management can put a team together to accomplish a specific task and then can disband it. Or, a team can be kept together more or less permanently to address an ongoing need -- such as running an operation or developing a series of new products.

Organizational Parity

Teams allow each member to have an equal say in decisions and discussions. By considering all ideas and proposals equally, teams can produce more creative and optimum results.

Job Satisfaction

Another advantage of teams is that people on teams generally derive more satisfaction from their jobs. When team members work together to overcome obstacles that stand in their way, they derive satisfaction not only from achieving the goal, but also from the trust and confidence they build in other team members. The enjoyment is heightened even further because they can see that they are taking part in something larger than what they can accomplish by themselves.

Common Phases of Team Development

Teams often go through steps or phases during their development. There are many ways to describe these phases, but perhaps the best known are: forming, storming, norming, and performing. These terms were developed by Bruce Tuckman in 1965 (see reference below) to describe how the members of small teams tend to act as the team develops. Each phase is described below.

Forming

This phase occurs when a team first comes together. Sometimes this phase is called the "honeymoon" period because everyone is nice to each other. Team members are usually cautious and polite with each other, while exploring their new circumstances. A good way to expedite this phase is to have "icebreaker" activities that allow team members to understand each member's capabilities and motivations.

Storming

During this phase, team members begin challenging and disagreeing with one another. They often jockey for position and use their expertise as weapons. Teams can get stuck in this phase and as a result can fail. They key to moving quickly through this phase is explicitly defining the roles and responsibilities of each team member.

Norming

In this phase, team members start offering ideas and suggestions. They reveal their preferences for performing tasks. Standards of behavior and team processes are defined. By defining team processes, one can move on to performing.

Performing

This phase is the ideal phase for a team. They work hard together. Team members anticipate problems, changes in direction and each other's moves. The focus of the team is on accomplishing their goals and not on blaming each other.

Optimal Team-Development Steps

While these team-development steps are well known, there is no need for a team to have a storming phase. Even though storming is a common part of team development, it is not a desirable or productive time. Your team can bypass the storming phase by Clarifying the team's mission, Defining goals and milestones, Establishing roles and responsibilities, and Creating processes for getting the work done. These steps are described in the following sections.

Clarifying the Mission

The mission is the purpose of the team and the reason it exists. In this course, the team's mission is to produce a product that satisfies the Project Charter using the Agile Software Engineering process. Understanding the mission begins with understanding the product the team will produce. The team will develop a detailed description of the product for the mission by creating the Project Charter, Product Backlog, and Design Document.

Defining Goals and Milestones

A goal is the end toward which effort is directed and milestones are significant points in development. Project milestones help to define a project in greater detail and are a useful way to track team progress. In this course, the team's goal is to produce the product that they specify in the Project Charter. Project milestones are the three Sprint reviews.

Establishing Roles and Responsibilities

Defining Roles and Responsibilities

A role is a function performed for a position in an organization. Roles are present whether we are aware of them or not. It is better to choose and assign the roles on a team rather than just to let them happen. Each role has a set of responsibilities associated with it. Responsibility means being answerable for performing the duties and tasks.

The roles of team members, with the associated responsibilities for those roles, are dependent upon the project and the expertise of each team member.

For this course, define the roles of each team member according to their interests and skills. For instance, one person may be responsible for the Graphical User Interface, another for a database, another for a group of algorithms, and so forth.

As you can see, the division of the roles depends on the project, the skills of each team member, and an understanding of how to fairly divide the work of developing the product. Thus it is a good idea to discuss the roles of each team member after selecting the product and while deciding on the major sub-sections of the design. Then each team member will have the responsibility for the design and implementation of a sub-section of the product.

Other Team Member Responsibilities

There are some responsibilities that are common to all team members. These responsibilities exist because the team needs to work together to accomplish its goals. These responsibilities are based on the need for cooperation. As a memory aid, the responsibilities for good cooperation have been organized under the headings of Follow through, Assertiveness, Communication, Timeliness, and Spirit (FACTS). Team members have a responsibility to enhance cooperation on their team using these FACTS.

Follow through

When team members cooperate, they follow through on commitments. With this follow-through, you show an awareness that as part of a team, everything you do affects someone else. You also know that if you forget to do something, you become a weak link -- an obstacle in the work process. Lack of follow-through impedes the performance of others and reduces trust. It is hard to trust people who do not do what they say they will do.

Other team members will interpret lack of follow-through as a lack of respect for others. This seems obvious since it is tiresome to "remind" college students that something is due, and annoying to sit through meetings where people offer excuses about why things did not get done. When individuals do not do what they say, it is demoralizing and leads to a contagious lack of effort. On the other hand, when team members keep commitments, they inspire their colleagues to do the same.

Assertiveness

A team member has a responsibility to speak frankly and openly when there is a difference of opinion. A team is more likely to succeed when members are willing to risk conflict with other team members and to stand their ground when required. This helps the team to avoid making bad decisions and then implementing them because everyone went along just to be part of the team.

At the same time, you must not become so entrenched in your position that you ignore the team's purpose and goals. Members should show flexibility, an ability to meet halfway, and a willingness to work for the common good. Team members should negotiate their differences so that both parties can win. In highly cooperative teams, there are few turf wars, little competitiveness, and an ability to forgive and forget.

Communication

For a team to reach its full potential, team members must be willing to say what they think, ask for help, share new or unpopular ideas, give the status of their activities, and risk admitting mistakes. This can only happen in a setting where team members show concern for one another, trust one another, and look for answers together. When communication is friendly, open and positive, teams are more productive and team members feel more satisfied.

Friendly interaction happens when people get to know each other and respect each other. Such behaviors provide an atmosphere for risk-taking and cooperation. When team members ask each other about their lives beyond this project, and on the whole make each other feel welcome, they are creating conditions for good team communication.

Open, honest communication is key to a team's success. Nothing reduces trust faster than when members say one thing within the team and something else outside of the team. When people are confident enough to say what they need to say directly to the right people, and to refrain from talking behind each other's back, they enhance trust.

Timeliness

Attention to timeliness, which is doing things on time (or even before they are due), is also a responsibility of team members. When members are cooperating well, they respect each other's time and schedules. People show up on time for meetings. Meetings begin and end on time. They return emails as promised. There is a sense of urgency about team tasks, reflecting a willingness to make the team's actions a top priority.

Members share important information promptly and succinctly. People ask each other for comments on their plans and ideas often, but not so often that it blocks the workflow. Team members tend to cluster their questions and comments so that they share them all at once instead of repeatedly interrupting each other's workday.

People know each other's calendars and schedule important meetings (like the Daily Scrum Meeting) so that everyone can attend. You might also hear people thanking each other for their time and asking, "Is this a good time?" It is hard not to cooperate with those who respect your time.

Spirit

Being on a team is a bit like being part of a family. You can't have your way all of the time. To make the team perform, all members must have a tolerant spirit.

When spirit is high in a team, you can sense the positive attitude. Members value individual differences, speak kindly about individual talents, offer compliments on individual contributions -- but also form a team identity. Members develop mutual trust and talk openly to each other.

When there is good team spirit, members make decisions by consensus, not by voting. Voting divides a team into winners and losers, whereas consensus encourages each team member to cooperate. Team members must listen to each point of view, modify his or her own stand to fit the will of the team, and support the decision that seems best for the team.

When team spirit is high, members recognize individual successes such as solving a vexing problem, or team successes such as reaching a project milestone. The congratulations are always sincere and the message is very clear: "We celebrate each other's milestones and successes because we are all on the same team. A win for one is a win for all." Such camaraderie is a good sign that spirit within the team is high.

The Team Leader

Why does a team need a leader? Someone needs to look at the big picture: the project as a whole. This allows the other team members to focus on their parts of the project knowing that someone is thinking about how everything fits together.

The team may choose one person as the team leader, and give her or him a smaller workload as compensation. Optionally, the team may decide to rotate leadership during the project and allow everyone to gain some experience in the team leader's role. If your team decides to rotate leadership, then the Sprint boundaries are a good place to change leadership. The current leader has the responsibility to guide the team in reaching their next milestone.

Team Leader's Role

Team leaders are not like "traditional" bosses. The team does not work for the team leader; the team leader works for the team. The role of the team leader is to lead the people and manage the resources of the team to meet the team's goals. Leadership is the ability to get people to do what needs to be done in such a way that they like it.

Team leader skills can be learned over time. The most important thing that the team leader can do is to believe in the team's purpose and understand the capabilities of the team's members. The stronger this belief and understanding, the more easily a team leader can overcome a lack of skills or training.

No matter how much you know or how skilled you are, it's an obvious fact that people will respond better to your leadership if they like you than if they don't like you. The ability to make people like you is one of the most valuable talents you can possibly develop. It makes all your other talents more productive.

So what makes people like you? Good humor, kindness, and appreciation of people's interests and feelings. Understanding that they are just as important to themselves as you are to yourself. Fairness in considering their interests as well as your own. Complete lack of snobbishness toward team members.

Team Leader's Responsibilities

The main responsibilities of the team leader are as follows:

Keep the purpose, goals and process meaningful

A team leader should help team members clarify and commit to their purpose, goals, and processes. At the same time, it's important that the team leader's suggestions not come across as mandates. Sometimes the best approach is to sit quietly and let the other team members solve the problems.

Monitor the performance of the team

The team leader must monitor actual performance of the team in meeting its goals. When necessary, the team leader must force the team to make decisions and change strategies to ensure their success.

Build commitment and confidence in the team members

Intimidation might work in some situations, but it will kill enthusiasm in a team. Team leaders need to focus on positive reinforcement. When a negative event must occur to ensure the success of a team goal, such as moving tasks from one member to someone better suited, the leader must approach the situation with tact and understanding to prevent demoralization of team members.

Manage relations with outsiders

The leader must have the courage to stand up for the team and to take action to remove obstacles. This includes obtaining resources for the team. The leader must be able to communicate the team's goals and act on behalf of the team to anyone (such as the Project Coordinator) who can help the team or who might get in the way.

Create opportunities for team members

Good leaders don't keep all the good jobs for themselves, nor do they take all the credit. Decisions should be made to help the team's performance, not the leader's ego.

Do real work

Every team member must do roughly equal amounts of work and that includes the team leader. Often times the leader must set an example by volunteering to do jobs that no one else wants to do.

Creating Processes

For a team to work efficiently, it needs a standard way of operating. By defining processes, team members know how to accomplish team tasks and they spend more time working on problems that contribute to the goal of producing the team's product. Some of the processes that a team needs to agree upon are as follows:

Standards of behavior: Set some clear rules for behavior. These rules should promote focus, openness, trust, and commitment. Following these rules can prevent conflicts from other members from getting in the way of team tasks. They can also help people keep focused on the real work of the team, which is finding solutions to problems. Team members should not argue with each other or complain about the project.

Team communication: How will you keep each other informed of progress? When does the team plan to have the Daily Scrum Meeting and when are other communication methods, like email or texting, appropriate? These questions and more need answering by the team.

Making decisions: What decisions can individuals make and what decisions must the team make? Will the team decide actions by voting or consensus? The best approach is to make decisions by consensus, not by voting. Voting divides a team into winners and losers, whereas consensus encourages each team member to cooperate. The team needs to explicitly decide how it will make decisions.

These are basic processes common to most teams. Other processes depend upon the team and the project. Develop these processes as the need arises to improve the efficiency of the team.

Applicability to CS 30700

CS 30700 uses Peer Evaluations to measure team member contributions. With these evaluations, you can reward particularly good team member performances or penalize particularly bad ones. But, our goal is that everyone will contribute strongly to your project and that no one will need to be penalized. To that end:

  • Make sure that you know exactly what is expected of you. You should know exactly what you should do in each Sprint, maybe before the end of the Sprint if someone else is depending on your work to get theirs done.

  • Everyone should attend every Daily Scrum meeting and every Sprint Review.

  • Make sure that your teammates know exactly what you have done and are doing. If you are silent about your contributions, they may think you are not being as productive as you are.

  • Explain any problems you have run into and ask for help. Don't wait until too late and then drop the bomb that you cannot get your part done on time.

  • Talk to team members in the Daily Scrum meeting. Find out why their work is not getting done. Re-organize if someone is unfairly overloaded. Help other team members if you are ahead of schedule.

  • If someone is chronically underperforming, don't wait to penalize them in Peer Evaluations. Fix it now!

  • The Team Leader should talk to poor performers. Try to fix it within the team. If that does not turn things around, ask the Project Coordinator for help.

    References and Further Information

    Tuckman, Bruce W. Developmental Sequence in Small Groups. Psychological Bulletin. 1965. 63 (6): p. 384-399

    Scholtes, Peter R. The TEAM Handbook. Joiner Associates Inc. 1988

    Katzenbach, Jon R. and Smith, Douglas K. The Wisdom of Teams: Creating the High-Performance Organization. 1993


    Copyright 2015 by Edward L. Parrish