Outsourcing Software Development Offshore Pros & Cons

By: Mark Davies

When considering whether to outsource a software project, the following advantages as well as the disadvantages should be taken into consideration:

Cost

Cost is the main reason that most companies take into consideration when outsourcing a project. Software engineers outside of the developed countries are compensated much less than their counterparts in developed countries. The average salary for a software engineer in India is $10,000 per year. The saving in salary can be passed on to the client. There are some reports () that salaries in India are rapidly rising. Maybe in a few years the cost benefit of outsourcing will not be so obvious. However, there are many other important advantages to outsourcing that one should consider.

Time

There may be few people in the company with the right skills to complete a particular project. In this case the project is in risk of not meeting its deadlines. The company could company hire more skilled people (either full time staff or contractors) and management. However, this would be expensive and after the project is finished you may not need the extra manpower. Outsourcing could be a solution. There are many outsourcing companies with many different specializations. The right company could provide the skills and manpower necessary to meet any strict deadlines.

Skills

An outsourcing company could provide the client with skills that the client does not have. For example, maybe the client wants some software coded in a particular technology but the client does not understand the technology. The outsourcing company could provide these skills to the client. However, bear in mind that if you are outsourcing a project outside of your companies skillset, this could pose problems with standards and maintenance later on.

Empowers Individuals in the company

Because the offshore company will now be doing the 'grunt work', this leaves more time for individuals within the company to concentrate on 'higher' tasks, such as gathering requirements, design and management. The smart individual will find herself leading others, rather than general maintenance and development work.

Pitfalls of Outsourcing

Needs constant management

This is the number 1 reason why outsourced projects fail. You need a good manager, a leader who is in constant communication with the offshore vendor. The leader needs to understand the requirements, and each and every day make sure that the offshore vendor also understands the requirements. The client should make sure that standards are being met by viewing code, looking at latest builds, viewing the bug tracker, viewing language resource files, etc. A lack of constant management generally means the project will get out of control.

Increase in frustration

An increase in frustration in the company could arise for a number of reasons:

- Time difference: Usually, there is about a half day difference between client and offshore vendor. This makes communication very difficult. A question could be asked on Monday, answered on Tuesday, a response requested on Wednesday, and a reply on Thursday. To solve this problem, schedule weekly meetings. If a difficult problem arises - schedule an extra meeting to discuss. Any decent offshore vendor should understand the need for good, timely communication and be willing to meet on your schedule.

- Low quality: If the offshore company produces low quality code or architecture, this will definitely increase frustration within the company. This needs to be solved by having all people who will be responsible for maintaining the code/architecture involved early on in the project. Code reviews need to be done frequently. If frequent meetings/code reviews/reviews with customers are not done, then the chances are you will receive a product that does not meet requirements, is poorly written, is not maintainable (or only by the same offshore vendor - fees will increase for sure), and is not scalable to your liking.

- 'This isn't what I need!!' - If the customer is only shown the product at the end of the development cycle, chances are this is what you will hear! Generally, customers are not very good at describing exactly what they need. Sometimes, it is because they do not know themselves what they need. The earlier you can show the developing system to the customer, the better. Only then will you discover that maybe the requirements weren't clearly communicated.

Be warned that the offshore vendor is easily made a scapegoat. Disgruntled employees will jump at the chance to blame the offshore company for any mistake made. The employee should be reminded that nobody is perfect. If a mistake is made by the offshore company you could empower the employee to find out the reason for the mistake, and ask him/her to strive to solve the problem by working with the leader and the offshore company.

Testing more difficult

Generally, the testing phase in an outsourced project is more difficult than an in-house. If you test a piece of software that was developed offshore in-house (and you certainly should) and find a problem, this needs to be communicated to the offshore vendor. This could cause problems as the offshore vendor might not be able to reproduce the problem. It could be easily fixed if only they could see the machine that it happened on. Or maybe the problem isn't properly communicated. The 'Entering the testing phase' page will help you have a smoother testing phase.

Company Morale

Choosing to outsource a project instead of developing in house could affect company morale. Employees could feel that their jobs are threatened. If jobs are at risk, then the employees should know as soon as possible to reduce the spread of bad morale. Likewise, if jobs are not threatened, then the employees should be told of the change, and that not only are their jobs safe, but the employees will be given the chance to do a higher level of work. See 'Introducing Outsourcing to your company' for tips.

Programming
 • 
 • 
 • 
 • 
 • 
 • 
 • 
 • 
 • 
 • 
 • 
 • 
 • 
 • 
 • 
 • 
 • 
 • 
 • 
 • 

» More on Programming
 



Share this article :
Click to see more related articles