Together is the way in team collaboration.
I was having a virtual coffee yesterday when the other person said something which resonated with me. He said something and I realised why teaching team collaboration feels like an uphill struggle most of the time. I knew why it is so hard to get students to try these practices.
Our education systems teach students to be independent learners and they are assessed on individual work. Students learn all of the skills they need to be solo workers in school. We need to rewire their habits to teach them team collaboration.
The old rules won’t help you in the new territory
I touch on this in a new part of a lecture pointing out why students regular habits won’t help them achieve their goals in software engineering team projects. I point out the new habits they need instead. This builds on the collaboration rules, which I’ve mentioned before.
Preparing the work
Instead of planning everything up front, teach them to use a roadmap of highlights, or milestones. Just plan enough ahead to see the next time box or two into the future.
A team might like to have a leader delegate work. This is a poor choice. Let the team decide, because one person doesn’t know enough.
Instead of scattering the work to team members to be gathered later, we should teach students to use continuous integration so issues are caught early.
Estimates feel good, but provide a false sense of security. Have your students skip them, and just slice the work thinly instead. This lets the team learn more quickly and apply what they learn in the process.
Doing the work
While branches for each team member’s work, might seem ideal. Avoid this trap. Teach them to have everyone should push to the same branch so that work is frequently integrated.
Instead of using code reviews to hopefully catch issues, have them integrate review with coding with pair programming, or mobbing instead. This will mean the code is reviewed at the time, and enables more people to have immediate input on the work. It also spreads knowledge within the team.
Blaming someone for work not done might feel good at the moment, but it resolves nothing. The work still needs to be done. A better approach is to make the team responsible by supporting each other, and making it easy to ask for help.
Skipping tests does not save time. Teach students to add tests from the start to ensure they don’t break their work with later additions. Tests run much faster, and do you really want to keep entering username/password to check the system?
Teams shouldn’t expect everyone on the team to know the same stuff, students should acknowledge that everyone took a separate path to the course. They need to support each other to share their knowledge and teach each other what they need to know in collaborative manner together.
Students often wait until the end to deploy their work on another device. This leads to disappointment as it always takes longer. They should do this at the start when the application is small, and it becomes part of their continuous integration cycle.
Help your students learn new ways of collaborating
Start telling your students that they can improve their collaboration by letting go of their old habits, and adapting these new ones. Point out too, that this will make them more appealing to employers too.
Yes, it will be hard to change their habits. That is normal, so the sooner they start, the easier it becomes. Collaboration is part of the human-side in software development.
This post is part of a project pulling together my materials and ideas about Teaching Team Collaboration: the Human-Side of Software Development for software development to students.
If you’d like to be notified of future posts, then please sign up for more using the adjacent form. When you sign up, then I’ll send you a free copy of the collaboration rules as a PDF from the book. You can also follow me on LinkedIn
The ideas above are from my book 101+ Ideas to Improve Team Collaboration, which covers all of these little things that students can do to improve their collaboration.