Overcoming the Fundamental Misunderstanding About Technical Debt

This ad is not shown to multipass and full ticket holders
React Summit US
React Summit US 2025
November 17 - 21, 2025
New York, US & Online
The biggest React conference in the US
Learn More
In partnership with Focus Reactive
Upcoming event
React Summit US 2025
React Summit US 2025
November 17 - 21, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

I have watched well-meaning programmers, technical leaders, and their managers pour their hearts and souls into managing so-called "technical debt" and I worry that they're not getting very far. I believe that a fundamental misunderstanding from the very beginning has led almost everyone down a dark, painful road towards bitter disappointment, endless bickering, failed projects, mounting Imposter Syndrome, and debilitating learned helplessness. Fortunately, I think we can reverse these trends, at least for ourselves, with a combination of techniques from Extreme Programming and general psychology. No, really! You might be surprised to learn that everyone truly wants the same thing, but that some complexities of the human mind have made that difficult to see. Overcoming this fundamental misunderstanding fits squarely into the category of "simple, not easy", so if we want to make progress, then we'd better start now!

This talk has been presented at TechLead Conference 2025: AI in Orgs, check out the latest edition of this Tech Conference.

FAQ

The common misunderstanding about technical debt is that it's merely about postponing work, which will cost more later, rather than understanding it as a risk management strategy that involves keeping the code aligned with the evolving understanding of the system.

Technical debt affects software projects by increasing the cost of future features, creating disagreements about priorities, and causing dysfunction in teams as they struggle to manage it effectively.

Ward Cunningham intended the technical debt metaphor as a way to explain the importance of updating program design to match emerging understanding, not as an excuse for writing poor code.

Programmers and managers often disagree about technical debt because they have different priorities, with programmers focusing on design quality and managers emphasizing feature delivery.

Technical debt can be managed effectively by continuously realigning code with emerging understanding, treating it as a shared risk, and investing time and effort regularly in design and refactoring.

Test-Driven Development (TDD) helps manage technical debt by making refactoring a routine part of programming, thus encouraging the continuous improvement of code design.

Yes, technical debt is inevitable in software development due to the need to deliver features incrementally and the fact that initial understanding of problems is often partial.

Unmanaged technical debt can lead to projects grinding to a halt as the cost of changes becomes too high, impacting the team's ability to deliver new features.

The key to handling technical debt, according to JB Rainsberger, is to treat it as an ongoing, shared risk that requires continuous attention and effort from the entire project team.

JB Rainsberger is a speaker and expert on software development, particularly known for his insights on technical debt.

J. B. Rainsberger
J. B. Rainsberger
19 min
18 Sep, 2025

Comments

Sign in or register to post your comment.
  • J. B. Rainsberger
    J. B. Rainsberger
    jbrains.ca
    Si quiere comentar en español, es posible que voy a comprenderle. :)
Video Summary and Transcription
JB Rainsberger discusses the impact of technical debt, emphasizing the cost of delaying essential work and its implications on feature delivery. Reflecting on past attempts to address technical debt and the diverse interpretations of its meaning, highlighting the challenges in managing technical debt and the resulting dysfunction in teams. Exploring the true nature of technical debt as a reflection of current understanding and the ongoing risk of a mismatch between programmers and code. Managing technical debt without specialized techniques or tools, addressing distortions, and collaborating to face ongoing risks. Improving code alignment and understanding reduces future regrets. Embracing regular code realignment reduces resistance to necessary changes. Test-driven development ingrains managing technical debt in daily programming.

1. Understanding Technical Debt

Short description:

JB Rainsberger discusses the impact of technical debt, emphasizing the cost of delaying essential work and its implications on feature delivery.

Hi, I'm JB Rainsberger. And if you'd like to get in touch with me to ask a question after this talk, then here are some ways that you can find me. Overcoming the fundamental misunderstanding about technical debt. What you probably learned about technical debt before is that there's a bunch of work that we should do now, but we're going to do later. Because we can't do it now, but we hope we'll be able to do it later. I promise we'll do it later. But because we're going to do it later, it's actually going to cost more to do it later than it would cost to do it now. And the longer we wait, the more it's going to cost. And all this can be understood like we're borrowing against our future capacity to deliver features and the longer we wait to do that work, the more the interest is going to accumulate on that debt until we reach the point where the interest is so high that now we're getting into arguments about whether to do now the work that we deferred from earlier or to do new things that you've asked us to do now. And that's why we can't ship your feature right now.

