Reliable Software Logo
Home > Code Co-op> Whitepaper: Teaching Teamwork with Code Co-op

Co-op Icon Code Co-op Whitepaper

Teaching Teamwork with Code Co-op

In today's world a professional programmer is expected to work in a team. The smallest unit of development is a software project in which a number of programmers are involved at the same time. That's why any computer-programming course must include instruction in teamwork.

Developing software in a team poses very specific challenges and, at the same time, provides invaluable feedback for each member of the team.

  • Teamwork encourages reading and critiquing other programmers' code
  • Students learn strategies for dividing work into small tasks and scheduling them so that progress can be made smoothly and without conflicts or roadblocks
  • Working in teams makes it possible to develop more ambitious and more complete software projects
  • Finally, it demonstrates to students that programming is mostly about dealing with complexity

It's hard to encourage good programming practices and methodologies when the development is restricted to a few hundred-line mini projects. Methodologies like structured programming or object-oriented programming were developed specifically for dealing with the complexities of large software projects.

The basic tool that is used in team development is a version control system. Just like an individual developer needs a compiler a team of developers need a version control system. The education of a programmer is incomplete if he or she doesn't have hands-on experience with using a version control system.

So far the main roadblocks to widespread use of version control systems in computer instruction were:

  • High price of professional-quality products
  • The need for a network server
  • Difficult setup and maintenance

Reliable Software's Code Co-op changes all that. It is an affordable, reliable, professional-quality version control system that doesn't require a server and is extremely easy to install, configure, and use.

Code Co-op has been successfully tested in academic environments. I used it in teaching computer science at the University of Wroclaw in Poland and at the DigiPen Institute of Technology in Redmond, WA. At DigiPen, in particular, we let the students install and configure Code Co-op on almost a hundred Windows workstations to develop their game projects in teams of three to five students.

In a typical teaching environment, students have access to a computer lab in which all workstations are on a LAN. Each development team selects a team leader, whose machine should be configured as a Code Co-op hub. The rest of the team should configure their machines as Code Co-op satellites. The team leader creates a project and the team members join it. Each student can then check files out, modify them, test his or her changes, and check them back in. This is the basic cycle of development when working with a version control system.

The instructor should encourage students to review their changes. With Code Co-op it's natural to review changed file (view the diffs) before checking them in. It is also natural to review each other's changes when synchronizing the project. Code reviews should be an integral part of development. They help in catching most of the bugs and improving code maintainability.

The results of using Code Co-op in computer instruction were most spectacular when it was introduced to students who have already been working in teams, without the help of a version control system. A typical reaction was "I can't imagine how we were able to work without Code Co-op." Their productivity was vastly improved and so was their knowledge of each other's code.


- Bartosz Milewski
  President of Reliable Software
  Author of C++ In Action, Industrial Strength Programming Techniques, Addison-Wesley, 2001