Allan Ramos
← Blog

The technical debt shape of AI-assisted sprints

AI-assisted sprints often finish more tickets. They also finish more almost-solutions: three ways to call the same service, tests that assert mocks, and READMEs that describe intent the code no longer has. The burndown looks healthy. The estate quietly becomes harder to change.

This is not an argument to ban assistants. It is an argument to recognize a debt shape that traditional velocity metrics do not show.

Debt you will feel later

Conceptual debt—unclear domain language—hurts more than messy formatting. Generated names that almost match the ubiquitous language fracture the model. customerProfile, ClientInfo, and PartyDTO may all be “fine” until reporting, risk, and product disagree about which one is authoritative.

Another pattern: skipping the hard integration and shipping a happy path the model invented. The debt shows up in incident channels, not in the sprint review. Shallow tests give false confidence: green pipelines that never exercised the partner’s real error codes or the batch job that runs only on month-end.

Duplication is especially seductive. The assistant can recreate a similar helper in every repository faster than a human would. Each copy drifts. Cross-cutting fixes become archaeology.

How the incentives go wrong

If leaders reward ticket count and story points without inspecting consolidation work, teams rationally optimize for visible output. AI makes that optimization cheaper. The organization then concludes “AI made us faster” while cost of change rises.

Review culture can amplify the problem. Rubber-stamping large generated diffs because “it looks consistent” misses structural duplication. Consistency of style is not consistency of design.

Budget cleanup as delivery

Treat consolidation of AI-shaped duplication as a first-class backlog item. Reserve capacity every sprint or every release train for deletion, merging modules, and strengthening characterization tests around risky areas.

Make “reduce parallel implementations of X” a measurable outcome, not a rainy-day wish. If every sprint only adds, the multiplier eventually multiplies cost of change.

Practices that keep debt visible

Maintain a living map of capabilities and their systems. When a new module appears that overlaps an existing capability, that is a review fail—not a clever reuse of a prompt.

Track hotspots: files touched often, services with rising defect density, domains with many near-synonyms. Use that signal to aim cleanup. AI can help with the mechanical merge once humans decide which implementation is canonical.

Prefer shared libraries and paved-road templates over copy-paste generation. The assistant should instantiate the house pattern, not invent a new dialect each time.

A healthier definition of speed

Speed worth celebrating is shorter time from intent to safe, operable change—not more commits per day. AI can support that definition when design ownership and cleanup capacity travel with it. Without those, you are financing tomorrow’s rewrite with today’s demo metrics.

How this plays out in delivery

In practice, the difference between a slide and an operable change is whether teams can point to owners, controls, and evidence under pressure. That pressure arrives as an incident, an audit question, a vendor outage, or a steering committee that wants to scale a demo. If those answers are improvisations, the feature was never production-ready—regardless of how polished the interface looked in a pilot.

Delivery leaders should therefore reserve explicit capacity for the boring work: contracts, runbooks, evaluation packs, fallback paths, and decision records. Boring work is what makes ambitious AI and platform change survivable. Skipping it to protect a velocity chart is how organizations repurchase the same programme every three years under a new name.

Questions worth asking in design review

Who owns the outcome after launch? What fails first when the dependency is slow or wrong? Which data classes are in motion, and under which policy? What would make us pause or roll back within an hour? What evidence will we examine weekly to know quality is holding?

If a proposal cannot answer those questions without hand-waving, keep the scope in a controlled experiment. Experiments are useful. Unowned production traffic is not an experiment—it is a risk acceptance you forgot to record.

Working habits that keep quality compounding

Write short decision records when you cross a boundary. Keep a living list of invariants for each critical capability. Review with a checklist that targets blast radius rather than style. Instrument silent failure modes, not only HTTP errors. Revisit model, prompt, and vendor changes with the same seriousness as database migrations.

None of these habits require a new framework brand. They require leadership attention and a refusal to confuse demos with operable systems. Teams that practice them can adopt assistants, agents, and new platforms without losing the enterprise plot.

A note on language and accountability

Replace slogans with operational nouns: capability, owner, control, fallback, evidence, exit. Language shapes governance. Teams that speak only in broad transformation slogans struggle to assign accountability. Teams that speak in capabilities can fund, staff, measure, and stop work when the evidence says stop.

Hold that vocabulary in architecture forums and programme boards. Over time it becomes the shared spine that lets software development absorb AI tools without fragmenting into disconnected experiments.

Closing

The through-line is simple: treat AI-related change as architecture and operations work, not as magic. Make ownership explicit, put uncertainty where blast radius is acceptable, measure what can silently fail, and refuse to scale what you cannot run. That discipline is how software organizations get durable value from new techniques instead of a temporary theatre of progress.

How this plays out in delivery

In practice, the difference between a slide and an operable change is whether teams can point to owners, controls, and evidence under pressure. That pressure arrives as an incident, an audit question, a vendor outage, or a steering committee that wants to scale a demo. If those answers are improvisations, the feature was never production-ready—regardless of how polished the interface looked in a pilot.

Delivery leaders should therefore reserve explicit capacity for the boring work: contracts, runbooks, evaluation packs, fallback paths, and decision records. Boring work is what makes ambitious AI and platform change survivable. Skipping it to protect a velocity chart is how organizations repurchase the same programme every three years under a new name.

Questions worth asking in design review

Who owns the outcome after launch? What fails first when the dependency is slow or wrong? Which data classes are in motion, and under which policy? What would make us pause or roll back within an hour? What evidence will we examine weekly to know quality is holding?

