introduction
Silicon Valley companies require programmers to effectively collaborate because studies show that teams tend to find better solutions to problems and report higher job satisfaction, leading to increased profitability. This policy is designed to encourage and require each of you to work to make your team healthy and vital.
Like in the world, work on team project(s) is essential in this course. Learning to work effectively in teams is as important as learning to engage in design, development, documentation, data gathering and analysis. You need to be a good teammate, both by being productive and by co-organizing teammates and working to create mutual accountability. It also key to develop personal connections with your teammates.
Julia Rozovsky, Analyst for Google People Operations, conducted a study examining more than 250 attributes of 180 active Google teams. She discovered five keys to success, in this order of significance [1]:
prescription
Working in teams is challenging. Co-direct each other. Each team member needs to take initiative and responsibility, for the team to be successful as a whole. Each team member needs to mutually work to keep all your teammates on the same page. One challenge is clear and direct communication. For some people it is hard to be directly critical. For others, it is hard to be directly appreciative. Both are valuable.
You will need to prioritize meeting and communicating with your team. Here are some techniques to keep your team in sync:
- Work to cultivate psychological safety among your team members.
- As a team, develop well-defined roles for each member. Revise the roles, as needed and desired, by consensus, at team meetings.
- Conduct regular meetings. All team members must participate. At each meeting, plan who is doing what and WHEN. Make this normal practice, from the start. Do not wait to see if problems arise!
- Use Agile team design methods to keep your team in sync (e.g., here and here).
- Maintain a team process log (in a Google Doc). WRITE your plan into your log. Be very specific.
At and beyond each team meeting, make regular entries about team members roles + responsibilities. Make notes in the log as to
- What has each teammate done since last meeting?
- How does this compare to their assigned deliverables?
- What issues (project and teamwork) does each teammate have?
- What deliverables will each teammate work on next? When is each deliverable is due?
- Proactively report your own status to your team, inside meetings and beyond.
- Make every effort to come to an consensus with your teammates on:
- Dividing the work, that is, deciding on who will do which part of the work by when.
- Make sure to create equitable division of labor, which involves everyone.
- The deadlines for individual members' parts should be at least 2 days prior to the deadline for the whole deliverable, to allow time for integration;
- How different parts work together
- This includes designing the APIs between software components.
- Take responsibility for a fair share of the work.
- Participate in team meetings.
- Make every effort to stick to the deadlines set in the meeting.
- Meet and work with your teammates in and beyond lab times, in order to get things done in time.
- Proactively communicate with teammates through email and/or other channels about your progress and issues.
- When you deliver work, make sure that your work is:
- Covered by necessary unit tests and test programs, to ensure correctness;
- Well-organized and documented, for others to use or build on;
- Supported in case of potential issues; that is, if a bug is found, you are responsible to fix it.
- When you use or build on a teammate's work:
- Read the accompanying instructions / documentations before working with it;
- Ask politely, but effectively for help when you have questions or problems;
- Provide test cases and detailed error messages if it does not work as expected, to support the author in effectively identifying and fixing problems.
- Confront your teammate(s), politely but firmly, even if you are not comfortable.
- Work to be constructive.
- Make every effort to communicate with your teammates to fix problems. In cases in which a team member is not participating in meetings and/or not performing his/her agreed upon assignments on time, unless s/he worked in good faith and simply took on more than could reasonably be accomplished:
- Send him/her EMAIL about what was expected and what happened.
- Make sure this is documented in your team log.
- If this happens more than once, cc the course teaching team on all such emails.
- Bring difficulties regarding team cooperation to the teaching team's attention as early as possible. We recommend you email us AND talk to the professor and TA in person.
- Keep communication transparent. Make SURE to include ALL members of your team in all emails about your team.
- More rapid team dissolutions may be granted in cases of toxic sexism or racism, in which any team members feel unsafe.
Keep in mind that you being successful depends on your team being successful.
In general, you are expected to work out any problems that may arise in your group. If you need to, come to office hours and discuss with the professor. If possible, organize for your whole team to come.
When teams choose to divide, all assets previously developed will be made fully available to all teammates, in whatever subgroups they choose to move forward with.
When situations arise, in which splitting apart may be considered, it becomes particularly important for all team members to participate in lab, in courses that have one.
In extreme cases, when one or more team members fail to perform their fair share of the work, and others are communicating effectively, the teaching team may intervene and facilitate the careful migration of one or more members to another team.
This may leave others on smaller teams or alone. THE INSTRUCTOR WILL ONLY PURSUE THIS COURSE OF ACTION IN CASES WHEN THERE IS A CLEAR RECORD OF TEAM PROCESS LOGS AND EMAILS DOCUMENTING A TEAM MEMBER'S FAILURES TO PRODUCE AND A GOOD EFFORT HAS BEEN MADE TO RESOLVE THE PROBLEM, THROUGH DIRECT COMMUNICATION.
the bottom line
Having a team to perform a project with is a privilege, which comes with responsibilities. Those who fail to meet these responsibilities may pose an undue burden on their teammates and end up performing projects alone. When a student fails to live up to responsibilities and teammates communicate effectively, that student may lose the privilege of working in a team.
references
- Rozovsky, Julia. The Five Keys to a Successful Google Team, Nov 2015.