Best Practices for Dealing with Offshore Software Development

Offshore outsourcing (offshoring) of software development has been an increasingly popular trend in recent years. The cost benefits are easy to understand when you consider that the average annual salary for an engineer in the USA is $70,000 in 2004, compared with a $13,580 average salary for an engineer in India, according to Electronic Business magazine.


Is offshoring worth it? Are the cost savings as large as they seem? Is quality of the software sacrificed or is it improved? Are there risks associated with offshoring software development? Are there ways you can hedge against any such risks? Should you consider offshoring any type of software, or are there some things you should not offshore? How can you recognize the danger signs of offshore work going awry? Are there alternatives to outsourcing software development offshore, or are there alternative ways to offshore?


Advantages of Offshore Outsourcing 


For US companies to endure the disadvantages of offshoring listed below, the advantages need to be substantial. Advantages reported by US companies that have experience with offshoring:


  • The most powerful attraction is significant cost savings. US companies are finding that offshoring their software development saves them money because of lower labor costs. For example, Otis Elevator Company spent $420,000 on transition costs to have 15 people (75 percent of a 20-person team) working offshore in India.1 After one year, it recouped that investment and now the company is saving $1.4 million a year on application development and maintenance, according to CIO Magazine.
  • There is an abundance of technically trained developers willing and eager to work for the lower labor rate offshore
  • Some companies are attracted to offshore outsourcing because of potential tax savings. They can take advantage of opportunities for exploitation of tax incentives offered by the Indian government,3 including a ten-year tax holiday for R&D companies engaged in scientific industrial research, and a weighted deduction of 150 percent offered for scientific research and development expenditure.
  • Some companies that have had successful experiences with offshoring report that outsourcing offshore allows their companies to focus on business critical initiatives, while they outsource their non-critical software and project-management functions. 
  • Some, but not all, companies report that the quality of the software from offshore sources is superior to that which they were able to develop internally.
  • Some developers collaborate with offshore development companies to perform software development nearly 24 hours a day due to work being performed in different time zones. For example, when a US team is finishing their day in Silicon Valley, an Indian team is just starting theirs. This allows the Indian team to pick up where the US team left off, providing a continuous software development cycle and significantly improving time to market.


Disadvantages of Offshore Outsourcing 


Nothing is without tradeoffs, and offshoring is not an exception. Before sending software development offshore, it is important also to consider all of the potential drawbacks. Only then can an accurate determination be made as to whether the rewards outweigh the risks of offshoring.


A number of disadvantages and risks are associated with offshoring. Among those reported by those companies experienced with offshoring are:


  • The most obvious disadvantage is language. Differences in language can sometimes lead to miscommunication, either due to language styles or incorrect vocabulary use.7 Miscommunications can cause many problems since good communication between user and developer is key to accurately extracting the requirements for the software to be developed. 
  • Travel and communications cost can be substantial if your offshore partner needs to spend extended periods of time here, or if communications to their offices is expensive.
  • Technology differences can pose problems. It is important to ensure that the hardware and software development platforms used for software development are compatible with the intended platforms for the end product software. 
  • Soft factors such as cultural differences relating to software development, different standards, coding practices, documentation styles, and work ethic, all can be problematic.


It is no surprise, with all of the potential drawbacks, that not all offshore software-development outsourcing experiences are positive. The founder of a Westford, Massachusetts firm had a negative experience when outsourcing to India, noted an article in Mass High Tech. The outsourced code was delivered to his company much later than specified in the contract. When the software finally arrived, it could not be installed on the servers because of hard-coded references to the development environment. When the client company’s staff started reviewing the first set of deliverables they were surprised to find out that the quality of the source code was extremely poor and was accompanied by little or no documentation. 


The company also experienced problems relating to what the founder describes as “an increased level of arrogance on the part of the Indian teams which contributed to a lack of focus and quality.” It is his opinion that some of the Indian outsourcing companies hire employees with little to no experience and charge them off as experienced developers. Offshore outsourcers can easily get away with this because US-based companies will have a difficult time checking references in India. In the founder’s experience of offshoring project work to India, he realized that absolutely no design process was followed, and that companies were not investing in project management. This is just one company’s experience. The literature is full of both positive and negative experiences. The important point is that there are very real risks.


The Quality Story

