Five Tips for Software Outsourcing

Insights

Access to global talent pools, potentially at lower hourly cost than at home, makes it likely that you will consider outsourcing as a way to stretch your software development investment. Beware though - cheap labor does not guarantee better value per dollar. If you want to get the most from adding outsource developers to your mix, read on.

There are many reasons to consider outsourcing some or all of your development work. Outsourcing gives you access to global talent that may help you scale more rapidly than if you are restricted to a local labor market, and can allow you to add new skills quickly. The usual motive though is to save money with a lower-priced labor pool. The unstated assumption in cost reduction is that cheaper labor will deliver more value (or profit) per dollar invested. This is not necessarily true. A more precise objective is to improve quality adjusted value delivered to the market per dollar invested.

Note: Before taking on outsourcing (or concurrently if you have already started), look hard for ways to improve the delivery effectiveness of the team that you have. Bad habits that are in place now will worsen when you scale up or outsource.  

Here are five critical things to keep in mind as you consider outsourcing, or even if you are already doing it, to get the most for your money.

Develop Domain Expertise

When you select outsource partners, it’s important to account for the amount of tacit knowledge involved in your field. It’s not enough that your dev team understands how to make reliable, scalable, secure code. They have to know something about your customer and your dev/test environment. If your customer works in a specialized field, this may be significant. This puts an extra burden on your employees who specify what is to be done and acceptance test the results. It also puts a premium on retention of the outsource developers, so turnover is a key consideration. If you want your outsource team to maintain legacy code, you have a similar issue: it will take time for anyone to know their way around that code and how to alter it while minimizing unexpected consequences.

Like it or not, when you outsource, your time investment in getting people familiar with your work, market, and code will be no less than with employees. If you have greater turnover, or are in a very different timezone, it may be much larger. Rather than treating outsource as 100% elastic, it’s cost-effective to retain key team members familiar with your domain and product, and scale up and down around the core team.

Manage Timezone and Turnover

It would be a waste of money to have an outsourced development team work unsupervised. Even if waterfall development were a good way of getting software development done (it’s not, and here’s why), someone who understands the customer problem will need to specify and test the work. They will also need to be in regular communication with your outsource team to monitor progress, correct misunderstandings, do course corrections, review intermediate results, deal with turnover and other emergencies, and more. For that reason, timezone overlap is critical.

The more work hours your outsource team has in common with your employees, the more likely it will be that the communication cycle time is short, resulting in better thoughput. The very worst possible situation is when you or your employees have to work with outsource teams at both ends of their day - early morning and late evening, as happens when someone in the Western US works with people in Eastern Europe and India, for example. If your outsource team is across the International Date Line, you will only have a four day overlap each work week unless someone works weekends regularly.

Do yourself a favor and look for outsource people in a nearby timezone (3 hours at most in one direction only). They don’t necessarily cost more. If you must work with more than one timezone, this is even more important, and I would recommend a smaller window to make sure everyone can be on the same calls for a significant part of their workday.

As the outsourced team matures you may be able to mitigate timezone issues by trusting them with more decision-making. Consider developing a proxy Product Owner, who understands the product and customer needs, at the outsourced location. This can speed clarifications and course corrections and reduce dependencies. Detailed but smaller stories and faster demo cycles also mitigate some of the pitfalls caused by time zone differences. At no point should these replace oversight from your team members.

Occasional face-to-face among key players helps build stronger partnership and understanding. Budget for it if possible.

Turnover - the rate at which people leave for other roles - is a tax on the cost of labor, especially when it takes a long time for a new person to receive enough training and experience to become productive. Multiply the annual turnover rate by the training time as a fraction of the year. This is one part of the tax that turnover imposes on your annual labor rate. The other part is the time required for other people to train the new people. New hires don’t usually train themselves. Those people may be your employees, already struggling to manage their own work. Consider both costs carefully and budget for them, or you will see workforce burnout and reduced productivity. Your can mitigate some of this cost by building a robust ramp-up mechanism with pre-designed training and knowledge transfer sessions. Work with your outsourcing partner to cross-train their people so that sudden departures are less disruptive.

Budget for supervision and acceptance

