As I discussed in my previous article about technical debt, you should always keep what is of strategical importance for you and your company a closely guarded secret. For instance, if your business is automated trading, based upon artificial intelligence and deep learning, you’d probably want to keep your algorithms and trading robots a highly proprietary piece of code, and lock it into your safe as you leave your office for the night. However, most companies tends to also create a whole range of additional software solutions that are not of strategical importance to the company, mostly out of necessity. Our example with trading robots for instance, could include the necessity to communicate with 3 different financial database systems simultaneously – Examples here are MT4, the FIX protocol and CTrader, for then to aggregate data from all these different systems together somehow, as input to your trading robots. If such components does not exist from before, the trading company becomes forced into creating such systems, out of necessity. Hence, creating parts of your software, becomes a necessary evil, you must do, in order to facilitate for your strategic advantage.
In the above example, the database adapter has zero strategic advantage for the trading company, but is still something that must be done, because no off the shelf components exists that does this from before. Hence, a database adapter becomes a necessary requirement to make the trading robots function. The problem is that this increases the amount of proprietary code the organisation is dependent upon to function adequately. Hence, it adds to your organisation’s “technical debt”, without really contributing much, besides being a necessary stepping stone, on the way to reaching your strategic advantage.
If you however publicly release your database adapter as Open Source after initially having created it, chances are that others will recognize its beauty, and start using it. As they do, they might find errors in it, and might come up with good ideas for improving it. In addition, they might also fix these errors, improve upon your system, and send these improvements back to you as “patches”. Congratulations, you have now shared your debt, and you no longer need to carry (alone) that which you shouldn’t have carried alone in the first place anyway.
At this point, your organisation have given away zero of its unique advantage or its proprietary secrets, while at the same time is sharing the burden of maintaining crucial components with a whole range of other companies. So even though this is easily perceived as giving away something for free, what you are ipso facto giving away, is actually debt – Nothing more.
In fact, I would argue that all “non-crucial strategical components” within a company should be shared across multiple organisations this way, since we happen to know for a fact, due to game theory, that such strategies results in literally creating value out of thin air, since this is not a zero sum game. What I mean by that, is that the value you gain by giving away that which has no strategical value for your organisation, becomes more than the sum if its participants’ contributions to the system. To speak in laymen terms, one might imagine a world where the rules of math literally dictates that “2+2=5”.
To understand why, imagine a world where every single individual had to build their own roads. No public roads existed, and nobody were allows to use roads built by others. This humorous description is paradoxically a very accurate description of the state of software development today. It doesn’t take a rocket scientist to understand that this would be a highly impractical world. Non-strategic software for your organisation holds the same value for you as roads do in this “parallel world”. Allowing others to use your roads, makes little or no change to your ability to move on these same roads, to sell your services and goods, whatever they may be. While at the same time the burden to maintain these roads, keeping them clean, and fix potholes in these roads over time, can be shared among the rest of society. Facts are, a large portion of your software portfolio today is probably infrastructure software, having little or no strategical value to your company per se, and could easily be “given away for free”, without you actually loosing anything – Except debt of course.
In fact, any financial scientist can tell you the exact same thing, since according to the rule of finance, value is created literally out of thin air, as a transaction between two people occurs – Since afterwards, they both feel happier than what they felt like before, and they have both been given something they want more than whatever they had to give away to acquire that which they were given.
So the ability to create value out of thin air, by giving away something you don’t want (debt), and share it with the rest of the world, is not something new in fact – It’s as old as the idea of trading is in fact. It’s just not commonly applied to the creation of software. In case you doubt it’s impossible to create things out of thin air, then do the following …
Ask an expert in fractional reserve banking if value can be “magically” created out of nothing …
Then realise, this isn’t anything new – We’ve done this for thousands of years in fact. It only implies applying the principles of game theory and finance to the subject of software development …