I have a closet in the basement where when I did the vinyl plank floor, I ran out so the planks don't quite go to the back of the closet all the way. Problem? Yes? A bit ugly? Yes. But in reality the problem is 100% of the time covered by boxes and anyway I can live a happy life in this house for decades and not be affected. That's 0% tech debt.
On the other hand if my gutters are clogged, there's interest on that because the longer I wait the costlier it will be to deal with since clogged gutters can lead to basement leaks or gutters themselves detaching. Or, if my stoop is broken, that's not just an eye sore but I keep tripping on it, the faster I fix it the sooner I stop tripping. That's a high-interest debt that should be fixed asap.
In engineering, a high-rate debt could be some architectural thing that slows down the development of every single feature. You want to quickly pause features to pay this down so everything can move faster. On the other hand, some file that you never touch having some shitty code or lots of TODOs may be a very low interest debt since in practice you never touch it or are otherwise not bothered by it other than knowing that it's ugly - like my closet floor.
Engineers make two mistakes around this - fixing zero-interest debt when there's more important things to do on one hand. On the other hand, when they say "oh, product management/leadership didn't sponsor our tech debt fixing" - it's often because we fail to articulate the real cost of that problem - explaining that it's high rate and how it's costing you.
Nobody gets in shit for telling their developers to code faster.
Lots of risk telling them to fix the underlying issues so they can ship faster in the future.
The metaphor of interest was the whole reason that Ward Cunningham initially coined the term "tech debt":
"Technical Debt is a metaphor, coined by Ward Cunningham, that frames how to think about dealing with this cruft, thinking of it like a financial debt. The extra effort that it takes to add new features is the interest paid on the debt."
Maybe it is like those restaurants with dirty bathrooms. Most customers don't care, and if you get some minimum customers management thinks a bathroom makeover won't matter.
I disagree. they simply don't care because from the top down, new shiny stuff gets attention, not keeping the old stuff going.
edit: I also wanted to add this, if I do convince them of its importance, MAKE NO MISTAKE, management will agree that work must be done but it has absolutely NO BEARING on having a positive job performance. I just convinced management of something important that I have to do that I will receive no benefit from - unless it goes wrong then I'll get reprimanded.
You're making it sound like having someone quit is a blocker. Some managers see that as shedding the dead weight, and keeping in the guys who are the team players with endurance. The guy who complains about code quality suddenly leaves and all of a sudden there are no more complains about code quality, and worst case scenario you have new joiners trying to onboard and cause a good impression who don't care if code is shit because their goal is to shine.
How did you solved that problem?
- Engineering is very transparent about explaining when tech debt is slowing down development of new features
- We recognize that buggy/unreliable software hurts customer retention
- Engineering leadership has set the expectation that a significant portion of each team's time should be spent on maintenance and reliability.
If it's one of the few business that has an absolute monopoly over a certain sector in a country, then the country will gradually weaken over time, until eventually it won't be able to resist a foreign competitor.
Or at least that's what market theory suggests. Of course the period of 'self-correction' could take a few months to a few centuries to fully play out, and simultaneously overlaps with all other market participants.
Important, in the context of a hierarchy-driven development team or company, is defined first by the best way to let money flow towards the company, and second by the people who are enabled by the hierarchy to make decisions about where to allocate resources to improve that inflow of capital. While persuading someone it's momentarily important to shift from what was going to be done to what you think should be done can be one way to acquire "career capital" (Newport) and maybe move towards it being your job to do so, it doesn't change what your current job is which is basically to consistently show up and do whatever those others decide is important, and to be ok with that; slow, mediocre, gradual progress and existence, which is perfectly fine if you have other part s of your life, which you should be spending more time on anyway. If new shiny stuff gets attention, then that's part of the dysfunction of the overall system (Meadows - Thinking in Systems)
When I was early in my stupid career as an developer, I made the idiotic mistake of trying to influence decisions regarding things that didn't matter to anyone else, like accessibility, usability, and when I failed to do so put in a lot of my own personal energy to do it right anyway. That was worthless, and I got depressed, fired, and ended up homeless for a while. Do what you're paid to do, and be realistic about what that is, until you're literally swatting people away who want to pay you to do it, then you can do it the right way. Never trust companies for any reason, and don't invest too much of yourself in them unless you can guarantee positivity will come your way if you do things beyond your standard deliverables.
what's amazing is that I'm apparently in debt while owing absolutely nothing to anyone.
When you say something like "0% tech debt" seriously, do you ever stop and wonder if maybe you're off-base?
Debt needs to be serviced, if you don't need to service it, it's not debt.
What next, that feature that hasn't been implemented yet is 0% tech debt?
The main point to take away is that much of what is colloquially called tech debt does not need to be dealt with on any time horizon, while some does - and being able to distinguish between the two types is key. Were you able to get that much out of this?
And then to make the analogy work for you again - my closet IS a form of tech debt and I insist that it's "0% debt". For example, if I am going to sell the house, it might be the case that having this flawed floor would cause me to get lower offers. So I might chose to deal with this issue at some point, but there's no reason to deal with it any sooner (analogous to not being in the rush to pay off a zero-interest loan)
"Code hygiene" is not a goal but the means to a goal. The reason hygiene is good is that ideally should (1) enable you to ship faster and (2) have fewer bugs so you can focus on shipping the next thing instead.
So then there's two options - if your hygiene doesn't give you (1) and (2) then it's pointless. On the other hand, if you do have a velocity issue because of bad hygiene, then that sounds in line with your c-suite concern.
"hey boss, our code needs to be more hygienic" - nobody cares.
"hey boss, we are at 10% of possible velocity because of issues X,Y,Z, and we can be 10X faster if we take a month to fix those" - now they are listening.
If the porcelain top on my toilet breaks, I'm not in debt because I choose not to replace it.
now, I can run around and tell everyone my toilet is now causing me to have 0% debt because I have a right to say whatever I want, but words have meaning and me saying it doesn't make it so anymore than me claiming the earth is cheese has any effect on whether or not it is. Unless of course by cheese I really mean iron when I say cheese.
No no, seriously. You need a counter party to your debt. What about a divine figure?
you do know what "tech debt" is, right? In your metaphor, your top may have 0% debt because only you use the bathroom and no one cares, or it has a potentially high debt in that you receive more germs from your bathroom and get more sick, costing you money to buy medicine to keep you not sick. The debt is objective but we live in a world where finding that objective measure is infeasible.
to use your cheese metaphor, it's more like boldly claiming the earth is 35% iron. it's something you can quickly google and is acceptable through decades of study, but it also wouldn't be surprising if better tooling and measurements later on specify "it's actually 33.42% iron". Important for a geologist, splitting hairs for a casual audience.
We are very much a casual audience, and splitting hairs over a metaphor isn't that productive.
yeah, assuming you get to that point before burnout or CBF kicks in. Or maybe you never do and just retire off of corporate. I imagine that exact mentality is why so many game dev programmers burn out and chase the money they deserve in others parts of tech.
So we offered a solution to our customers, and then we could customize this by offering our own "consultant" developers. In the end, each developer had a goal to be "80% of their time billable".
Now we sometimes had to write these things called "channels", which took about 2 weeks to write. If we would have rewritten the framework behind it (which would take about 2 weeks) we could have probably sped up writing channels to less than a week! The thing was, nobody really cared if it took 2 weeks or less than a week, since the customer paid for it. My statement of 'let the customer pay for the 2 weeks anyway' never got hold (that would have probably resulted in some accountant fraud I guess, the way they set up the contract). So anyway, nobody was willing to invest this 2 weeks refactoring that would almost instantly pay itself back.
We were writing channels all the time, and it always felt like such a waste.
Sometimes in corporations, you can end up in the most crazy situations. I've seen plenty.
There is no business leader on this earth that is going to agree with 0 debt is debt. Or that choosing not to do a thing or pay for a thing implies debt.
And it gets even worse when you take it to its logical conclusion. Choosing not to fix something is apparently debt. So then if you take out a loan to fix it it's also debt?
What the poster meant is it doesn't always harm anything to leave something unfinished or imperfect. Which is true, but then they tried to squeeze "technical debt" into that and went off the rails.
words have meanings for a reason.
Inaccurate or not, it's understood by people what "tech debt" means and the point of communication is to express ideas to others. Even if it spits on the queen's english, it furfills its goals. I lack the clout and energy to try and oppose and change such ideas (and to be frank, it wouldn't make the top 50 of things I would influence if given those factors).
We have 1 poster abusing it and getting called out for it.
My point was that the burnout lies in mismatched expectations, as well as working excessively, and yes I'd agree that's probably why game devs do that. There are better avenues for "passion" than your career unless you can trade the skills you've built up in your career for whatever you want to do for work.
Edit: Additionally, if in retrospect I just said yes to the most viable incarnation of whatever the corporate overlords wanted, and stopped caring earlier about the hypothetical implications of poor technical decisions (which I should have accepted sooner weren't a significant part of my job), then the work would have just maybe got done and whether it worked or not wouldn't necessarily be my concern, and I'd have more fuel in the tank to just keep getting better and moving somewhere else.
I get to define my intent, not you. You cannot call someone out without disagreeing with the behavior or words that you're calling out. So congratulations on stating the obvious I suppose.
My thoughts are laid out above. I have nothing more to add on the subject. You win, and I apologize for failing to understand your point.