If a proposal cannot answer those questions without hand-waving, keep the scope in a controlled experiment. Experiments are useful. Unowned production traffic is not an experiment—it is a risk acceptance you forgot to record.

Working habits that keep quality compounding

Write short decision records when you cross a boundary. Keep a living list of invariants for each critical capability. Review with a checklist that targets blast radius rather than style. Instrument silent failure modes, not only HTTP errors. Revisit model, prompt, and vendor changes with the same seriousness as database migrations.

None of these habits require a new framework brand. They require leadership attention and a refusal to confuse demos with operable systems. Teams that practice them can adopt assistants, agents, and new platforms without losing the enterprise plot.

A note on language and accountability

Replace slogans with operational nouns: capability, owner, control, fallback, evidence, exit. Language shapes governance. Teams that speak only in broad transformation slogans struggle to assign accountability. Teams that speak in capabilities can fund, staff, measure, and stop work when the evidence says stop.

Hold that vocabulary in architecture forums and programme boards. Over time it becomes the shared spine that lets software development absorb AI tools without fragmenting into disconnected experiments.

Closing

The through-line is simple: treat AI-related change as architecture and operations work, not as magic. Make ownership explicit, put uncertainty where blast radius is acceptable, measure what can silently fail, and refuse to scale what you cannot run. That discipline is how software organizations get durable value from new techniques instead of a temporary theatre of progress.

A debt inventory for AI-shaped codebases

Inventory near-duplicate modules, glossary collisions, tests that never leave mocks, undocumented generated services, and “temporary” prompt hacks in production. Score each item by blast radius and change frequency. You will usually find that a small set of hotspots creates most of the drag.

Share the inventory with product leaders in euros or delay language: “this duplication adds two weeks to every product launch in claims.” Abstract debt talk loses. Outcome talk funds cleanup.

Sprint mechanics that keep debt in check

Reserve a fixed percentage of each sprint for consolidation, or run a hardening sprint after every two feature sprints when AI volume is high. Require that new capability work cite the canonical module it will extend. If none exists, creating the canonical module is part of the story—not an optional refactor ticket.

Definition of done should include deletion of the superseded path when a replacement ships. AI makes it easy to add a third path “just for now.” Definition of done should make “just for now” expensive.

Coaching the team

Teach engineers to spend assistant time on consolidating toward the house pattern, not on inventing fresh structure. Celebrate pull requests that remove lines and merge duplicates. In AI-accelerated teams, deletion is a senior skill.

Managers should inspect a sample of generated diffs weekly for structural smells, the same way they might sample customer calls. What you inspect becomes culture. What you ignore becomes the estate.

Putting it into the operating rhythm

None of this sticks if it appears only in a one-off workshop. Put the checkpoints into existing forums: design authority, risk intake, sprint reviews, and operations reviews. Assign named owners. Review the same metrics until the behaviour becomes muscle memory. Tools change. Operating rhythm is how architecture survives tool change.

When you expand scope—new channel, new market, new model provider—re-run the same questions rather than assuming last quarter’s controls still fit. Scope expansion is where quiet regressions hide. A short re-certification beats a long incident report.

What good looks like after six months

You can name owners for each AI-touched capability. You can show evaluation trends and cost trends. You can pause a feature without heroics. Engineers can explain the boundaries without opening a chat history. Sponsors hear outcome language and evidence, not only model brand names. That is the standard. Aim for it deliberately.

Field notes from programmes that stuck

The programmes that keep their gains share a few unglamorous traits. They name a single accountable owner for each capability touched by AI or platform change. They keep a thin evidence pack current: what the feature does, which data it uses, how quality is measured, and how to pause it. They review cost and quality on a fixed weekly or biweekly cadence instead of waiting for a quarterly surprise.

They also refuse to expand scope while basic controls are missing. That refusal feels slow in the week it happens and fast in the year it saves. Sponsors accept it more readily when you offer a dated path: we can widen to segment B when override rates stay under threshold and fallback drills pass. Conditional speed is still speed—just adult speed.

Common failure modes to watch for

Eternal pilots that serve real customers without on-call. Prompt edits in production with no version history. Retrieval corpora that mix clearance levels. Success metrics that count messages sent instead of outcomes achieved. Architecture reviews that only admire diagrams after contracts are signed. Cleanup work that is always scheduled after this critical launch.

Each failure mode is preventable with a small control. The danger is not that teams cannot invent controls. The danger is that delivery pressure makes skipping them look rational until the incident report is written.

A ninety-day improvement plan

Days 1 to 30: inventory AI-touched journeys, owners, and gaps in logging, evaluation, and fallback. Publish the list without blame. Days 31 to 60: close the top three blast-radius gaps; stand up a short design-authority slot for new use cases; put cost alerts in place. Days 61 to 90: run one controlled promotion from pilot to production using a written exit report; kill or contain at least one unmanaged experiment.

At day ninety, present evidence trends rather than tool logos. Leaders can fund what they can see. Visibility is a prerequisite for sustained investment in quality.

How this article should change Monday morning

Pick one capability you touch. Write the owner, the invariant that must not break, the fallback if the AI dependency fails, and the metric you will check next week. Share it with the people who can correct you. Then make one concrete backlog item that turns a gap into a control.

Long articles do not improve estates. Changed operating habits do. Use this piece as a mirror, not as literature. If nothing in your plan of record moves after reading it, the reading did not count.