With the potential for so many problems, why are US companies still turning to offshore outsourcing as a solution? Many say it is because offshore developed software is not only cheaper, but it has higher quality. Offshore developers, such as those in India, have realized the importance of quality in their service businesses. One such measure of software quality is the Software Engineering Institute’s Capability Maturity Model (CMM). Half of the Level 5 (the highest level obtainable) CMM-rated organizations in the world are in India, according to experts De Rajneesh and R.P. Srikanth.


Many US companies believe it would simply cost too much for their software development organizations to achieve CMM Level 5. They believe that it is less expensive to offshore the development work than to improve processes here in the USA. The higher CMM levels require documentation, traceability, and a sophisticated quality organization. Medical device manufacturers might recognize these requirements as the same requirements the FDA imposes for design controls on medical device software. The perception among many US companies is that changing the way things are done in their established software and IT organizations is expensive at best and impossible at worst. They see their best opportunities are to either outsource to an organization that already operates at high quality levels, or to start a new software development group internally that follows quality design controls from the beginning.


So, one might wonder, why have Indian developers been so successful in achieving the higher CMM quality levels? In India, many software companies focused on software quality from their start. “Indian companies had to build credibility in the outsourcing market. So they focused on the quality aspect, which naturally would differentiate them from ordinary suppliers. By doing this, they became the best in the world in terms of processes and quality” says S. Deb, chief quality officer, Wipro Technologies.


No Guarantee of Higher Quality 


Is moving offshore the solution to higher quality software? Not necessarily. Level 5 CMM ratings do not always guarantee high quality software. Krishnan Puthucode, head of TUV Rheinland’s Software Quality Services, who is an SEI-authorized lead assessor for CMM-based assessments, believes that Indian software companies are not set on improving their processes necessarily, but instead are using the CMM label to increase their market value.


It is valuable to note that not all CMM assessments are alike. When evaluating CMM ratings of potential outsourcers, it is important to know who performed the CMM assessment. Not all companies require third-party CMM assessments. A company’s CMM rating may be inflated when they perform their own assessments internally. It is also important to know when the assessment was done. Since the CMM assessment is not technically a certification, there are no requirements as to how often reassessments should be performed. Therefore, advertised CMM assessments can be out of date. 


Another potentially deceptive factor when evaluating the significance of a CMM rating is to determine what percentage of the organization was assessed. It is possible that only a small percentage was assessed, while the CMM level advertised gives the impression that it applies to the entire organization.


What are the Risks? 


Outsourcing software development offshore introduces certain levels of risk. Aside from the risk of not getting the quality or quantity of software you expected, there are other important risks to consider.


Potential offshore outsourcers should consider the legal risks. Often, foreign laws are inadequate when it comes to protecting intellectual property since there is no specific law to protect US companies. Consider also that many US laws, such as the Industrial Espionage Act of 1996 protecting trade secrets, do not apply outside of the USA. The potential for code developed offshore to be sold to US and non-US competitors clearly exists.


There is at least one documented case in which a product design was outsourced to an Indian company. The Indian company completed the outsourced work and delivered it to the client. It then used the same code to create a similar product that they themselves introduced to the Indian market according to an article in PC World.13 A different instance involved foreign outsourced employees working in the USA. These employees took advantage of their access to biotech material by selling it for profit.


Another example of intellectual property theft in India involved a former employee of an Indian outsource developer. The former employee had worked on an outsourced software development project for an US CAD software company. He sold the source code to an FBI agent claiming to be a competitor of the CAD company and was arrested moments after the transaction. Unfortunately, there is no way to know how this case will turn out since it was the first prosecutorial filing for outsourcing related IP theft in India. Hopefully this case will lead to the establishment of more laws protecting intellectual property offshore.


Despite the serious issues these IP theft cases raise, it should be pointed out that India has a much better legal and cultural environment regarding IP than other popular outsource destinations such as China and Russia. The culture in China and Russia does not respect IP in the same way as the USA does. IP is often viewed as communal property in China. Be aware that even if laws do exist protecting IP in these countries, it is unlikely that their courts will enforce them. 


It is imperative for US companies to do their homework before outsourcing software development offshore. It would be wise to proceed slowly offshore, always be mindful of security, and have contingencies in place to protect the IP should theft be suspected. US companies should conduct background checks on offshore companies and employees. The financial stability of the offshore company should be considered as well as the companies’ retention rates for employees. 


