While coding skills are very important, being able to work with others is equally important. It is a rare coder who works totally alone and so it's important to build up teamwork skills.
Oftentimes, it is assumed that group dynamics happen naturally and it is not possible to change them. Or, someone can list off bests-practices but doesn't know how to implement them.
Here, you will learn one way to approach group work and apply it to your upcoming project.
With some practice and effort you can build your own team culture that you feel proud to be a part of.
By the end of this lesson, you should be able to:
- Explain the importance of setting group norms.
- Be able to work with at least one other person to establish group norms before starting a project.
Group work takes a lot of consideration, effort and planning in order to be truly successful.
Let's start with a list of qualities that successful teams have:
- Shared vision and clear direction
- Trust and mutual respect
- Team-first mentality
- Diversity
- Open and clear communication
- Continuous learning
- Effective work practices
The goal for today will be to start building a team that has the above qualities.
Together, you will share your project ideas, give feedback and start putting together all of the planning your capstone needs in order to be successful.
In order to build trust and mutual respect, you must spend some time getting to know each other. Being kind, open and actively listening helps begin to foster the kind of relationships that have trust and mutual respect. Practice kindness and active listening with your team daily.
Disagreement does not mean dislike or disrespect. Taking the time to talk through things and compromise will help your team work through some of its toughest challenges.
Avoid micromanagement and be mentally flexible. Micromanagement is usually a symptom of insecurity/lack of trust. Perhaps your teammate was assigned a task that you would have approached differently. Rather than trying to redo their work in the way you would have done it, talk it through, learn from each other and accept that there are many ways to solve things. If there are things to fix/work on, build from the work that is there already.
Though you may struggle to find things in common or things to talk about with your new group, all of you want the same outcome - a great project. Remembering that that is the priority of your time together can help you focus and make effective decisions.
Everyone brings different experiences and skills into this project. Make sure to make space in your project for people to both lead with their strongest traits but also get opportunities to improve on the things they struggle with by collaborating.
When you are empowered by trust and mutual respect, have a clear vision and are aligned on goals positive and candid conversations can happen and will help resolve and improve things as your project progresses.
Be sure to find your voice on your team.
Stay open-minded, accept feedback and constructive criticism, apply what you are learning and be kind and thoughtful as you give feedback to others.
In the upcoming lessons we will go into greater depth about how to work effectively as a software engineering team. Each team and their work will likely have somewhat different best practices based on the type of work and goals they have.
The purpose of today is to create a positive work culture by planning your group work and having open communication.
Read and discuss Working in Groups
What are your takeaways?
Group norms are a set of rules that shape team member's interactions. These are clear agreed-upon behavior, communication, and understanding expectations of each other. This will also help you assign tasks when building your app.
Use this worksheet to help establish your team norms.
Here is a summary, in case the link becomes broken in the future
- Everyone thinks of the worst team they have been on (work, volunteer, sports team, school project).
- Everyone takes a moment to jot some notes about why that experience was so terrible.
- Ask everyone to share.
- Everyone now thinks of the best team experience.
- Everyone takes a moment to jot some notes about why that experience was so great.
- Ask everyone to share.
- Now ask what things make a good work experience versus a bad one.
- Someone should volunteer to be a note taker - the note taker should open a google doc (or similar) and screen share so that everyone can see the list and be thoughtful about adding to it or adjusting it.
- Ask team members to suggest behaviors and norms that would contribute to the team's success.
- Discuss which ones can the team support and adhere to.
- Flag any concerns or challenges (see below).
- Discuss how to deal with a team member who does not follow norms (see below).
- Someone else should volunteer to take the list and create a
must do
list - this list should be shared with your whole team and your instructor.
This are the norms your teams should now follow for the project.
All of you are in this program with different external obligations. One of you may keep hours of 4am to 6:30pm and your partner may start their day at 9am and end at 12am, if class is from 10am - 6pm and you are expected to work on the project outside of class, how would you solve this so that both people can communicate well and contribute equally?
It's really important to set norms around this. How do you handle it? How do you make it work? Think of the best ways your group can deal with this.
How do you want communication to happen? Over slack? Over text message? What are "normal work hours"? What are the hours that if someone reaches out they should not expect an immediate answer because it is "after hours". How quickly do you expect everyone to respond during "normal work hours"? If someone has another obligation (or takes a lunch break etc.) that will make them unavailable during "normal work hours" - how should they let the team know?
How does everyone work best? Do you all want to be in the same zoom room together? Would you rather work independently off zoom and do check-ins?
Understanding that everyone is expected to work on the front-end and back-end of the app at some point during the project and everyone must contribute to the code base and project in a significant way, how do you want to split up the work? Who works on what?
There are many ways to handle conflicts, but here are some dos and don'ts to get you started as you make your own team norms.
- Assume the worst. If someone is unexpectedly offline, first ask if they are OK. Take time to understand the situation first.
- Go over everyone's head. If you have a problem with someone your first step should not be to go to the instructor, start with your team first.
- Assume that people know what is bothering you. Be sure to let people know and follow up if the issue is not resolved or comes up again.
- Assume it will get better without talking about it.
- Disappear/stop communicating. If you are not comfortable talking in person, try zoom, if not zoom, try the phone, if not the phone, try Slack, if not Slack, try email.
-
Keep communication open.
- Always talk to the person you are having an issue with.
- If you are not sure what to do, talk it through with a friend or a peer first, privately, use the session to develop a plan. Do not escalate unless you have already made attempts at fixing the situation yourself.
- Always talk to the person you are having an issue with.
-
Try to resolve the conflict yourself or within the team first.
-
Try to be empathetic.
-
Listen before giving advice.
-
Reach out to an instructor if you can't resolve something, on your own or if the issue is bigger than what your group can solve (e.g., someone has a family emergency that will take them away from a project for a while).
Remember, your instructor wants to help you succeed and is here to support you. It's not about getting people in trouble, it's about learning to work on a team in a professional way.
- Read and discuss Working in Groups
- Create group norms (a document you will share with your team and instructor)
- Learned everyone's work hours
- Discuss best methods of communication
- Determine initial work cadence (can be changed later)