It’s absolutely critical to have staff dedicated to managing the outsource work and the relationship. Outsourcing work and then failing to test it within the acceptance window is a good way to waste money. I have seen it happen, and it will happen to you unless you have people who verify quickly that the work product meets your needs. Employees who understand the product and market must work with outsource partners to develop stories, interact frequently, and check the quality of the work. They may also have to contribute to training new hires.

For complex projects, track work items assigned to the outsourced team from grooming to assignment to acceptance. Define acceptance criteria clearly and openly. Use this record to learn how releases are affected by new work, requirements churn, and defects so that you can mature internal and outsource practices over time.

Budgeting and hiring for this depends on how you do development, and the extent to which the outsource partner understands the problem you are trying to solve and the context of your business and market. As a guideline, budget at least one employee for every 6-10 outsource developers or testers, and no less than the fraction of people you have internally to represent the market and customer to your internal dev team if you have one. The fraction will be greater when your outsource partners don’t have intimate knowledge of your code base and business.

Integrate Fully

Expect transparency and collaboration from your outsource team. Rather than having them work with parallel work tracking systems, have them use your internal ones so that your team can see what’s going on as well as the outsource team can. Use the same development approach too. If you are just starting out with outsource, I recommend integrating outsource developers closely with your internal development team(s) rather than separating them. This puts a premium on timezone and turnover, but it lets your team better evaluate the quality of the work they are getting and greatly tightens the feedback loop and training cycle.

Measure the Results and Review Often

Have an outsourcing dashboard and review it quarterly with your leadership team. If you are working with an outsource firm, include their leaders too. Define metrics and thresholds to measure the overall engagement. Review on a cadence and course correct. Here are some things to watch:

  • The rate of turnover in your outsource team compared to your employee turnover rate

  • The number of employees supervising outsource work, and their workload

  • Story churn, timeliness of story grooming with the outsource team, and story quality

  • The quality-adjusted productivity of your outsource team. Look at the rate at which defects leak out of outsource code into your customers’ hands, plus the rate at which your internal team is finding those issues and preventing them from leaking into the field, and multiply each by the time and labor cost to resolve. Defects that leak into the field involve many more people and much more time than those caught at the developer’s desk or even in QA. Add these costs to your outsource and supervisory labor costs and compare with internal development.

  • The experience distribution of your outsource people compared to that of your internal team. You want to have confidence that there are enough senior people on the outsource side to develop the new people

  • Automated test coverage in code developed or maintained by outsource - look for improvement and inspect the tests periodically to make sure they are useful rather than cosmetic

  • Defect leakage and regression rates of code compared to in-house standards

  • Release timeliness

Acknowledgements

Thanks to Girish Chandran, Chief Manager of Engineering at Persistent Systems for review and comments

Takeaways

  1. Consider what problem you are trying to solve by outsourcing, and what new problems outsourcing may entail. 

  2. Cheap labor is not sufficient to improve your software development productivity per dollar invested. Model quality effects, turnover, and in-house leadership and acceptance costs into your outsourcing projections, then measure actual results and focus on continuous improvement.

  3. Contract-driven sourcing that relies on detailed plans and specifications is failure-prone. This is not new information. Learn from Toyota and other Lean pioneers how to build flexibility and collaboration into your outsourcing. 

  4. Consider timezone when selecting outsource partners. There must be substantial workday overlap between the outsource people and the employees who lead them, or productivity and quality will suffer.

  5. To be productive, contractors must learn your software and something about its use. This is especially true of legacy and specialized products. Budget the time appropriately. 

  6. Budget adequate Product and QA/test capacity to lead and accept outsourced work. You are likely underestimating 

  7. Manage turnover. Turnover rate multiplied by startup time is a “tax” on your outsource labor rate. 

  8. Use the same work tracking tools and practices that you use at home so you have a clear view of how work is progressing. Allowing contractors to use isolated or duplicative systems creates fog and manual work, increasing cost and unpleasant surprises. 

  9. Automate testing as an ongoing investment, measure coverage, and work to improve it. 

Your situation is not the same as anyone else’s, but in my experience there are strong common patterns. The tips above will help you reduce the bumpiness of the ride as you consider or mature your outsource practice.

Copyright © 2025 John W Sadler Jr - All Rights Reserved

Cheap labor alone does not guarantee better value per dollar.

A more precise objective is to improve quality adjusted value delivered to market per dollar invested.