Unfortunately, even though it seems obvious to conduct this research before offshoring development work, many US companies are still too blinded by the potential cost savings to do the background work before. Oftentimes background work is either never conducted, or is poorly conducted, leaving the US company’s property, as well as the company itself, at risk.


Determining the Types of Software Best Suited for Outsourcing

Analyzing the risks involved in outsourcing software development offshore can help companies determine which types of development work are more suitable for offshore outsourcing. Good candidates for outsourced development offshore are usually software that is not proprietary to the client company’s core intellectual property. According to Savitr Software good candidates include:


  • Web design and development 
  • E-Commerce projects (but have a third party check for security) 
  • Remote software maintenance and feature enhancements 
  • Internal record keeping, database, help-desk software


Poor candidates for offshore development include:


  • Software development in the regulated industries (medical, aviation, etc.) 
  • Software pertaining to military applications 
  • Government software requiring a physical presence in the USA 
  • Work that requires special government clearances should not be outsourced outside of the USA (because clearance cannot be obtained by engineers offshore) 
  • Software development that requires intimate knowledge of the US legal environment 
  • Projects involving proprietary knowledge of the client company’s IP, which cannot be safeguarded by means other than trust and dependence on the laws of the land 
  • Complex technical projects because of the large the amount of communication required


What are the Danger Signs of Bad Projects?


Becoming aware of all of the risks involved in outsourcing software development offshore allows you to recognize early when things are not going well. The Massachusetts company mentioned earlier realized its outsourced project was not going well when it did not receive reasonable estimates for tasks and when developers did not show up to scheduled meetings. It was too late by the time managers recognized a significant lack of project-management discipline. The end result was that the quality of the code developed was very poor and there was no documentation. One way that this could have been prevented was to demand that proper processes be followed. When proper processes are not followed, software development projects can be a disappointment offshore and at home.


There are many danger signs of bad projects. The most obvious ones are signs that point to nonexistent or poor communication, lack of planning or management, and lack of experience. Here are some signs that should sound the alarms that things may be going poorly:


  • Vague task descriptions in project plans 
  • Schedule estimates that seem impossible 
  • Documents and software that don’t agree with each other 
  • Lack of regard for schedules 
  • Sporadic or nonexistent progress reports 
  • Inability to list the names of specific employees who will work on a project 
  • Too much reliance on subcontracted labor 
  • Poor quality work 
  • Over-reliance on the phrases “trust us”, “no problem” and “we’ll have to do that here”. 
  • Attendance at meetings or conference calls slips


These factors are the main reasons why software development projects fail. When dealing with offshore outsourced projects, the chances of these signs occurring increases. It is not difficult to see how poor communication can occur easily in offshore outsourced projects. Physical proximity of team members is essential to create and maintain a team spirit that is essential for project success.18 Signs pointing to incomplete or improper planning will arise when deadlines are not met. It may be harder, to detect signs of inexperience because the vendor may intentionally hide it. Some signs of inexperience are fairly obvious, such as poor documentation techniques, others are less obvious. But no matter which danger sign is noticed, it is critical to rectify the situation as soon as possible to help prevent project failure.


Rethinking Offshore Software Development – One More Time


Before moving software development thousands of miles away, a company should evaluate the risks and benefits of offshoring. The major benefit is likely to be the cost savings. Examine why the cost savings are so overwhelming. Cost is the product of development time and employee cost per unit time. Outsourced development can cost less if the labor rates are less or if the time to develop is reduced. There is not much we can do about changing the labor rate differential in any significant way. An hour of time will just cost more in the USA. Reducing time by increasing efficiency does have some potential for reducing the cost of domestically developed software.


In reviewing a number of success stories about offshoring in the literature, one theme stood out. The clients of successful offshoring relationships attribute much of the success of the relationship to the development process that the offshore partner brought to the relationship. Implicit in these success stories is that the client company had no process or a very poor process in place before it decided to move offshore. If the US company had a good software engineering process in place to start with, how much of the perceived savings of going offshore would disappear because of the increased efficiencies of the company?


Why India for high quality development processes? Did they invent the processes? Are the processes proprietary to India? Are they just smarter than we are? No, no, and no. The SEI at Carnegie Mellon invented the CMM levels. Indian developers seemed to recognize the value and embrace the processes more so than their American counterparts. Part of the reason for this is marketing differentiation to attract outsource business. Maybe some Indian companies’ CMM assessment levels are in question, but is anyone prepared to argue that no attention to quality processes is better than some? 