2. Navigating Technical Debt Variations

Short description:

Reflecting on past attempts to address technical debt and the diverse interpretations of its meaning, highlighting the challenges in managing technical debt and the resulting dysfunction in teams.

I tried about a decade ago to sound the alarm about the relationship between allowing complication to increase in code and our inability to forecast the cost of future features. I thought I was going to solve the problem forever, but of course I didn't. It turns out that self-righteous arrogance doesn't actually change people's behavior, even if you have a neat gimmick and do a dramatic performance. So I'd like to try to do better this time.

What kind of technical debt is your technical debt? Different people have very different ideas about what technical debt means. The metaphor has really evolved in the way people think about it. There's been a lot of divergence among people. Some people think of it as something as simple as, well, we don't know any better and we're going to learn and it's going to be better later, and that's why the design is not as good now as we hoped it would be.

I'm not here to tell you that the way you think about technical debt is wrong, per se, but you have to admit, the fact that we don't agree on what technical debt means leads to a lot of disagreements about the priorities of managing technical debt and that leads to a bunch of dysfunction. In fact, some of that dysfunction is like the programmers yelling at the managers for not giving them the resources they need to do their job, or the managers yelling at the programmers for not taking the deadlines seriously enough, or even programmers yelling at each other, telling them to stop over-engineering when, in some cases, many I'd say, the people accused of over-engineering are merely trying to take technical debt seriously as a problem.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

A Framework for Managing Technical Debt
TechLead Conference 2023TechLead Conference 2023
35 min
A Framework for Managing Technical Debt
Top ContentPremium
Today's Talk discusses the importance of managing technical debt through refactoring practices, prioritization, and planning. Successful refactoring requires establishing guidelines, maintaining an inventory, and implementing a process. Celebrating success and ensuring resilience are key to building a strong refactoring culture. Visibility, support, and transparent communication are crucial for addressing technical debt effectively. The team's responsibilities, operating style, and availability should be transparent to product managers.
Principles for Scaling Frontend Application Development
React Summit 2023React Summit 2023
25 min
Principles for Scaling Frontend Application Development
Top Content
Watch video: Principles for Scaling Frontend Application Development
This Talk discusses scaling front-end applications through principles such as tearing down barriers, sharing code in a monorepo, and making it easy to delete code. It also emphasizes incremental migration, embracing lack of knowledge, and eliminating systematic complexity. The Talk highlights the use of automation in code migration and the importance of removing barriers to enable smoother code migration.
Fighting Technical Debt With Continuous Refactoring
React Day Berlin 2022React Day Berlin 2022
29 min
Fighting Technical Debt With Continuous Refactoring
Top Content
Watch video: Fighting Technical Debt With Continuous Refactoring
This Talk discusses the importance of refactoring in software development and engineering. It introduces a framework called the three pillars of refactoring: practices, inventory, and process. The Talk emphasizes the need for clear practices, understanding of technical debt, and a well-defined process for successful refactoring. It also highlights the importance of visibility, reward, and resilience in the refactoring process. The Talk concludes by discussing the role of ownership, management, and prioritization in managing technical debt and refactoring efforts.
Building High-Performing Cross-Cultural Teams
React Day Berlin 2022React Day Berlin 2022
25 min
Building High-Performing Cross-Cultural Teams
Top Content
The Talk discusses the importance of effective communication and collaboration in cross-cultural teams. It emphasizes the impact of culture on communication and performance evaluation. The speaker highlights the differences between low-context and high-context communication styles and the need to understand cultural nuances. It also explores the challenges of giving feedback in multicultural teams and suggests ways to improve communication and create a feedback culture. The influence of language on communication and the importance of transparency and honesty in feedback are also discussed.
Scale Your React App without Micro-frontends
React Summit 2022React Summit 2022
21 min
Scale Your React App without Micro-frontends
This Talk discusses scaling a React app without micro-frontend and the challenges of a growing codebase. Annex is introduced as a tool for smart rebuilds and computation caching. The importance of libraries in organizing code and promoting clean architecture is emphasized. The use of caching, NxCloud, and incremental build for optimization is explored. Updating dependencies and utilizing profiling tools are suggested for further performance improvements. Splitting the app into libraries and the benefits of a build system like NX are highlighted.
A Quick and Complete Guide to Measuring Your Tech Debt and Using the Results
TechLead Conference 2023TechLead Conference 2023
27 min
A Quick and Complete Guide to Measuring Your Tech Debt and Using the Results
Watch video: A Quick and Complete Guide to Measuring Your Tech Debt and Using the Results
This Talk discusses the measurement and interpretation of tech lead, focusing on tech debt. Tech debt is a tool to temporarily speed up development but can have negative consequences if not managed properly. Various tech debt metrics, including heuristic metrics and second-tier metrics, can help identify and manage tech debt. Tech debt interest is crucial for measuring the impact of tech debt and allows for prioritization. It is important to collect and analyze tech debt metrics to ensure software and team health.

