Last week, I sat in a roadmap planning meeting that turned into a heated debate. My engineering director pushed for “addressing tech debt” in Q2. Our VP of Product pushed back: “We always say we need to pay down tech debt, but features keep shipping fine. What’s really urgent here?”
The engineering team bristled. The product team looked frustrated. And I realized: we were using the same words but speaking completely different languages.
The Term “Tech Debt” Has Become Meaningless
Here’s what I’ve learned after 16 years scaling engineering orgs: the term “technical debt” is so overloaded that it actively prevents communication rather than enabling it.
What engineers often mean:
- “This code is hard to work with and I want to refactor it”
- “We took shortcuts that are now slowing us down”
- “We need to invest in architecture for future scale”
- “We’re one outage away from disaster”
What product often hears:
- “We want to spend time on things customers won’t see”
- “We didn’t do our job right the first time”
- “We need to pause feature work indefinitely”
The problem? Sometimes it’s truly all of the above. Sometimes it’s none of the above. The ambiguity creates a trust gap.
The Engineering Perspective: Zero Tolerance Mindset
I’ve worked with brilliant engineers who genuinely believe the only acceptable amount of technical debt is zero. They see every shortcut as a moral failing. They feel undervalued when product partners don’t prioritize technical excellence.
And I get it. When you’re deep in the code, you see the consequences daily. The workarounds. The fragile systems. The fear of touching certain modules because “nobody knows how they work anymore.”
The Product Perspective: Tolerance for Tradeoffs
But I’ve also learned from great product leaders that technical debt isn’t inherently bad. Sometimes it’s the right strategic choice to ship fast, learn from customers, and iterate—even if it means code that needs rework later.
The business has higher tolerance for technical debt than engineers do, because the business measures different things: customer value, revenue, market position. Not code elegance.
The tension isn’t wrong. It’s necessary. But the conversation is broken.
Honeycomb’s Insight: “Anything But Tech Debt”
I came across Honeycomb’s engineering blog post titled “Anything But Tech Debt” and it crystallized something I’d been feeling:
The term is too broad to be useful.
Instead of lumping everything into “tech debt,” they advocate for specific, business-focused labels:
- Performance optimization (we’re losing customers to slow load times)
- Security hardening (we’re exposed to compliance risk)
- Scalability preparation (we’ll hit limits at 10x growth)
- Observability gaps (we can’t diagnose production issues fast enough)
- Architectural evolution (our monolith prevents team autonomy)
Notice the difference? Each label makes the business impact obvious. Each one has different urgency and different stakeholders who care.
When my team stopped saying “tech debt” and started saying “we need observability before Black Friday to prevent revenue loss,” product not only understood—they championed it.
What We’re Doing Differently
At my current company, we’ve started categorizing work more explicitly:
- Foundation work - things that enable future velocity (tooling, CI/CD, dev environment)
- Risk reduction - things that prevent bad outcomes (security, compliance, disaster recovery)
- Scale preparation - things that prevent future bottlenecks (database optimization, architecture evolution)
- Feature work - things customers see
We still have debates about priorities. But we’re debating the same thing now, not past each other.
My Question for You
What terms does your team use instead of “tech debt”?
How do you bridge the communication gap between engineering and product?
I’m curious if others have found categorization systems that work, or if you’ve taken completely different approaches. What makes technical work “real” to non-technical stakeholders in your org?