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:
Weight.
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.
2 comments:
I have taken such a loan. To make a long story short: Due to time restrictions I used very very bad name spaces. Unfortunately that code still lives. It will come back and haunt Mr.
I often think "I know a better way to write this, but I'm not going to do it right now." That sounds intentional.
Also, I often think "I see duplication/coupling/etc., but I don't see how to fix it. I will make do. I wish I was a better programmer." That also feels intentional.
Post a Comment