Tuesday, April 26, 2011

How To Make a CS Team Project a Success

Amplify’d from www.quora.com
Saul Fleischman, Helping Japanese companies do busines..
tips about teamwork / project choice / collaboration software
The decision about what project to do will have almost as much of an impact on your results as how well you do the whole rest of the time you work on it, so make sure you put some time into the decision. Ideally, the project will be something that can turn out well even if you aren't able to do a great job, or if you don't finish everything. I would aim to spend the first 1/3 of the time actually getting the first version of the project working, and then the rest of the time polishing and improving it.

You need to get into a rhythm. This is especially important in college where everyone has various competing demands on their time. You should have a weekly meeting at the same time in the same place every week that no one misses where each person goes over their progress from that week and their plans for the next week. This meeting should make everyone aware of what everyone else is doing, and help everyone feel responsible for getting their work done each week. In between the weekly meetings, you can have other less formal meetings to go over bugs and work through specific issues, but it's important not to get off the tempo of getting things done every week.
  • Have a flexible team structure: Just because one teammate is in charge of a specific portion of the project for a decent amount of time does not mean it is his/hers. Schedules and priorities change and, especially for a school project, it must be understood that teammates will not be static. Be prepared to adapt and reorganize in the event of any unforeseen circumstances.
  • Communicate: This may seem redundant given the above bullet points, but make sure there are always clear lines of communication between all members of the team. Skype, email, phone, IM... whatever may be at your disposal. Communication is key to keeping everyone on the same page.
  • Delegate responsibly: You will likely want to split up the work mostly evenly; but if there is a teammate who is just amazing at what s/he does, consider giving him/her a heavier work load by shifting work away from a weaker teammate. Yet, make sure that people do not feel "picked on" as though they have been unfairly singled out for extra work.
  • Document collaboratively: Something like Google Docs will allow everyone to stay up to date and make any changes that need to be made from their end.
  • Meet early and often: Meet with the entire team (or as much of the team as possible) at least some what frequently. Meet if there is a major issue. Meet if you are having conceptual issues with the project at large. Meet just to get together and code collaboratively.
  • Use version control: Git would be terrific for this. Consider checking out http://www.github.com. The bottom line is that this will be mission critical and should be a top priority.
Read more at www.quora.com