10 secrets of successful offshore software development

SearchCIO.com, November 10, 2003 By Nari Kannan
(http://searchcio.techtarget.com/originalContent/0,289142,sid19_gci935985,00.html)

A large percentage of American companies are already utilizing offshore software development or considering doing it soon. Many large companies are setting up their own operation in countries such as India and China or contracting with companies there.

Offshore development advisory services often concentrate on the procedural mechanics of offshore development such as selecting a country, selecting a provider, drawing up appropriate legal documents, monitoring, benchmarking performance, etc. These steps are important and necessary steps in offshore development but by themselves are not enough to guarantee that it is successful. So what will make offshore software development successful?

Extrasourcing is disciplined, strategic and appropriate offshore software development. Extrasourcing advocates extended or virtual software development groups offshore. The core software development group here works closely on a daily basis with their offshore counterparts. There is very tight project coordination and communication between the development group here and its offshore counterparts.

Extrasourcing puts a lot of thought into what tasks are appropriate for offshore software development and how they must be performed — from the moment it is initiated through to its continual execution. It minimizes the discomfort and alleviates the perception of threats to job security that an offshore software development group may have on your core software development employees. It helps select the right kind of tasks, communication and project management techniques that work for offshore software development.

In other words, extrasourcing is intelligent offshore software development, maximizing its potential for success on an ongoing basis.

Here are ten secrets of successful offshore software development that extrasourcing brings:

  1. Prototyping locally, product completion and hardening offshore: As anyone who has led a software development group can attest, the most valuable resources on any development project spend a lot of time fixing bugs or making small, important but time-consuming changes to user interfaces in every release. The result is that the core development group does not have time to talk to product management or business groups and proceed with prototyping the next version release of a product or application. A Core software development group’s time should be used only to quickly transform business needs or product requirements into prototypes. This can ensure that the core development group addresses risky technology issues, ensures consistent architecture, etc. in their prototypes. That leaves the completion and hardening (testing on multiple platforms or browsers and fixing bugs) of the product to offshore software development teams.
  2. Tight and local overall project management: Most offshore software services vendors are SEI, CMM or ISO certified. However, following these processes may mean writing extensive requirements or design documents. The reality with many software development groups especially in venture capital funded companies is that there is not enough time to write these documents. Extrasourcing advocates tight and close overall project management and considers the offshore team as an extension of your team here rather than as a vendor that delivers on specifications. This can easily be done with a local technical representative of the offshore vendor present onsite all the time and participating in all strategy and tactical product requirements or team meetings. This eliminates the need for extensive documentation and keeping it to a basic minimum as needed for contractual purposes.
  3. Communication techniques and tools: Extrasourcing, by its very nature, imposes the need for effective communication techniques and tools. Since software development teams here and offshore are working on the same development efforts, they cannot get their work done if they do not communicate well and frequently. Communication techniques and tools are more important to offshore software development efforts than technologies and programming. Companies that have used offshore software development efforts can attest to the fact that efforts that fail do so, not because of technology or programming skills, but because of communication issues.
  4. Better employee morale: Core software development groups are always working on exciting architecture, prototyping and high technology risk efforts while the offshore development groups are taking care of the other important software development tasks like product hardening. This effectively removes the perceived job threats that many offshore development efforts bring to your software development personnel.
  5. Shared responsibility avoids finger pointing: Since the tasks for the software development efforts are shared between the local and offshore teams, the responsibility for making the whole effort successful is shared equally between the two as well. This is better than the situation where the offshore service provider supplies — in perfect working condition — the wrong solution! Communication is the culprit here, and as anyone who has dealt with requirements knows, business conditions change quickly and can make requirements obsolete very quickly.
  6. Parallel offshore efforts lead to accelerated release cycles: Since the local software development group is always working only on prototypes of the next release, there is a possibility that multiple release cycles could be planned at the same time. For example, while the local software development group is working on, say, prototyping v3.0, multiple offshore software development groups are working on hardening, testing and fixing bugs in V2.8 and V2.9, in parallel. When these releases are ready, they could be released on a schedule that makes sense to your customers. Time between releases is not dictated by development tasks and schedules, thus compressing release cycles.
  7. Development continuity: Extrasourcing ensures that the local software development group always has a group of people familiar with the source code of every release. If software development efforts are fully outsourced, knowledge of the code may be only with the vendor, and this may be somewhat disconcerting. If for some reason the offshore vendor relationship does not work out, there will be a local group of software developers familiar with the code.
  8. Safe and effective knowledge management: One of the biggest concerns companies may have with complete offshore software development is safe and effective knowledge management. With extrasourcing, this concern is somewhat alleviated since core knowledge about requirements, architecture and complex technical designs are always available to the local software development team.
  9. Intellectual property protection: Extrasourcing enables companies to provide stronger intellectual property protection. Many highly sensitive parts of the software that incorporate intellectual property can be wrapped in an API (Application Programming Interface) — and only the interfaces provided to the offshore development team for further development. This can ensure that core intellectual property is always protected.
  10. Alternative sourcing: If a relationship with an offshore software vendor does not work out, extrasourcing will make the switch to another vendor a little easier. Knowledge transfer is less of a problem because the core software development group may have the knowledge to do effective alternative sourcing as opposed to when the whole project is outsourced.

Offshore development promises, has delivered, and continues to deliver a lot of value to those companies that have the knowledge and experience to do it right. Extrasourcing provides a thoughtful effective way to pick the right parts of projects for offshore development, provides a framework for ensuring their success, and safeguards intellectual property and knowledge management.