There is no reason US companies cannot do quality software, and reduce cost through greater efficiency. There are many US outsource developers that do follow strict quality practices, achieve the benefits of increased productivity, and carry none of the burden of the disadvantages of offshoring.


Quality Processes: An Investment 


One of the reasons US companies cite for moving software development offshore is the high cost of introducing and maintaining quality processes that would rival those of the offshore companies. These claims should be analyzed again to see if the additional cost is more than compensated by increased efficiencies. Perhaps it is time think of quality processes as an investment instead of a cost.


Using proper processes when designing and developing software can significantly reduce the development cost. When software requirements are defined completely and reviewed before development begins, the cost of implementation and rework decreases. This involves quality planning. If code is adequately inspected, tested, verified and validated, the number of software defects can be reduced significantly.


Quantifying the potential cost savings is difficult because it is nearly impossible to do side by side comparisons. A 1996 study by J. Brodmann and D. Johnson (“Return on investment from software process improvement as measured by US industry”) has shown that every metric for quality (defect rate, time-to-market, productivity, percentage of projects delivered on time, etc.) improves when improvements are made to the software-development process.


Improved software-development processes improve customer satisfaction. The number of defects in released software is considerably lower than it would have been if proper processes were not followed.


A reduction in development time is often realized. By improving processes, typical schedule lengths can be reduced by one-third or more. All of these factors contribute to a reduction in cost. The time to market is shorter, the software quality is higher, customers are happier. Much of this can be achieved without the risks associated with moving development offshore


Best Practices When Outsourcing Offshore


When all of the accounting is done, the risks analyzed, the background checks completed, if the final evaluation still indicates that there are significant advantages for moving software development offshore, then it is time to think about how best to do it.


Hedging the IP Risks 

  • Only offshore to countries with some legal remedies if IP theft occurs. 
  • It is obvious, but put confidentiality agreements in place. 
  • Also obvious, get written agreements about who owns the code that you pay to have developed. Will this developer re-use your code for future clients? 
  • Get written agreements about where your code is coming from. If the outsourcer uses pirated code from previous projects, you could find yourself on the wrong end of an IP lawsuit!
  • Resist offshoring software development for your company’s proprietary products. Keep core technologies and competencies close to home. 
  • Do what you can to control access to any proprietary documents or software that is created for you. That might mean hosting the development server at your location. 
  • Do what you can to control distribution of proprietary information. Employee agreements are a first step. Sophisticated logging and “watermarking” products allow you to trace the source of distributed documents.


Making Sure You Get What You Paid For

The requirements for your software originate with the potential users. To write the requirements the writers need to be close to the user. Consider writing your own requirements. If you must offshore the requirements insist that they are developed in a location that has constant access to the users of the software. Consider using a domestic outsource company as writers of the requirements to eliminate the language and distance problems. 


Demand traceability from requirements to designs from your outsourcer. Check that every requirement is traceable to a design element. Insist that the outsourcer provide you with documented evidence that the requirements have been tested and are implemented correctly. Consider using internal resources or a third party for review and test responsibilities. Review everything and do not wait until the end of the project to begin reviewing documents, software, and test designs. Take corrective actions early. It will be less costly and less time consuming to make changes early in a project rather than later.


Getting Good Results – Consistently 


Consider using third-party (possibly domestic) sources to assist with the requirements phase and testing phase of the project. Use third-party independent reviewers to review documents for completeness, clarity, accuracy, and (for requirements) testability.


Keep notes on the outsource team members who do the best work for you and request them for future projects. If you have enough work to keep an outsource company busy continuously, request a dedicated team who will become familiar with your product, your company, and your way of doing business. 


In conclusion, the cost benefits of offshoring software development cannot be denied. The risks, however, are significant and should be carefully considered. The quality of the software from offshore developers may or may not be better than that of the domestic group being replaced, depending, in large part, on the domestic developer and the offshore developer. 


Many companies can achieve much cost savings and quality improvement by improving internal software development processes but for those companies that choose to go ahead and send software development offshore, their odds of success can be improved by avoiding risky situations, monitoring progress and quality closely, and being ever vigilant for the danger signs of a bad project. With effective “safety mechanisms” in place, offshore practices should benefit a firm rather than expose it to loss of intellectual property, unexpected costs, and ongoing headaches and problems.