A White Paper by Jack Olson
If you are successful in starting an outsourcing practice with a quality vendor, you will be seeing significant cost savings and shorter time to market. This will have other financial impacts on your company that can be exploited to your benefit.
Contracting with an offshore outsource software development company is done for multiple reasons. The primary reason is cost reduction. It is always cost reduction. Other factors often cited are difficulty in hiring local staff with required skills, time required to get a team assembled and working, and time required to get a product to market (i.e. getting done sooner). All of these are valid reasons and should not be discounted. Getting to market 6 months earlier with a software product can mean everything to a new startup company. However, if the cost were the same as doing it locally or through onshore outsourcing, then the project would probably be done with local staff.
For a company with no experience using offshore outsourcing the expectation of cost savings is generally higher than what the final result will or could be attained. This is because there is a lot of chatter out there that talks about how much offshore programmers get paid. When the salary of the programmer in a typical offshore country is compared to the salaries paid at home the CFO goes nuts expecting the total project cost to be reduced by the same percentage. This percentage is usually about 80% lower than doing the work at home.
These quick comparisons leave out a lot of the financial factors that go into an outsourcing project. When everything is added up on both sides, the actual savings achieved can be as high as 60% or as low as 35%. A typical project saves about50%of the costs. Although a far cry from 80%, it is still a lot of savings and makes the venture well worthwhile. The CFO just needs to get used to the lower, more realistic number.
Offshore outsourcing companies always base their charges on an hourly rate agreed to for each staff member directly working on the project. This is mostly programmers, QA professionals, and possibly one or more project managers who work full time on the project.
For example, if you need a team of 10 programmers, the offshore team will start negotiations at around $40 per hour per programmer. Some of them have a rate schedule broken down by type of staff member and years of experience (lead programmer, senior programmer, junior programmer, QA specialist, project manager, etc.). Rates on the schedule can range from $18 an hour to $50 a hour. Extended to a typical year (2,000 hours) you would be paying from$36,000to$100,000for each individual staff member. Hardly a great deal when your own starting salaries are ranging from $60,000 to $140,000.
For outsourcing, this is the only cost you will pay with some minor exceptions covered later. Out of that $40 per hour the outsourcing company pays the programmer salary (typically half of that number), pays any required government payroll taxes, pays for office space, utility expenses, insurance, furniture, basic computers and software licenses. The money left over from all the programmers is used to pay for staff members that are not billed and often have no connection to the client project. This includes the senior management of the outsourcing company, accountants, HR staff, sales people, marketing people and others. It also pays for the internet usage, company website, marketing activities such as attending conferences, etc. Hopefully they have some money left over after this for profit.
So to compare the rate you contract with, you need to compute the cost of adding 10 programmers to your staff at home. They have salary that causes payroll taxes to be paid by the employer and possibly health insurance premiums. They need office space, furniture, a PC to work with and software licenses for tools they will be using. When all of this is added up, a $100,000 per year salary for a programmer in the US translates to anywhere from$150,000to$190,000cost of adding that programmer to the local staff.
These are all costs that will be applied against the budget of the development or IT department. Adding other costs such as company overhead or profit does not make sense for the at home number since they are not affected by the act of outsourcing.
At this point you are seeing the50%reduction number becoming more realistic. In fact most companies will claim a60%or more reduction in cost when comparing true “cost of a programmer” rates fully loaded.
But that isnot allof the costs that need to be included in the comparisons. For the client of an outsourcing project there will be some or more of the following incremental costs that apply only when doing outsourcing.
This one you need to be careful with. You look only at positions in your own team that are added solely to support outsourcing. If you have a senior technical staff programmer overseeing the entire project, that generally does not count since you would have that person anyway. Duplicate positions (or partial positions) are typically found in project management, quality assurance, and a library management and build specialist. These are positions where you want duplication to ensure that your team has full control of the project.
If you have such positions then you must include the full “at home” costs of these people as a cost of outsourcing.
Travel to and from the outsourcing sites and any business expenses associated with these trips are added as a cost of outsourcing. It is tempting to not spend this money or to be miserly about it. However, management must weigh the benefits of onsite visits in terms of productivity improvements to the cost.
If you expect folks from the outsourcing team abroad to visit your home site then you will normally pay the travel expenses over the top of the hourly rate agreed to.
Normally outsourcing places an added burden on management to approve outsourcing plans, lawyers to draft and/or review contracts, and financial people to deal with more invoices and payments.
Unless you do lot of outsourcing you would not consider this in computing the cost of outsourcing. It would just be more work piled on the desks of these people without increasing their salaries. However, if you outsource legal, contract administration or CPA functions, then the added costs that directly relates to outsourcing should be added to the cost of outsourcing.
The scales to consider are amount of outsourcing work to be sent overseas and the length of time the relationship with the outsourcing company is expected to last.
If your cost of outsourcing is high then it has less impact on the outsourcing overall comparisons if the amount of work outsourced is large. It spreads these costs across a larger base of jobs being outsourced. For this reason the first work outsourced generally shows little outsource savings (or none at all) since you always want to start with a small project.
Over time, as you add more projects to the outsourcing side, and if you stick with the same outsourcing vendor, these costs diminish in real dollars and percentage impact dramatically. If you are constantly adding new vendors then the costs stay a high percentage of the comparisons.
This also implies that your final comparisons presented to upper management should be based on the project relationship of the arrangement over time and multiple projects. Otherwise, your comparisons will show little or no value in outsourcing whereas taking the longer look at it would produce a much more realistic comparison.
Other costs should be estimated and put into the comparisons as well.
The outsourcing company rates generally include only the cost of a desktop or laptop PC for each developer. If the project needs other hardware to execute a project, the costs are generally billed back to the client over and above the hourly rate agreed to.
This may include a server machine for holding and managing the source code, test data, and other project development materials.
This cost can sometimes be eliminated or at lease largely reduced by using virtual machines in the cloud. It is a good idea to have the project server in the cloud and accessible by programmers from both sides.
If hardware must be purchased, it is generally easier and cheaper for the outsourcing company to acquire the asset and bill the cost to the client. Trying to ship a piece of hardware through the outsourcing company’s custom agents is probably impossible.
If you pay for a machine, you must have an agreement with the outsourcer as to what happens if the contract ends. If you paid for it, they should buy it back if they want to use it for other clients. In no case should the outsourcer use your paid for assets on projects for other clients unless specifically allowed in a contract.
The outsourcing company will normally provide licenses for ordinary development tools and IDEs (Integrated Development Environments). They will also generally have available database software such as MYSQL or a license for SQL Server. and will not bill this through to the client.
If licenses of other software is needed then it is best for the outsourcing company to arrange for it and bill it through to the client.
Again, this can be mitigated if you are using cloud services.
Normally the outsourcer pays the bill for his internet service provider. They also ensure each programmer has a cell phone of sorts to use. If however, you have special communication requirements, such as a T1 line, or 24X7 phone access for customer support, the outsourcer may bill the monthly cost through to you.
This is actually a cost savings when using offshore teams and should be a credit to that side of the comparison ledger. In the US, it is common to use headhunters to find and employ programmers. They charge a hefty fee for their services, usually based on the starting salary of the eventual hire. You normally do not pay recruiting costs of the outsourcing company when going offshore.
If you are planning a team of a dozen or more new programmers, this can be large. It also is a recurring cost if you expect a certain amount of turnover on your at home team.
After taking everything discussed above into account, your accountant should be able to show a comparison of what your company can save by using an outsourcing company. For a single, small project it will normally be negative savings. If larger projects are considered for a meaningful period of time, the savings will almost always be huge.
Once you have selected an outsourcer and go to contracting, you can usually get some other savings by negotiating the rates lower than first proposed. This is not always true since some companies will quote you low rates to get you interested in their company. However, you can always question the number of programmers needed and the experience levels needed for each and arrive at rates that may be 10-20% lower than initially proposed. A good negotiator is always valuable to have for this.
Negotiations always are based on an hourly rate. However, you generally want to know what it is going to cost you per project and not worry about paying overtime, etc. There is no way you can manage people’s time from your side. What you want is a fixed cost per project.
What I have always done is define a project, determine a reasonable amount of time and people to complete it and then set a completion date and fix the cost of that team based on 40 hour work weeks. The outsourcing team is then expected to deliver the result on time for that cost. I couldn't care less if they used more time or less time. Managing people’s time becomes their problem (which is where it should be).
Most outsourcing companies are more than willing to make these deals since they then know what they will be getting every month and what output is expected of them.
It is generally expected that offshore teams have a higher productivity than at home teams. This may or may not be true in practice and should not be expected. You should do cost planning based on equal productivity and then be pleasantly surprised if it comes out better.
Some of the factors that may give the impression (or reality) of better productivity are:
Too often projects at home proceed with inadequate definitions of the work to be done. This is not possible with offshoring since you must tell them what to build in the contract addenda. Better work definitions will always result in better productivity.
Likewise projects sent overseas generally have a more formal process for making design additions or changes. The largest factor deflating productivity is frequent and ill-defined product definitions. If you control these better you get better productivity.
If you have fixed the cost of a project and it requires more time and/or effort to complete, the offshore team will generally have the programmers work overtime and not pay them for it. This makes them the same as programmers at home who are on salary. You should not expect overtime in your negotiations, but should not pay for it on fixed price contracts.
This is often the case. They generally take fewer vacations (or none), have fewer social distractions, and are OK with working longer hours that programmers in the US. Add to this their fear of being un-employed and you get programmers more dedicated to giving you a good product on time.
Note. As the world flattens further, a life style similar to that in the US becomes more common in the outsourcing countries. However, focused cultures that appeared historically, maintain themselves with a different set of motivators. It differs from company to company, so you should check what kind of culture your outsourcer maintains: achievement or commodity.
At home teams are likely to experience higher turnover of programmers than offshore teams. This is due to the shortage of good experienced programmers here compared to the offshore country. Having to replace programmers at home always caused a sudden drop in productivity for the team.
Note. Another motivator for lower turnover is the desire of programmers to work on “good” projects. That means a reasonable customer, a meaningful, mission-possible project, good management, a fulfilling role, a good team, a technical challenge, and many other factors, which, once found, are hard to find elsewhere. That is opposed to boring work, painful communications with the customer, messy projects with little chance to succeed, and careless commodity companies. The side effect for you is the need to be a good customer and, in cooperation with the outsourcer, maintain that attracting environment.
You should not use these factors to exploit the programmers on your outsourcing team. In time they will become less inclined to work hard for you if they feel you are deliberately exploiting them. However, if you see higher than expected productivity then you may want to investigate and fix any imbalances that may have caused it. The more you take care of your offshore team the more the productivity will increase in a healthy way.
If you are successful in starting an outsourcing practice with a quality vendor, you will be seeing significant costsavingsand shortertime to market. This will haveotherfinancial impacts on your company that can be exploited to your benefit.
One approach is to use this practice to reduce the amount of investment capital you need to raise. It can reduce the time to raise capital as well as reduce the dilution effect of new money on previous investors.
It may also make it easier to raise new money. Private investors and venture capitalists are generally impressed by companies that consider using offshore development or have already done so and are making it work.
You may want to continue to raise the same amount of money but use the savings of offshore development to hire more sales, marketing, customer care, or field tech support people. This should allow you to sell more product and make more profit.
Getting product to market faster can mean higher sales earlier than expected as well as getting and staying ahead of competition.
All of these factors just reinforce the business case for using offshore outsourcing development teams. It may be hard to estimate their real dollar value but should be part of any comparison presentation given to upper management. Sometimes the value of going this way canmakeorbreakan early stage company.