Making Sound Technical Investments

7 min read

Recently technical debt has been getting more discussion. That is a good thing. Just like in the "real world" strategic debt can be useful. Historically, investing in advanced education such as college or trade school has been a sound investment. Similarly investing in a primary residence has also been a sound investment. In both scenarios we often take on an amount of debt to create opportunity that would not normally have been available.

Similarly, we invest in technologies. When we can not afford the opportunity cost up front, or an ongoing development cost, we take on technical debt. If done properly and invested appropriately this can be a wise strategic decision. On the other hand if one takes on too much debt (financial or technical) one runs the risk of defaulting.

"Default may occur if the debtor is either unwilling or unable to pay his or her debt."
Wikipedia

Managing technical debt should come down to assessing debt on two initial criteria, willingness and ability.

Willingness

First, is this a debt I am willing to pay off? Initially one might think that the answer to this should be "Yes I am willing to pay off this debt." In regards to client needs and who pays down the debt then there is a certain amount of required diligence to inform the affected parties of the implications of failure. In that case this is an ethical issue and full disclosure of risk is important. However, don't get confused around where debt is accruing, and the type of debt that is accruing.

For example, when in a research and development phase financial debt (or some other debt) is accrued while avoiding technical debt. That is, during research and development new products and/or solutions with no immediate return on that investment are explored and/or developed. In this process ongoing costs(debts) such as; salaries, and electricity are likely being payed or accruing. If assessed through an improper lens it is easy to confuse where debt(or cost) is accruing. Here I claim R&D debt is non-technical in nature because there is no obligation of using any technology researched or developed in a production environment where there would be an obligation to manage any and all technical debt accrued as part of using said technologies. If the R&D process is successful technical debt has been avoided while likely creating some other debt. Unless, of course, the total cost of R&D was payed in full. The goal is that the value created via the technology developed is enough to pay off the non-technical debt or provide enough strategic value that the risk was worth the reward. However if R&D does not produce viable technology zero technical debt has accrued with (hopefully) the added benefit of progressing domain knowledge; even if that knowledge is what doesn't work. Every time the full cost is not paid in advance a certain amount of debt of a certain type is accrued. Similarly most, if not all, technologies have ongoing costs that need to be paid over time or technological debt will accrue. These situations should be duly noted and appropriate mitigation strategies should be setup to ensure staying ahead of the accruing debt.

Willingness to pay down debt comes down to assessing and identifying what types of debt would be accrued assuming certain actions. If certain types of debts are considered more risky than others then a shift in priorities to accrue less risky debts may be necessary. Alternatively, if it is an option, pay the total cost up front. This leads us to assessing risk, one way is by assessing our ability to pay down debt.

Ability

Accurately assessing ones own ability should effect willingness to accrue debts of a certain type. For example a financial investor assumes financial risk because that's what their asset allocation (ability) is. In other words, the financial investor has enough financial capital that the risk involved in accruing financial debt is often worth the reward. Technologists on the other hand have capital in their technical ability. When a technologist's technical ability doesn't appropriately match the type of technical debt that would accrue it is necessary assess the risk associated with moving forward with a given solution that may accrue debt. This is where ego can be most harmful. Technologists investing in a new, to them at least, technology are either paying the cost up front (eg. training, research, development) or they need to be aware of the risk involved (eg. site downtime, dissatisfied customers or clients, and data corruption) if the new tech doesn't pay off. In the event that the technical investment does not pan out the technical debt has accrued and without an appropriate willingness and ability to pay down that debt it is outstanding and someone will eventually pay for that debt. The reason why ego is most harmful is because an ego that is too fragile results in missed opportunities for learning and collaboration. Learning opportunities are created by acknowledging when there is a lack of knowledge and being open to the possibility that an accepted worldview or mental map may not necessarily align with reality. Similarly if one thinks they already know something, collaboration from others is often undervalued and not sought out. The result is stagnation and lack of investment in technological capital. This affects one's ability to pay down technical debt, and limits the technologists effectiveness.

"I am out of step with present conditions. When the game is no longer played your way, it is only human to say the new approach is all wrong, bound to lead to trouble, and so on. On one point, however, I am clear. I will not abandon a previous approach whose logic I understand ( although I find it difficult to apply ) even though it may mean foregoing large, and apparently easy, profits to embrace an approach which I don't fully understand, have not practiced successfully, and which possibly could lead to substantial permanent loss of capital."
Warren Buffet

Moving forward

In either scenario (willingness and ability) the tech community is often not held accountable for the technical debt that it has created. Think of the number of "rescue projects" that exist out there or the number of essential features that are punted to "later phases" of a project. There are a myriad of reasons why these things occur but if it is due to technical debt and an inability or unwillingness to pay down that debt we as a tech community are creating a lot of outstanding debt that someone has to pay down, often via other means. This is quite similar to the financial meltdown that occurred in 2007-2008, due to credit default swaps, and more specifically due to the amount of outstanding debt. The tech community needs to start preventing additional non-strategic debt and at the same time paying down existing technical debt. We do that by assessing the type of debts and our willingness and ability to pay down those debts. But, how do we start doing that?

  • Invest in technological capital. This should help build a solid ego. Look to build an appropriate amount of breadth and depth.
  • Work on personal ability to admit not knowing.
  • Read material outside the technical community, diversity is a good thing. This helps realize that the tech community is not special, we exhibit the same patterns and problems of other communities.

In this process it is helpful to read. It is especially helpful to read topics outside one's realm of expertise, and those viewpoints contrary to one's own. A solid ego is helpful to weather the vast amount of change and the ridiculous tides of hype in the tech community. Just make sure to build a healthy ego and not hubris.