Tech Debt and other tech finances
Tags: programming, productivity, development, watercooler
Published: 2024-01-13 17:34:08

We all know and shudder in fear of generating more tech debt, others think that it’s not a problem.
As for me… let me bring something I learned in business school and do some parallel on finances and tech.

## Tech Debt and Tech Credit

What people usually think when they hear *tech debt* is actually *tech credit* and *tech debt* is just the work we do normally.

I argue so, because of “credit” and “debt” cards.

When you buy something with “debt”, you’re just using the money you already have.

Meanwhile, when you use “credit”, then you’re using the money you don’t have.

In tech, while money is a factor, the things we do have or do not are things like time and skill.

When you don’t have the time to do it right, then later, time plus interest will be needed to fix or even to just keep going. Same for skill, but this one can sometimes charge less interest, you can do something really complicated, but as long as it’s not seeping out, then it’s easier to change.

## Tech budgeting, tech investment, and ROI

It's still not about money, even though it is a factor.

We should have a healthy mix of juniors, mid and seniors. If a company “doesn't”, then they do, but they call juniors “seniors” and whatever other names for the rest, and it’s a good reminder that those are “moving targets” because in some places you might be a senior and come to a place where everything you know puts you at junior at best.

In any case, with a healthy mix, you can *budget* who will be doing what without wasting your *investments*.

A company might have a lot of projects to make: external, internal, some more important, some more urgent, and even some made to make a developer's life easier.

Will you just assign a “senior” to do everything? If you do, do you also pay for a candy worth cents with a 100-dollar bill?

On the other hand, would you trust a core project to a bunch of juniors? Like trying to pay for a car with coins, it probably wouldn’t go so well.

Knowing what you have and how to apply is really important, but also knowing that investments are not lost money (and in the tech case, time), it’s knowing that instead of shipping a few features now, you’ll ship less for a while and then have interests in the investments you’ve made to be able to ship more and better later.

This leads us to ROI (return on investment). This is a number you can calculate in order to choose which investments make more sense. After all, our money and time are limited.

In finances, it’s a straightforward calculation that gives you a number you can use to decide (it’s not and should not be the only one). But in tech, can you even estimate ROI on tech investments? 

For example, you could be doing 2 features now and in the future for each “sprint”. 

Or investing in refactoring or integrating some new lib, and after that maybe only 1 feature because people are still getting used to the new lib and only after that you can start doing 3 or 4 for each sprint.

But we are already bad enough to estimate things we think we “know” about, but for that, we need to estimate the current cost and future gains from it, so maybe the constant 2 features could end up getting slower and the other one could have other problems and delay more than initially estimated.

## Tech Diversification

We could say something about *tech diversification* since you can have multiple languages and frameworks running in parallel. In finance, it's always better to diversificate, since you don’t want to “have all one's eggs in one basket”, but in tech, it is a bit more tricky.

Nowadays, few companies search for *programmers*, but for *{insert language or framework} programmers*. Even without this, languages and frameworks are complicated enough that changing or maintaining multiple of them is not feasible and, COBOL being an example… might never truly die, but companies will have huge costs maintaining systems where the “it works, why change?” mentality rules.

## “The most powerful force in the universe”

Compound interests mean that you don’t need much to have huge gains or huge losses over time.

You start cutting corners a little here and there and say that the “tech debt will be solved in a coming sprint”, the sprint comes and goes, and not only was it not paid, but more were accrued.

Not only that but each time you touch something related to those, you spend more time solving basic problems, and the output goes down or you could say you start not being able to *pay* the interest until finally… *tech bankruptcy*.