Workshops on related topic

From Engineer to Leader: A Workshop for First-Time Tech Leaders
TechLead Conference 2024TechLead Conference 2024
144 min
From Engineer to Leader: A Workshop for First-Time Tech Leaders
Workshop
Andrew Murphy
Andrew Murphy
Transitioning from an individual contributor role to a leadership position, especially in the fast-paced tech industry, is hugely challenging. Most new leaders don't receive any training at all in the first 10 years of their new responsibilities.Our comprehensive workshop is designed to assist new and emerging tech leaders in understanding their new roles and gaining the skills to make them confident, happy and effective leaders.
Managers Are From Mars, Devs Are From Venus
TechLead Conference 2024TechLead Conference 2024
111 min
Managers Are From Mars, Devs Are From Venus
Workshop
Mo Khazali
Mo Khazali
A Developer’s Guide to Communicating, Convincing, and Collaborating Effectively With Stakeholders
It’s a tale as old as time - collaboration between developers and business stakeholders has long been a challenge, with a lack of clear communication often leaving both sides frustrated. The best developers can deeply understand their business counterparts’ needs, effectively communicate technical strategy without losing the non-technical crowd, and convince the business to make the right decisions. Working at a consultancy, I’ve both failed and succeeded in architecting and “selling” technical visions, learning many lessons along the way.Whether you work at a product company, are a consultant/freelancer, or want to venture beyond just being a developer, the ability to convince and clearly communicate with stakeholders can set you apart in the tech industry. This becomes even more important with the rise of GenAI and the increasingly competitive developer market, as problem-solving and effective communication are key to positioning yourself.In this workshop, I’ll share real-world examples, both good and bad, and guide you through putting the theory into practice through dojos.
The Future of Engineering Teams: Humans Guide, Agents Code
TechLead Conference 2025: AI in OrgsTechLead Conference 2025: AI in Orgs
103 min
The Future of Engineering Teams: Humans Guide, Agents Code
Workshop
Konrad Bujak
Konrad Bujak
Most teams are still using AI as a glorified autocomplete, but the future is already here. I'll show you how engineering teams work when coding agents handle implementation while humans focus on guidance and oversight.I have built coding agents that have our team guidelines embedded - no more style guides or coding standards docs. You'll see agents that automatically follow our Next.js 15 patterns, Nx monorepo structure, shadcn/ui conventions, and more of our tech stack, while humans make small corrections that improve all future work.This isn't about replacing engineers - it's about scaling the possibilities of your team through agent multiplication instead of hiring and restructurizations. I'll demonstrate the workflow where the agent implementation is followed by human refinement, creating consistent quality that doesn't depend on human variability.
Out of the Frying Pan, Into the Fire: A Manager's Guide to Helping New Developers Thrive
TechLead Conference 2024TechLead Conference 2024
35 min
Out of the Frying Pan, Into the Fire: A Manager's Guide to Helping New Developers Thrive
Workshop
Andrew Coleburn
Andrew Coleburn
Onboarding to a new project can be difficult, no matter your background and experience. But it can be especially challenging for new developers straight out of school or a coding bootcamp. Drawing on personal experience as a bootcamp grad and JavaScript consultant, this talk will discuss tips and strategies for managers to help the new developers on their teams get their bearings in an unfamiliar codebase, so they can make more of an impact, faster!