Combining Agile Processes in Offshore Software Development


access to shared resources. The VPN environment, being less strict than a public network, also allows using such features as Windows Live Messenger's Application Sharing, Video and Voice calls, Remote Assistance, and Whiteboard.

Communication, Communication And More Communication
Working remotely, small misunderstandings quickly grow into bigger problems. On distributed development teams, managers must pay attention to communication practices which they sometimes omit without negative consequences in local development. This includes regular (daily/weekly) reports and status update meetings, which allow the team members to synchronize, discuss achievements and reveal problems. Managers should also try to build personal relationships among teams through introductory meetings, onsite visits, team-building activities, and other methods.

When working with offshore teams, development managers should be aware of language, cultural, and time zone barriers and must find ways to surmount these obstacles. Globalization slowly but constantly erases the cultural distinctions in the professional environment, but there are still cases when cultural differences bring confusion. [1] Language issues are much easier to detect, though it does not mean that they are easier to overcome. Where companies face a language barrier, it is common and highly desirable to have company-sponsored language training for employees. In most of the offshore development countries, professionals are motivated to learn English so it is usually people in offshore locations who get language training.

Time zones specifically make the process more difficult. But it turns out that in countries with mature outsourcing industries, software engineers are usually ready to adapt their working schedule to work with overseas counterparts. There are two strategies to deal with time zone differences. The first is to separate teams by activity, such as having quality assurance and product managers onsite and developers overseas. This allows developers to implement fixes and new requirements while their counterparts are sleeping and vice versa. Of course there should be overlap in working schedules (at the beginning/end of working day). The second approach is to divide projects into blocks and try to assign each block to one location, delegating as many functions as possible to this location. The second approach forces better communication, thus better serves agile development, but both of them work and sometimes there is no choice.

Pay attention to building personal connections among teams. At Murano, we start every project with introductions via Skype or MSN. Cordless phone sets, compatible with Skype or other telephony services, make VoIP calls convenient.

We also highly encourage members of distributed teams to fly and see each other occasionally. A project kick-off or some major milestone might be a good choice for such visits. If you have team of ten engineers working overseas, having several weekly trips for different team members during a year is a good compromise between travel expenses and building good interpersonal relations. International airports and flights with fewer connections, rich cultural heritage, personal security and cultural proximity of cities like St.Petersburg (Russia) are all reasons why Eastern European countries like Russia and Ukraine are growing as outsourcing destinations.

Choosing the right model is very important, but it does not guarantee success. For offshore agile projects, we highly recommend that at least one party has experience in agile development, preferably in a distributed environment. The lack of face-to-face communication, time, cultural, and language differences requires attention and investing additional efforts to get the desired results. But these investments are far outweighed by the benefits of having a good offshore partner, which might be summarized as "getting more for less." This positive balance would be impossible without tools, empowered by the great communications infrastructure now available globally.

[1] This important topic includes

AgileConnection is a TechWell community.

Through conferences, training, consulting, and online resources, TechWell helps you develop and deliver great software every day.