This is an interesting topic to discuss.

Arbitrage, in its most simple form, is buying and selling at the same time and making money on the difference. It is most commonly used in finance, defined here.

In conversations about building products, I often turn to this concept as a way to gain advantage or equality with competitors in the realm of software development. The stretch here is you have to think of buying talent and selling software as your transaction (versus the strict definition of Arbitrage in which you are buying and selling exactly the same thing at the same time). In my example below you are buying development talent and selling software and making money on the difference.

Let's expand on the idea.

When you are making software products you are buying talent and using that talent to write quality software which can be sold. The key word here is talent. In my mind talent is composed of two elements:

  • The efficiency of a person/group to accomplish the task necessary for developing software (i.e. product management, development, QA, DevOps, etc.)
  • The cost of that person relative to the sale price of your software

Efficiency could be replaced with quality, speed, competency or any number of other adjectives which you can measure. Heck, maybe it is "number of story points completed." Cost is straight-forward and universal to measure relative to your average sales price (ASP).

Around the world you can find groups with equal efficiency (or quality, speed, etc. :) and different costs. For example, you could develop in Silicon Valley or New York City at very high prices or in Romania or India at very low prices with the same quality. Now, the way you do development might be different. Communication may be challenged, there might be timezone issues, travel will be involved. There are more challenges I'm sure which are buzzing around in your head.

If we apply some simple algebra, let's assume Talent of developers in New York is equal to T. Now let's assume I go digging and I find some amazing people in Romania who are as smart as my team in New York, but they are 50% of the cost, or .5T. Once I have them operating and efficient, if my teams are equal size I am not at a ratio of .75T. I'm more efficient at building and selling software because I've located the same resources in another place which are lower cost.

Now I will be tempted to maximize the productivity of that group so I'm as efficient as possible. Once I've done that, where does that leave me? I go find another group in another place with similar properties to keep improving T, or at least maintaining T, as my development group grows with the sale of my product.

This kind of Arbitrage is exactly what your most successful competitors are going to do. It is how they develop more software than you for the same budgets.

There are challenges to this kind of model. For example, you need to be able to manage global software development teams. (Good book on this here.) Finding vendors can also be difficult. My recommendation here is to locate 3 or 4 top vendors from reliable people you know. Give them a task to do in your area of development and/or using your product. See what it is like to work with them before you sign a larger contract.

The benefits also go beyond just cost saving. Time is a huge one. Building more software quickly and/or reacting quickly to customer needs is always good when in competitive situations. Access to new areas of talent is something I find to be extremely useful. In places like Silicon Valley or New York it is very hard to find good people. It can be easier in less competitive markets.