Scrum Master Toolbox Podcast: Agile storytelling from the trenches

AI Assisted Coding: Swimming in AI - Managing Tech Debt in the Age of AI-Assisted Coding | Lou Franco


Listen Later

AI Assisted Coding: Swimming in AI - Managing Tech Debt in the Age of AI-Assisted Coding

In this special episode, Lou Franco, veteran software engineer and author of "Swimming in Tech Debt," shares his practical approach to AI-assisted coding that produces the same amount of tech debt as traditional development—by reading every line of code. He explains the critical difference between vibecoding and AI-assisted coding, why commit-by-commit thinking matters, and how to reinvest productivity gains into code quality.

Vibecoding vs. AI-Assisted Coding: Reading Code Matters

"I read all the code that it outputs, so I need smaller steps of changes."

Lou draws a clear distinction between vibecoding and his approach to AI-assisted coding. Vibecoding, in his definition, means not reading the code at all—just prompting, checking outputs, and prompting again. His method is fundamentally different: he reads every line of generated code before committing it. This isn't just about catching bugs; it's about maintaining architectural control and accountability. As Lou emphasizes, "A computer can't be held accountable, so a computer can never make decisions. A human always has to make decisions." This philosophy shapes his entire workflow—AI generates code quickly, but humans make the final call on what enters the repository. The distinction matters because it determines whether you're managing tech debt proactively or discovering it later when changes become difficult.

The Moment of Shift: Staying in the Zone

"It kept me in the zone. It saved so much time! Never having to look up what a function's arguments were... it just saved so much time."

Lou's AI coding journey began in late 2022 with GitHub Copilot's free trial. He bought a subscription immediately after the trial ended because of one transformative benefit: staying in the flow state. The autocomplete functionality eliminated constant context switching to documentation, Stack Overflow searches, and function signature lookups. This wasn't about replacing thinking—it was about removing friction from implementation. Lou could maintain focus on the problem he was solving rather than getting derailed by syntax details. This experience shaped his understanding that AI's value lies in removing obstacles to productivity, not in replacing the developer's judgment about architecture and design.

Thinking in Commits: The Right Size for AI Work

"I think of prompts commit-by-commit. That's the size of the work I'm trying to do in a prompt."

Lou's workflow centers on a simple principle: size your prompts to match what should be a single commit. This constraint provides multiple benefits. First, it keeps changes small enough to review thoroughly—if a commit is too big to review properly, the prompt was too ambitious. Second, it creates a clear commit history that tells a story about how the code evolved. Third, it enables easy rollback if something goes wrong. This commit-sized thinking mirrors good development practices that existed long before AI—small, focused changes that each accomplish one clear purpose. Lou uses inline prompting in Cursor (Command-K) for these localized changes because it keeps context tight: "Right here, don't go look at the rest of my files... Everything you need is right here. The context is right here... And it's fast."

The Tech Debt Question: Same Code, Same Debt

"Based on the way I've defined how I did it, it's exactly the same amount of tech debt that I would have done on my own... I'm faster and can make more code, but I invest some of that savings back into cleaning things up."

As the author of "Swimming in Tech Debt," Lou brings unique perspective to whether AI coding creates more technical debt. His answer: not if you're reading and reviewing everything. When you maintain the same quality standards—code review, architectural oversight, refactoring—you generate the same amount of debt as manual coding. The difference is speed. Lou gets productivity gains from AI, and he consciously reinvests a portion of those gains back into code quality through refactoring. This creates a virtuous cycle: faster development enables more time for cleanup, which maintains a codebase that's easier for both humans and AI to work with. The key insight is that tech debt isn't caused by AI—it's caused by skipping quality practices regardless of how code is generated.

When Vibecoding Creates Debt: AI Resistance as a Symptom

"When you start asking the AI to do things, and it can't do them, or it undoes other things while it's doing them... you're experiencing the tech debt a different way. You're trying to make changes that are on your roadmap, and you're getting resistance from making those changes."

Lou identifies a fascinating pattern: tech debt from vibecoding (without code review) manifests as "AI resistance"—difficulty getting AI to make the changes you want. Instead of compile errors or brittle tests signaling problems, you experience AI struggling to understand your codebase, undoing changes while making new ones, or producing code with repetition and tight coupling. These are classic tech debt symptoms, just detected differently. The debt accumulates through architecture violations, lack of separation of concerns, and code that's hard to modify. Lou's point is profound: whether you notice debt through test failures or through AI confusion, the underlying problem is the same—code that's difficult to change. The solution remains consistent: maintain quality practices including code review, even when AI makes generation fast.

Can AI Fix Tech Debt? Yes, With Guidance

"You should have some acceptance criteria on the code... guide the LLM as to the level of code quality you want."

Lou is optimistic but realistic about AI's ability to address existing tech debt. AI can definitely help with refactoring and adding tests—but only with human guidance on quality standards. You must specify what "good code" looks like: acceptance criteria, architectural patterns, quality thresholds. Sometimes copy/paste is faster than having AI regenerate code. Very convoluted codebases challenge both humans and AI, so some remediation should happen before bringing AI into the picture. The key is recognizing that AI amplifies your approach—if you have strong quality standards and communicate them clearly, AI accelerates improvement. If you lack quality standards, AI will generate code just as problematic as what already exists.

