I can’t tell how often I’ve been in a meeting with a financial manager, trying to explain the technical considerations of a project. To be honest, there have been times when it has been really, really hard to keep it technically simple enough, while still being accurate. That’s the lucky times. The bad times is when I’ve completely failed and left the room without any funding at all. I read a blog post (in Swedish) written by a colleague of mine that opened my eyes for the term technical dept. It was first formulated by Ward Cunningham. Martin Fowler has written a great article that explains the concept.
Reading a bit more, following links and searching I found a number of ideas on how to describe software development in financial terms.
A Macroeconomic View
Starting with a macroeconomic view on the subject the first thing that is notable is the rate of inflation. Inflation can be described as how quickly we reduce the value of work done in the past. In the most stable parts of the software development world (Cobol banking systems?) the inflation rate stays at around 4% making investments loose half their value in about 20 years. Business applications like those I work with are subject to an inflation rate at around 15% where they loose half their value in 5 years. In the fastest moving parts of the business, which would be web and mobile apps, I’d estimate the inflation rate to 30%-50%, making anything loose half the value in 1-2 years.
Intimately tied to the inflation is the rate of interest. Aaron Erickson calculates it to 32.4% for an example in Enron Financing, which is in line with my inflation estimates.
Any country having double digit inflation rates and interests is considered to be in a state of crisis, but that is obviously normal in the software world.
The key concept when describing projects in financial terms is technical debt. The working system is an asset, but underneath the surface there are technical issues with the code that is a debt. The interest payed for this debt is the extra effort needed for maintenance. The interest rate does not has such a wide spread as the inflation (how quickly the sytem is outdated), which means that in some parts of the industry the interest rate is higher than inflation and in some parts not. In those parts with a low inflation, the systems will have long life times and there will be a lot of maintenance done. For those system it is well spent money to keep the debt down.
In the fast moving parts of the industry like the web two different approaches can be taken. The debt can be kept low while keeping evolving the product to counter inflation. Another approach is to deliberately take on a high debt, as the inflation is even higher than the interest rate. This corresponds to quick-and-dirty development to release something that works and then start from scratch with the next version, based on the latest technology.
The business systems that I work with are not cool enough to have room for the latter approach, nevertheless technical debt is unfortunately common.
High Equity Ratio Gives Flexibility
Just like in the world of economics, a high equity ratio (that is, a low debt) gives flexibility. With a high equity ratio, there is room available for taking credits (making technical shortcuts) when needed. If the credits are high, there is no flexibility and a lot of the effort spent is lost on interest (small maintenance tasks taking a lot of time). Steve McConnell discusses various kind of debts and different situations where it may or may not be motivated to take on more debt.
Aaron Erickson writes about Enron Financing in software projects. Just like Enron did hide their debts in special “off-balance sheet entities” the technical debt is not immediately visible to people outside of the development team. In the Enron scandal the auditors approved the balance sheet despite the hidden entities. In a technical project the sad truth is that there are no auditors. At least not as I know about. Have you ever had your code reviewed by someone external?
With a financial description the software development world is subject to a high inflation rates, high debts and (nearly) total lack of auditors assuring quality of reported numbers. If the software development community was a country, we would be first in line to IMF asking for crisis funding. What’s so astonishing though is that our IMF (that is the CFO) keeps on paying, without realising that if the technical debt was kept low from the beginning, there would be much better return on investments.
The only way to remedy this situation is through communication. The non technical decision makers have to be informed when technical debt is incurred. As developers we need to put more pride into our work and stop silently accepting increasing technical debt.