[{"data":1,"prerenderedAt":115},["ShallowReactive",2],{"content-technical-debt-is-a-prompt-now":3},{"id":4,"title":5,"articleTitleSource":6,"articleValid":7,"articleWarnings":8,"body":9,"comments":7,"date":99,"date_updated":8,"description":100,"extension":101,"icon":102,"image":103,"language":104,"meta":105,"navigation":7,"path":106,"publish-to":107,"readingTime":108,"seo":110,"stem":111,"titleEasterEgg":8,"titleLines":112,"topics":113,"translationKey":111,"__hash__":114},"content/technical-debt-is-a-prompt-now.md","Technical Debt Is a Prompt Now","h1",true,null,{"type":10,"value":11,"toc":95},"minimark",[12,25,28,31,34,40,43,46,49,52,55,58,61,74,77,80,83,86,89,92],[13,14,15,16,24],"p",{},"In ",[17,18,23],"a",{"href":19,"rel":20,"target":22},"https://martinfowler.com/articles/what-is-code.html",[21],"nofollow","_blank","\"What Is Code?\"",", Unmesh Joshi argues that LLMs force us to distinguish two roles of code.",[13,26,27],{},"Code is instructions for machines. That part is becoming cheaper to produce. But code is also a conceptual model: the vocabulary, names, boundaries, relationships, abstractions, and invariants through which people understand a system.",[13,29,30],{},"That second role becomes more important, not less, when LLMs enter the workflow. A good codebase gives the model stable concepts to follow. Clear names, well-shaped boundaries, tests, types, and invariants become part of the context. They act as a harness.",[13,32,33],{},"There is a second-order consequence here:",[13,35,36],{},[37,38,39],"strong",{},"Technical debt used to be friction. Now it is a prompt.",[13,41,42],{},"Before LLMs, bad architecture mostly hurt by slowing people down. A confusing codebase made every change more expensive. Developers had to read more, remember more accidental complexity, ask more questions, and work around old compromises. Technical debt was a tax on future change.",[13,44,45],{},"That is still true. But it is no longer the whole story.",[13,47,48],{},"Technical debt could already compound through human habit and local precedent. Developers copy nearby code. New code mirrors old code. Bad decisions propagate by example. LLMs do not introduce this dynamic — they accelerate it. What used to spread at the speed of human attention now spreads at the speed of generation.",[13,50,51],{},"With LLM-assisted development, the existing codebase is not only the thing being changed. It is also evidence: names, modules, interfaces, tests, call patterns, and local conventions all suggest what kind of code belongs here.",[13,53,54],{},"In a healthy codebase, this is useful. The codebase narrows the search space. It teaches the model the local vocabulary. It makes some outputs more likely and others less likely.",[13,56,57],{},"But the reverse is also true.",[13,59,60],{},"In a degraded codebase, the model does not see \"technical debt\" as debt. It sees examples. It sees precedent. It sees a style to continue.",[13,62,63,64,67,68,70,71,73],{},"A vague boundary becomes a pattern.",[65,66],"br",{},"\nA misleading name becomes vocabulary.",[65,69],{},"\nA fake abstraction becomes architecture.",[65,72],{},"\nA missing invariant becomes permission.",[13,75,76],{},"Traditional technical debt is a cost-of-change problem. It makes future work slower. Generative technical debt is a probability-distribution problem. It changes what gets written next.",[13,78,79],{},"That is the multiplier. Bad structure leads to worse context. Worse context leads to worse generated code. Worse generated code further degrades the structure. The system begins to reproduce its own confusion.",[13,81,82],{},"This is related to cognitive debt, but not identical to it. Cognitive debt accumulates when a team uses abstractions it no longer understands. Generative debt accumulates when a codebase contains confused concepts that models are likely to continue.",[13,84,85],{},"Cognitive debt is about what the team no longer understands. Generative debt is about what the model is now likely to reproduce.",[13,87,88],{},"If code is context, architecture is model steering. That changes the value of refactoring.",[13,90,91],{},"A refactoring that clarifies a domain concept does not merely help the next human reader. It improves the prompt surface of the codebase. A test that encodes an invariant does not merely catch regressions. It teaches the model what must not be violated. A well-named boundary changes what future generated code is likely to assume.",[13,93,94],{},"Bad architecture used to make the next change harder. Now it can teach machines to make the next change wrong in the same way.",{"title":96,"searchDepth":97,"depth":97,"links":98},"",2,[],"2026-05-14","Technical debt used to be friction. With LLMs, it becomes a prompt: bad architecture can teach machines to repeat the same mistakes.","md","streamline-ultimate-color:programming-hold-code-2","og-image.jpg","en",{},"/technical-debt-is-a-prompt-now","all",{"wordCount":109},540,{"title":5,"description":100},"technical-debt-is-a-prompt-now","1","ai","-FY8NVoxs6XqvuQ0-u1nZnOrCL33cRq5i6BbiTGGdF0",1779095098384]