The Non-Linear Algebra of Outsourcing Costs

I recently created two posts devoted to common outsourcing pitfalls when using a dedicated team modelbeing reluctant to put a paid manager on the provider side and attempting to build a senior-only team. What’s interesting about these two common mistakes is that good intentions—attempts to optimize the outsourcing model by cutting manager costs or increasing the average team experience—lead to undesirable results.

It reminds me of another common problem with outsourcing. Since it is often started as a way to optimize the R&D or IT costs, the clients pay a lot of attention to the financial side of the proposals from the bidding providers. And rightly so. But instead of minimizing the total cost of ownership/development/operation, due to the lack of time or experience, what is compared is the plain hourly or monthly rates of different providers.

To give you an idea of how that can be misleading, let’s look at a case in which we have two competing providers: one that has read my posts about the importance of the balanced team and the co-located team manager, and thus includes it in the proposal, and the other that uses a more traditional and blunt approach. Of course, the example and the model are only as good as the underlying assumptions, so some may disagree with me. But I hope to at least make the next buyer of outsourcing services stop for a second and consider looking beyond the per-hour rates when comparing the bids.

So, to the assumptions. To make our comparison simpler (and the example, unfortunately, a tiny bit less realistic), let’s imagine that the two providers operate on the same labor market and can provide similar engineers with similar compensation for the same set of skills. Let’s roughly divide all engineers into seniors, standards, and juniors and assume that the rates and performances of these engineers are distributed as follows:

Position Rate for client (compared to standard engineer) Performance (compared to standard engineer)
Senior engineer 125% 150%
Standard engineer 100% 100%
Junior engineer 75% 50%

Also, if the team has a manager, the manager’s rate for the client is 150% of the standard engineer’s rate.

The task is to build a team of 30 engineers. The client said that he just needs engineers, that they will be managed by the client’s team leaders, and that, ideally, the entire team should consist of experienced guys.

The “traditional” provider (let’s call it “Provider T”) put together a proposal directly addressing the client’s request. In the team of 30 engineers, 20 are seniors, 10 are standards, and there are no juniors. The “enlightened” provider (“Provider E”) gave another proposal: 30 engineers: 10 seniors, 10 standards, 10 juniors. Plus, a paid team manager. The quoted rates for all positions are the same for both providers.

At first glance, the winner is clear:

  • Provider T suggests putting together a team that costs 20×125% + 10×100% and with the overall performance of 20×150% + 10×100%. So, price = 35, performance = 40. The price of a performance unit = 30/40 = 0.88.
  • For Provider E: price = 10×125% + 10×100% + 10×75% + 1×150% = 31.5. Performance = 10×150% + 10×100% + 10×50% = 30. The cost of a performance unit = 31.5/30 = 1.05.

Provider T gets the contract, since it provides more performance for less money. Overall, Provider E seems to be 20% more expensive (per performance unit) than Provider T. As you can imagine, a 20% gain in price is a big enough difference to overshadow all other possible differences between the providers and name the clear winner.

Now, if you peeked inside my posts that I mentioned above, you know that with that approach (unbalanced team, no local manager), Provider T built an unstable team with motivation decreasing and attrition growing after the first 6–12 months. So although for the first year, our comparison is more or less correct (we didn’t take into account that neither of the providers will staff the entire team on day 1, and the team will not be 100% efficient from day 1, but that’s not that important), starting with the second year, the situation will be different.

Let’s make further assumptions:

  • Lower motivation results in a 20% loss of performance.
  • Provider E has 5% annual attrition, while Provider T has 20%.
  • Each engineer leaving the company leads to the situation in which
    • for one month, the team is understaffed while the provider is looking for a replacement (the provider is not paid for the time when the engineer is not on the team, of course);
    • for the first three months, the replacement engineer is ramping up, resulting in a 50% degradation in performance.

Let’s see how that affects the figures for the providers. First, lower motivation leads to the updated price/performance table: Performance for Provider T should be multiplied by 80%.

Second, attrition decreases both price and performance figures for both providers. Indeed, for each case of a leaving engineer:

  • Performance is decreased: 1 month at 0% (no engineer, looking for replacement) + 3 months at 50% (ramp-up for replacement) + the remaining 8 months of the year (pre- and post-replacement) at 100%. Overall, the replaced engineer operates at an average of (1×0 + 3×0.5 + 8×1)/12 = ~79% throughout the year.
  • Price is also decreased: 1 month of 12, the client doesn’t pay for that position while the provider is looking for a replacement. So the price is 11/12 = 91.67%.

Now, let’s remember that it’s true only for the leaving engineers (5% in one case, 20% in the other); the rest of the team functions with 100% price and performance. That gives us the following for the two providers:

Provider T:

  • Team price = (20×125% + 10×100%) x (80%x100% + 20%x91.67%) = 34.42.
  • Team performance = (20×150% + 10×100%) x 80% x (80%x100% + 20%x79%) = 30.67.
  • The price of a performance unit = 34.42/30.67 = 1.122.

Provider E:

  • Team cost = (10×125% + 10×100% + 10×75% + 1×150%) x (95%x100% + 5%x91.67%) = 31.37.
  • Team performance = (10×150% + 10×100% + 10×50%) x (95%x100% + 5%x79%) = 26.69.
  • The price of a performance unit = 31.37/26.69 = 1.06.

And the roles have reversed: It turns out that Provider E is actually 6% less expensive than Provider T! And that’s without taking into account the business losses due to the problems with milestone releases for Provider T or the increased time spent by the team on training the newcomers (again, read my previous post).

The takeaway is simple as usual: When comparing the providers, look beyond the rate-per-hour comparison, and try to model what differences in the approaches may mean for your team in the long run. Sometimes, a clear financial gain of 20% may turn out to be a loss if you consider all of the factors.