Russia has long been justly famous for the high quality and technical expertise of its human resources. Nevertheless, the image most western managers have of the country, mostly derived from Hollywood and bad press, make them reluctant to entrust critical projects to Russian companies. Russia's software industry has organized itself to deal effectively with the real quality problems and to improve their image abroad. There are still pitfalls in software outsourcing, but this article points out how to avoid them.
We know how difficult it can be to part with our creation, our software project, and turn it over to total strangers. It is even harder when these strangers live in far-away countries, about which all you know comes from a few lines in their history books and several Hollywood movies - none of which speak well of my country. So it is difficult for someone from my country to take on a project from a company or a person in the West, who just wants the project done and who is unfamiliar with the business and cultural issues associated with the foreign outsourcing of software projects. Forget your worries. This article provides some simple guidelines to help you ensure your project is completed on time and within budget, in Russia. Before we begin, some background about offshore software development in Russia will help. Russia now has a national software development association, the National Software Development Association, founded in 2001 with the mission of creating a beneficial environment and conditions for Russian software developers. It unites a great many software companies throughout Russia and is the best source for reference and finding a partner. You can visit http://www.nsda.net to learn more. "Discuss technological issues first: see if you are happy with the technical capacity of your out-sourcing partner; discuss rates only after you are convinced that your partner can do the job." Even before the founding of this national association there were several local associations across the country; the largest are Fort Ross in St. Petersburg (www.fort-ross.ru) and SibAcademSoft in Novosibirsk. Fort Ross Information Technology Services is a consortium of all the largest, most technically competent, information technology companies in St. Petersburg. By joining forces under the leadership and control of Fort Ross, they can offer customers a synergistic and comprehensive range of technologies and solutions. The Fort Ross Information Technology Services Consortium unites more than 1,500 highly qualified, professional software engineers from 18 companies. Many have advanced MS graduate-level degrees in Computer Science and many have PhDs. These engineers are the product of Russia's excellent technical education system. In addition, Fort Ross is affiliated with leading St. Petersburg universities, giving it access to superb research, technical capabilities and human resources. "Not all Projects are good candidatures for outsourcing." SibAcademSoft is a non-profit partnership for the promotion of information technology development. Its founders include the Novosibirsk Regional Administration, the Siberian Branch of the Russian Academy of Sciences, Novosibirsk State University, the Executive Team of the Scientific Techno-park "Novosibirsk", SibIT, Sib Soft, SoftLab-NSK, Alecta, Novosoft, Unipro, and Data East. It is estimated that its commercial software company members combined have between 1,050 and 1,550 employees. The year 2001 was spent actively spreading the word about Russian programming abilities in Western countries; we organized many meetings, conferences and trade shows worldwide. What we learnt during these conferences was very disappointing to all of us. Although Western companies know and value our developers' skills, Russia is regarded as an unsafe and unreliable country to deal with. Everything that Western people know about us comes from TV news, newspapers and movies and the picture they convey is mostly unfavourable. Realizing this, we in Russia began working in earnest to improve the image of our country and its IT sector. We are now working closely with a number of our successful ex-patriots in America and other countries and are participating in the Russian Digital Alliance (http://www.russiada.org/) as part of our effort to change our image. We have put much effort into uniting many software houses to work on westernising our development and management style. The programme includes getting our companies certified for compliance with ISO and CMM standards. The results have been very promising, Our efforts have already been noticed by Western IT society, including the American Chamber of Commerce (see "Offshore software development in Russia" at http://www.amcham.ru/) and the Swedish trade council. (http://www.itstpetersburg.ru/english/introduction.html). We are working hard on all fronts trying to learn more about Western methods of running software businesses, and about our customers' businesses and their expectations. We hope to make Russia's IT sector look better in the eyes of our Western colleagues. When considering an offshore software projects with Russia it would help to keep the following suggestions in mind: o know what you want done and make sure it is worthwhile to outsource. Not all projects are good candidates for outsourcing. Compare the amount of work your outsourcing partner needs to get up to speed on your project and your schedule. Russian programmers are bright and are very good when it comes to software - no matter how complicated - for almost any language or platform. Nevertheless, when it comes to business applications it may be that the time needed to learn your business processes and rules might take more time for our people than for yours. "Do not burn your fingers. Start by learning about the technological capacity of your outsourcing partner. Make sure the company you plan to deal with is at least as advanced as yours. Ask to see samples of code they have produced and technical documentation describing the development process they use. Make sure that you are happy with their English or have someone on your staff who is fluent in Russian." o Do your homework to locate a suitable outsourcing partner. Use software associations and consortiums to get references to suitable companies. Do not overestimate what low hourly rates really mean to you. o Visit the web sites mentioned above to learn about our current situation. Speak to our leaders and take a part in our IT events in your country or in Russia. Meet with our companies and see for yourself what is going on. The time spent will help you select a truly suitable partner. Sending RFQs to multiple offshore development companies and then selecting the lowest price does not work in many cases. o Do not overestimate the face value of customer references or the resumes of the outsourcing company developers and managers. It is a fact of the outsourcing industry that not many customers are willing to admit that all, or significant part of, their software has been developed outside their company. This is especially true when it comes to Russia - thanks to the bad image we still have in Western countries. The same is true for the résumés - you may never have heard of our local companies, but many developers who work with them are of the highest calibre - the cream of the crop. o Discuss technological issues first; see if you are happy with the technical capacity of your outsourcing partner; discuss rates only after you are convinced that your partner can do the job. o Do not burn your fingers. Start by learning about the technological capacity of your outsourcing partner. Make sure the company you plan to deal with is at least as advanced as yours. Ask to see samples of code they have produced and technical documentation describing the development processes they use. Make sure that you are happy with their English or have someone on your staffs that is fluent in Russian. o Start with a small one or two-man/ Month pilot, test the water. Be prudent. Select a small project to start with and see how it goes. Your partner's turnaround speed, English, software development skills, project management and business skills will soon become apparent during the course of this project - all at comparatively low risk to your company. o Be prepared, initially, for the extra overheads associated with project management time, phone calls and Internet traffic required to coordinate the first few projects together. Sending a project abroad is not a simple task. You cannot just send it, forget about it and expect it to be finished, without coordination and communi- -cation, on time. No, your company will have to assign one of its own project managers, with good technical expertise and management skills, to the job. This person must be prepared to be snowed under with e-mails from the outsourcing partner and with questions - often apparently simple and obvious - that result from cultural misunderstandings and differing interpretations of the facts. o Pay attention to time zone differences and use them to your advantage. If you are a significant distance from your outsourcing partner make sure you are using the time zone difference to your advantage. Analyze the work they send today and forward your requests and comments by the end of your workday. That way, your partner can get to work on your requests when he arrives at work in the morning and you can expect to see some results when you arrive at your desk the following day. o Make sure you know when your project is ready and know how to close it. Perfectionism is not the best way to deal with outsourced projects. Both sides must have a clear understanding of the project's scope and know when to call it quits and consider the project "done". Small formalities, such as "acts of acceptance" phase or milestone sign-offs - after every phase of the project can help both parties. o Be aware that software support during implementation can be quite difficult if you or your staffs are not familiar enough with the project to provide high-level support. Fixing bugs at a distance based on reports of distant end users is very difficult. Conclusion We can tell many horror stories about the support and bug fixing problems our companies have had, and still have, with companies that neglected to pay proper attention to this phase of the software project life cycle. Make sure that your developers always design the software with comprehensive debugging tools and adequate log generators to give your development team meaningful debug info.