The framing of tech debt as "paralysis" really nails it. In my experience, the most dangerous form isn't the code you know is messy — it's the operational debt that accumulates silently. Manual deployment steps, undocumented environment configs, tribal knowledge that lives in one person's head.
What I've found works: schedule a recurring "debt sprint" (even 2 hours every other week). Not to rewrite everything, but to pick the ONE thing causing the most friction right now and fix just that. Over a few months, the compound effect is massive.
The hardest part is convincing yourself it's worth doing when there's always a feature to ship. But shipping features on top of unchecked debt is like building floors on a sinking foundation — eventually you spend more time on workarounds than on actual product work.