ICS 125: Practical Teamwork
What is a good team?
- A good team
- Accomplishs stated goals (e.g., ships the product)
- Builds/maintains valuable professional relationships in and out of the team
- Enjoys working together, learns from each other, trusts each other
- Has complementary strengths to cover all needed areas
- A good team member
- Knows his/herself: strengths, weaknesses, professional philosophy
- Truely wants the team to succeed
- Follow the golden rule to proactively shape your team experience
- Is professionally courteous, respectful, and cooperative
- Cooperative can include being available when needed, and being flexible
- Understands how his/her goals fit the team goals
- Understands his/her role: what he/she needs to do, and why
- Knows what others are doing, and why
- Is honest and forthcoming with teammates
Common teamwork breakdowns to avoid
- Someone flakes out and lets the team down
- Be honest about your availability up front during planning
- Make sure that you understand what you have to do, don't get overwhelmed
- Make responsibilities and progress visible to everyone
- One person does all the work
- Make sure they realize that the project is too big for one person, others need to be kept in the loop so that they can do their parts
- That person should not be "stealing" other people's tasks
- The whole team is clueless about some aspect
- Assign someone to master that aspect / mitigate that risk
- Work together in a study group to all learn
- Team procrastination, or unwanted job
- Make a plan and stick to it, you have no choice
- A little friendly competition for motivation
- Every person does their share of chores, that's part of being professional
- Hard to schedule team meetings
- Use more email and issue tracking
- Meet during discussion section time slot
- Big misunderstandings
- Slow down and make sure everyone agrees on the basics
- Listen and repeat
- Write things down as tasks or documents
- Don't just meet and then work separately, try some pair programming
- Design and code review meetings
- Long critical path
- Consider parallel teamwork when you plan and design the system
- Realize when others are waiting for you, don't block their work
- Keep things simple so that other team members dont face a huge learning curve
How to improve teamwork
- Practice, experience, thoughfulness, personal reflection
- Use tools that help keep others in the loop, track responsibiilties and progress
- Capture team discussions in clear documents, or at least a message archive
- Design and code review meetings
- Consider parallelism in planning and design
- Use coding standards to take certain stylistic issues off the table
- Use external standards documents as part of requirements: precise, pre-agreed upon, unchanging
sample use case templatesample test plan templateexample project plan template