I have already written a globalization post commenting on a new book by Pankaj Ghemawat of IESE Business School in Spain called, "World 3.0." This really is an excellent read not only for the information and analysis it contains which challenge my world view (and maybe yours) but for the approach Ghemawat takes in actively seeking data to knock down his own hypotheses. Anyway, today I want to use a story that Ghemawat creates about a homemade peanut butter-making business in his apartment as an example of bad externalities to illustrate the challenge created for the business value of IT by technical debt in software: 'In my homestyle manufacturing process, I manually deshell all of the peanuts and throw the shells out my window before grinding up the peanuts and making peanut butter. In the absence of any regulations, I can throw the shells out of the window for free, so the price at which I'm willing to sell peanut butter doesn't have to account for the cost of cleaning up the mess I leave on my downstairs neighbour's balcony and on the street below. I offer you a good price and you enjoy my delicious peanut butter. Considering all of the costs and benefits "internal" to the transaction, we are both satisfied. But the "external" effects on my neighbours (not the parties to our transaction) make them decidedly unhappy. Our little transaction has a negative "externality."' Of course, my point is that technical debt in software is like that pile of peanut shells outside Ghemawat's hypothetical apartment. In a way, it's worse because it's more like a situation in which the shells are not thrown out of the window but kept in piles around the apartment. An "internal externality" if you like. At some point, living and working among the growing piles of peanut shells in the apartment is going to become uncomfortable then intolerable and then impossible. The first peanut butter buyer is not going to notice any issues with the delivered product but the hundredth buyer probably will as the trash starts to get into the finished product. Interestingly, from Ghemawat's perspective as an economist, there are two solutions to these bad externalities:
- Change ownership of the the resources involved (e.g. force Ghemawat to buy up the whole apartment block and street to internalize the bad externality) or;
- Create a regulation that changes Ghemawat's incentives (e.g. some external body creates a waste peanut shell tax or law against throwing peanut shells out of the window).
Well, the first of these options is the situation that prevails in software development but still technical debt is a problem because ownership of the problem does not come with accountability for the problem, at least in the short to medium term that drives most software development focus. So how can buyers of software development implement some sort of regulation? For internal buyers seeking business value from IT, internal IT governance has to be the answer. For external buyers, the challenge is harder. Contractual approaches are an obvious first step but how do we measure technical debt? Who could arbitrate a dispute on technical debt arising from such a contract? Is this enough of an issue to justify getting a forum together to discuss a way forward? Let me know what you think.