Good (and Bad) Reasons to Outsource Software Engineering

Software outsourcing is a fairly common business practice these days. Although “outsourcing” may just mean asking somebody "outside" of the company to perform the work, it typically means that work is "shipped" off-shore.

When asked why outsourcing is needed, the most common answer is that it's done to "cut cost.” Though this may be true, there are several other great reasons to do it. Furthermore, the cost savings are not always guaranteed – the devil is in details. In real life, botched outsourcing projects could actually cost you more money, lead to delays and missed opportunities, and be a source of massive headaches. There’s no free lunch: in many ways, successful outsourced projects require many of the same elements as building your own team (communication, organizational knowledge, processes).

In this blog post, I will review the primary benefits we’ve seen that outsourced projects can deliver. This is based on our experience implementing hundreds of outsourced projects over the past decade, as outlined in a recent presentation to participants in the MIT $100K Entrepreneurship Competition.

There are several good reasons to outsource:

1. Team augmentation: This is a broad term, and covers many situations. A typical example is when your organization needs people who are hard to find locally. For example, you may need to create a library of numerical methods for your product, but in your geographical area there is a shortage of developers with the requisite mathematical background; and/or you might not have internal infrastructure to manage such work. It may therefore make most sense to find an outsourcing partner that has experience doing such work, with access to skilled mathematicians capable of writing production-ready code.

2. Time-to-market: Another common theme. The company needs to expand quickly, and deliver their product(s) to market in the shortest possible time. This may require temporary expansion of the development team to handle a peak load for 8 - 12 months. Once the push to release is over, the additional staff may not be needed. As a result, hiring people locally may be an issue - it could take a lot of time, and might be particularly challenging to find staff for such a short-term engagement. At the same, time good outsourcing organizations are accustomed to such arrangements, and are better-suited to deal with the ebb-and-flow of work, given their pipeline of new and ongoing projects. The right outsourcing partner can add employees quickly, train them within a short number of weeks, and greatly compress the client’s time-to-market.

3. Solve a specific technical problem: There are situation when a company is faced with a relatively isolated technical issue outside of its core expertise, and it may simply make sense to contract this out. For example, this could be the development of performance testing harnesses, writing of installers for a variety of operating systems, or other “one-off” tasks that might not be revisited in depth from release to release.

4. Cost reduction: Having the right outsourcing partner could lead to a significant cost reduction – some estimates put this at 3:1 or even 4:1. Large portions of the savings come simply from the different salary rates for software engineers. There is also a financial benefit to reducing the calendar time-to-market – in terms of both overall operating costs and reducing time-to-revenue. But while outsourcing can indeed save money, it’s NOT a silver bullet - it's just one more tool for getting things done effectively, and should be used with care and in areas where it is most appropriate.

So which projects is it DANGEROUS to outsource?

The riskiest projects are the short-term ones, ones that last from several weeks to a couple months, requiring just an engineer or two and urgent in nature. Why? Because the “on-boarding” process and inevitable communication overhead tend to dominate the schedule, and there’s no investment , no amortization of the increased initial overhead across a sufficiently large amount of work. On top of that, the specs are often incomplete - if they exist at all - the goals are often redefined on the fly. In that kind of an environment, with no room for mid-course adjustment, outsourcing in general (and off-shoring in particular) is not a good fit.

In the next post, I will flesh out the key failure modes of outsourcing, and some tips on avoiding them.

Jul 01, 2015