When a company needs to outsource some of its tasks to another company, probably the most important and critical factor of success for this process is how well communication between these two companies is organized. Most books about organizing outsourcing processes place emphasis on the quality of communication as the key to success.
Our clients often wonder, what else we need to complete the project properly and on time after they have provided us with specifications, and time and cost estimates have been performed. The answer is evident: we need to keep tight communication with our customers during the entire development period. Otherwise there is a risk to face a bundle of problems.
Achieving a decent level of communication in the Internet age is incredibly easy and the variety of methods how to do this is astonishing. We will use the ways preferred by our customers, but normally the more ways we use, the better the communication is. Here are some of our methods of communication:
- E-mail and post (serves for more or less formal messages or document exchange);
- Instant Messengers (Skype, Google Talk, ICQ, AOL, MSN, Yahoo!);
- Project Management Systems (JIRA, dotProject, etc.);
- Versioning Systems (Subversion, git, Mercurial, even CVS - whatever you like);
- Bug Tracking Systems (Bugzilla, etc.);
- Reporting Systems (for keeping track on what's going on and for billing purposes);
- Regular phone/Skype calls and visits.
It is hard to overestimate the importance of visiting client and receiving the clients' visits. Meeting each other in person improves understanding between teams enormously. Our experience in customer communication has proven that the most efficient visiting scheme is where the customer comes to us to discuss the project and make clear all vague points at the very beginning and our engineers visit the customer at their site to help release the project or its milestones.
Generally, as every software development project is "tailor-made" the most reasonable and in the long run successful strategy for a customer is to contribute to the communication process as much as possible.