Always be getting ideas out of your head and into a tool
Think back to the first computer you had. Now remember what it was like when you tried to open too many apps. Remember that thrashing sound it made as it swapped memory because you were trying to do too much with too little random access memory? These days you probably notice it if/when your mobile phone starts to be noticeably slower when you’re using apps.
Your brain is the same. You need to point this out to your students too. When they have fewer things to keep track of in their heads, then they should find it easier to be more creative and think of new ways to work, and how they might improve their team collaboration.
Tools lighten the cognitive load
Teach students to use some of the basic tools to make their work easier. Focus on why they should use a tool for the task, and less on how to use a specific one. As always, the theory is more important than the specific tool itself.
Calendar invites make it more likely people turn up to meetings
One of the simplest things always seems to be the hardest to teach students. Maybe they don’t want to feel grown up yet, but students seem reluctant to use calendar invites when organising team meetings. Remind them that they all have email, and therefore also have a calendar tool. They should leverage this to make it more likely that everyone will turn up for the meeting, instead of hoping everyone will remember to come. This is especially useful for recurring meetings.
You can also improve this one by asking students to configure their calendars to remind them about events 15 or 30 minutes before the event too. This will mean they have time to get from one place to another.
Online task boards make organisation easier
Online task boards are common, and aid the organisation of who’s working on which tasks. Which one they use is less important than using one to aid their work. Aim for simplicity so that they spend less time setting it up, and have more time to organise the board to suit their needs. It should be easy to adapt to their way of working, and not force them to work a specific way. This might mean using something like Miro, instead of Trello. Another option could be GitHub projects.
Whatever you do, keep your students away from Jira. In over twenty years of talking to people in industry I have NEVER heard any software developer, coach, or scrum master say anything good about this product. Yes, it is used by industry. No, it does not make it easy to do the work. It over complicates tasks, and students will spend more time in the tool, than doing the work. Just say no, use trello, or miro instead if anyone asks.
Automated tests validate the code
All code needs to be tested, and automated tests make this easier to manage. They are also much faster and easier to do, than manual ones. While there are still some parts, which can’t be automated, most of it can. Teach the students to write tests from the beginning as they go along, and their work should be more reliable. Start with unit tests and move onto integration tests as soon as possible.
Adding tests speed development and refactoring. Which student really wants to write username/password combos manually when building an app, if it can be automated?
Use a version control system to manage the code repository
It should be obvious, but I’ll add it anyways. Teach students to use version control systems and how to integrate their code in a remote repository. Again, use Bitbucket, GitHub, or GitLab as you wish.
I’ve already covered the benefits of trunk-based development, so that’s not the focus this time. Instead, I want to point out the benefits of using version control to also manage other tasks in the team.
For example, there should be a humble readme file in the repo. This should be the ‘memory’ of the team for their product. It should have details of how to build, test, and deploy the application. The team should not rely upon their collective memory, but document the required steps for these different aspects of their work. This should be a living document, and reflect changes as the team makes changes. It should not be left until the deadline to be written up.
Next, is a script that runs the automated tests when a new commit arrives. This should ensure all commits mean the current criteria of passing all tests. Commits that don’t pass the tests are rejected and flagged. Commits that pass could be deployed too.
Thin slices keep the work focused
Keeping the work focused by using thin slices, also lightens the cognitive load. When you’re not trying to do too much, it’s easier to focus on the work. Read the previous posts for more on this in the link above.
Point these load lighteners out to your students to ease their work
Add these points to your classroom sessions and you’ll see your students be more successful in their collaborations. The hard part of developing software is coordinating people’s activities. Each of these suggestions touches on those aspects: helping ensure people turn up at meetings, clarifying what is being done when, and aiding the testing of the code, to ensure it does what it should, plus making it easier to build, test and deploy.
All of these are simple things, and might seem obvious to us. Students are still learning, so we need to point them out to them so that they know about them too.
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.