Reinvesting Productivity Gains in Quality

"I'm getting so much productivity out of it, that investing a little bit of that productivity back into refactoring is extremely good for another kind of productivity."

Lou describes a critical strategy: don't consume all productivity gains as increased feature velocity. Reinvest some acceleration back into code quality through refactoring. This mirrors the refactor step in test-driven development—after getting code working, clean it up before moving on. AI makes this more attractive because the productivity gains are substantial. If AI makes you 30% faster at implementation, using 10% of that gain on refactoring still leaves you 20% ahead while maintaining quality. Lou explicitly budgets this reinvestment, treating quality maintenance as a first-class activity rather than something that happens "when there's time." This discipline prevents the debt accumulation that makes future work progressively harder.

The 100x Code Concern: Accountability Remains Human

"Directionally, I think you're probably right... this thing is moving fast, we don't know. But I'm gonna always want to read it and approve it."

When discussing concerns about AI generating 100x more code (and potentially 100x more tech debt), Lou acknowledges the risk while maintaining his position: he'll always read and approve code before it enters the repository. This isn't about slowing down unnecessarily—it's about maintaining accountability. Humans must make the decisions because only humans can be held accountable for those decisions. Lou sees potential for AI to improve by training on repository evolution rather than just end-state code, learning from commit history how codebases develop. But regardless of AI improvements, the human review step remains essential. The goal isn't to eliminate human involvement; it's to shift human focus from typing to thinking, reviewing, and making architectural decisions.

Practical Workflow: Inline Prompting and Small Changes

"Right here, don't go look at the rest of my files... Everything you need is right here. The context is right here... And it's fast."

Lou's preferred tool is Cursor with inline prompting (Command-K), which allows him to work on specific code sections with tight context. This approach is fast because it limits what AI considers, reducing both latency and irrelevant changes. The workflow resembles pair programming: Lou knows what he wants, points AI at the specific location, AI generates the implementation, and Lou reviews before accepting. He also uses Claude Code for full codebase awareness when needed, but the inline approach dominates his daily work. The key principle is matching tool choice to context needs—use inline prompting for localized changes, full codebase tools when you need broader understanding. This thoughtful tool selection keeps development efficient while maintaining control.

Resources and Community

Lou recommends Steve Yegge's upcoming book on vibecoding. His website, LouFranco.com, provides additional resources.

About Lou Franco

Lou Franco is a veteran software engineer and author of Swimming in Tech Debt. With decades of experience at startups, as well as Trello, and Atlassian, he's seen both sides of debt—as coder and leader. Today, he advises teams on engineering practices, helping them turn messy codebases into momentum.

You can link with Lou Franco on LinkedIn and visit his website at LouFranco.com.

...more
View all episodesView all episodes
Download on the App Store

Scrum Master Toolbox Podcast: Agile storytelling from the trenchesBy Vasco Duarte, Agile Coach, Certified Scrum Master, Certified Product Owner

  • 4.7
  • 4.7
  • 4.7
  • 4.7
  • 4.7

4.7

179 ratings


More shows like Scrum Master Toolbox Podcast: Agile storytelling from the trenches

View all
Economist Podcasts by The Economist

Economist Podcasts

4,177 Listeners

HBR IdeaCast by Harvard Business Review

HBR IdeaCast

1,843 Listeners

The Diary Of A CEO with Steven Bartlett by DOAC

The Diary Of A CEO with Steven Bartlett

8,969 Listeners

On Purpose with Jay Shetty by iHeartPodcasts

On Purpose with Jay Shetty

27,632 Listeners

Fiction - Comedy Fiction by The Sunset Explorers

Fiction - Comedy Fiction

6,445 Listeners

TRUMP100 by Sky News

TRUMP100

91 Listeners

Think Fast Talk Smart: Communication Techniques by Matt Abrahams, Think Fast Talk Smart

Think Fast Talk Smart: Communication Techniques

808 Listeners

Scrum.org Community Podcast by Scrum.org

Scrum.org Community Podcast

12 Listeners

A Bit of Optimism by Simon Sinek

A Bit of Optimism

2,189 Listeners

The Agile Daily Standup - AgileDad by AgileDad ~ V. Lee Henson

The Agile Daily Standup - AgileDad

29 Listeners

Coaching Real Leaders by Harvard Business Review / Muriel Wilkins

Coaching Real Leaders

668 Listeners

Huberman Lab by Scicomm Media

Huberman Lab

29,265 Listeners

Product Thinking by Melissa Perri

Product Thinking

146 Listeners

Agile Mentors Podcast from Mountain Goat Software by Brian Milner and Guests

Agile Mentors Podcast from Mountain Goat Software

44 Listeners

The Mel Robbins Podcast by Mel Robbins

The Mel Robbins Podcast

19,998 Listeners