Group projects aren't the easiest of tasks to get through, especially when you have difficulty communicating with your members as well as people who aren't strong at doing the task at hand. We were assigned groups for this project so a lot of us ended up being in a group with people that we weren't friends with and had never spoken to before.
While I understand that the point was to learn to work with "different" people (to emulate "the real world"), I do feel that it was a bit silly to do that when the project counted such a large portion of the final course mark (30%), especially if you ended up with people who didn't really care (not saying I did, I am saying in general). The whole idea behind group work is to work as a team and if you have members that don't care it makes it even harder to get things done.
- Decide who is going to do what part of the project and write it down. We had to do this as part of our documentation from the beginning but it was good to have a clear understanding from the start as to who has to do what.
- Set out intermediate deadlines for tasks and ensure that every team member is on track. If anyone is falling behind, immediately investigate why and decide there and then if someone must step in to help as not to delay the entire project.
- Communicate clearly between members. Use tools like Dropbox to centralise everything. We had to use Subversion and unfortunately I did struggle to upload to it via my laptop at home (my files ended up blank).
- Meet once a week to show each other progress and look at each other's work so that everyone knows what is going on.
- Know from the start what each person's section is meant to do and how it is going to integrate with the other sections. Write out general methods that are going to be needed for each class and keep each other updated on how they work and of any changes.
- Integration of the sections must be fully completed at least a week before the due date, if possible. Use the last week to iron out any bugs/issues and to complete documentation.
- Sort out any OBVIOUS issues from the beginning and if someone is struggling with a certain section, assign them to something else and assign another person that understands that section better to that section. I know that it is important for people to learn new things but if something like that is holding the entire group back it is better to rather get the code completed and then go back to explaining to everyone how it works and why.