Today I have been reading a lot about technical debt, and I keep seeing terms like
“… at this point they choose to take on some technical debt…”
I have never seen a programmer make this choice.
Which is not to say I have never seen a programmer take on technical debt.
Allow me to explain with another metaphor:
I have never said, “I think I will eat this piece of cake to gain some weight”
I have eaten cake. I have not watched what I ate. I have not exercised afterward. As a result I have gained weight. But it was never an intentional choice. It was just the side effects my actions. It was NOT intentional.
Likewise, I have seen programmers:
- Use bad names
- Add lines to long methods
- Add an additional If block
- Add more methods to large classes
- Comment out a section of code
- Skip writing tests
- Skip refactoring
- Ignore extracting a common interface
But I have never seen a programmer “take out a loan”.
Technical debt isn’t like a mortgage, a large decision you make with a bunch of thought. It’s more like a credit card or a bar tab. You just keep coding and coding, little by little, and then one day you realize you have a large amount of debt.
(Side note: I have quite often seen people realize that they are in debt and then actively decide not to pay off that debt; You could argue that this is a form of "intention" but deciding to keep your debt is not even close to deciding to take on debt.)
On the flip side, I see quite a lot of intention by people who say fit and slim. They tend to actively watch what they eat both quantity of food and type of food. They make a habit of exercise. As a result they tend to think that everyone else does it to. After all, you choose to eat that ice cream, right? Yes, but I didn’t choose to get fatter, I actually didn’t consider my weight at all when I ate that ice cream.
And that’s the point, when we analyze why people choose technical debt, we tend to be missing that point that the vast majority of people DON’T CHOOSE technical debt, it is a side effect of their actions, but never part of the decision.