When more than one person is working on developing the same software, close cooperation is necessary. Portions of the code written by one person will influence portions of the code written by another person, and one person may get stuck with a design problem which can only be resoved by change in the code for which another person in the group is responsible. This is true even if the software is carefully designed to minimize the need for such dependence. Even worse is if different people in the development group have different ideas of how the software is intended to work.
When software is designed by a small team of people
sitting together, these can easily overcome such problems by immediate face-to-face
communication. This is not possible in international cooperation, with developers
sitting in offices at large geographical distances. Communication will primarily
be through e-mail and telephone, combined with audio and video meetings and/or
face-to-face meetings. The travel cost for face-to-face meetings and the disruption
they cause to normal work means that they cannot be held frequently enough.
And problems encountered often need immediate solution, cannot wait for the
next scheduled face-to-face meeting.
It is a well-known fact,
documented by much research in the area of CMC (Computer Mediated Communication),
that while e-mail and similar communication tools are very useful, they also
have known problems. People discussing issues by e-mail easily get stuck in
contrary positions and discussion continues endlessly on issues which would
best have been solved by immediate solutions. It is much easier to fully grasp
complex issues, understand each others position, and find mutually good solutions,
in small face-to-face meetings in which only the directly involved people participate.
Formally scheduled face-to-face meetings to which people travel paradoxically
often become too large for effective problem solution.
Below is suggested a number of ways to reduce these problems and to carry multi-country development work to a successful completion.
Even when people use the same words, they may mean different things with what they say. Even people who are highly skilled and very competent experts may have very different models of the world and of their tasks. Such differences are easily overlooked at the start of a project, but will then crop up later on. To avoid this problem, it is very important that the primary developers in a project spend enough time at the start of the project to learn each other's models. Ideally, a new project should start with a series of tutorials, where each major developer can explain in depth his/her model of the area and the development task.