Vibe Code Is Legacy Code ![rw-book-cover](https://blog.val.town/og-image.png?title=Vibe+code+is+legacy+code) ## Metadata - Author: [[Steve Krouse]] - Full Title: Vibe Code Is Legacy Code - Category: #articles - Document Note: --- tags: [#AI, #TechDebt, #VibeCoding] - #AIAssistedCode - #LegacyCode - #TechDebt Author: Steve Krouse Source: Val Town Blog Reference: https://blog.val.town/vibe-code date created: 2025-08-16 12:30 --- # Title: Vibe code is legacy code ## Table of Contents: - [📝 Summary](#-summary) - [📖 Main Content](#-main-content) - [🗒️ Notes](#️-notes) - [📖 References](#-references) - [🗣️ Paraphrase](#️-paraphrase) - [📰 Newsletter](#-newsletter) - [✅ Action Items](#-action-items) - [🧪 Hypotheses](#-hypotheses) - [📊 Methodology](#-methodology) - [❓ Questions](#-questions) - [🔮 Future Research](#-future-research) - [💡 Implications](#-implications) - [🧠 Learning Styles Assessment](#-learning-styles-assessment) - [📊 Accessibility Assessment](#-accessibility-assessment) - [🌍 DEIB Assessment](#-deib-assessment) - [✅ Logical validity](#-logical-validity) - [🔍 DARVO Analysis](#-darvo-analysis) - [🔍 SEO Evaluation](#-seo-evaluation) - [🎯 Conclusion](#-conclusion) --- ## ​ Summary: Steve Krouse explores the concept of **"vibe coding"**, a term by Andrej Karpathy describing AI-assisted coding where developers effectively *don’t even notice the code*. While this style accelerates prototyping, Krouse warns it rapidly accrues tech debt and risks turning into incomprehensible legacy code—especially dangerous when non-programmers try to maintain it. --- ## ​ Main Content: Vibe coding is framed as a spectrum of understanding—from full clarity to utter obscurity. It’s acceptable for quick, disposable projects, but dangerous for anything intended to endure. Krouse likens it to giving a credit card to a child: thrilling at first, but the bill inevitably arrives. He urges caution, especially for long-term, production-oriented development. Val Town’s AI assistant, Townie, exemplifies both ends of this spectrum, depending on how it’s wielded. Ultimately, theory-building remains essential. ### ​​ Notes - **Definition & Risk** - Vibe coding: coding where you “forget the code exists” — coined by Andrej Karpathy. :contentReference[oaicite:0]{index=0} - Unknown code = tech debt; even with access, comprehension is hard. :contentReference[oaicite:1]{index=1} - **Use Cases** - Ideal for throwaway or small projects—examples include: calculating growth rates, rating puzzles, even personal apps like a proposal. :contentReference[oaicite:2]{index=2} - Fun and fast, but only safe when maintenance isn’t needed. - **Spectrum of Understanding** - More understanding = less “vibe”; non-programmers fall heavily into the risky zone. :contentReference[oaicite:3]{index=3} - **Credit Card Analogy** - A non-programmer maintaining vibe code is like giving a child a credit card without explaining debt—initial excitement leads to eventual overwhelm. :contentReference[oaicite:4]{index=4} - Only fixes then involve AI again—akin to rolling debt. :contentReference[oaicite:5]{index=5} - **Maintainability** - For serious, long-term code, tighter control is necessary—as advised by Karpathy. :contentReference[oaicite:6]{index=6} - **Val Town’s Approach** - Townie enables both vibe coding and surgical, controlled coding. - Emphasizes use awareness and tradeoff management. :contentReference[oaicite:7]{index=7} - **Optimism & Caution** - AI won’t replace developer understanding—programming remains theory-driven. :contentReference[oaicite:8]{index=8} --- ## ​ References: - Krouse, S. (2025, July 30). *Vibe code is legacy code.* Val Town Blog. :contentReference[oaicite:9]{index=9} --- ## ​​ Paraphrase: 1. **Original**: “When you vibe code, you are incurring tech debt as fast as the LLM can spit it out.” **Paraphrase**: Vibe coding accumulates technical debt at breakneck speed—just as quickly as the AI can generate lines of code. 2. **Original**: “If you don’t understand the code, your only recourse is to ask AI to fix it for you, which is like paying off credit card debt with another credit card.” **Paraphrase**: Without understanding the code, you’ll likely rely on AI to fix problems—like paying credit card debt with yet another card. --- ## ​ Newsletter: **🤖 Vibe Coding: Fast, Fun, But Risky** This week, we’re spotlighting a fantastic essay by Steve Krouse—“Vibe code is legacy code.” He unpacks the buzzworthy concept of *vibe coding*: whipping up AI-generated projects so quickly you almost forget they're code. It’s exhilarating for prototypes but perilous if treated as permanent. He likens unmaintained AI code to giving a child a credit card—a fun thrill until the bill arrives. And for mission-critical work? He urges developers to keep a tight leash on AI, balancing creative freedom with clarity, intent, and maintainability. A cautionary tale worth sharing with your team. 🔗 [Read it on Val Town](https://blog.val.town/vibe-code) --- ## ​ Action Items: - Develop a **workshop for contributors** on balancing AI speed with maintainability—using vibe coding as a case study. - Update WordPress community docs to include **AI usage guidelines**, referencing the credit card analogy. - As an OSPO advocate, propose **risk frameworks for AI-generated PRs**, distinguishing throwaway prototypes from production-level code. - Share the essay with new contributors to spark dialogue about **code ownership and long-term clarity**. --- ## ​ Hypotheses: - H1: Projects started via vibe coding without understanding see higher bug rates post-deployment. - H2: Awareness training on AI trade-offs reduces maintenance overhead by 30%. - H3: Developer confidence in AI rises when theory-building practices are integrated. ### ​ Methodology: - Track maintenance issues in projects created with vibe coding vs. traditional code. - Conduct A/B tests with and without AI caution training. - Survey developer sentiment pre- and post-awareness intervention. ### ​ Questions: - How often do AI-generated projects transition into production? - What’s the threshold of project size before vibe coding becomes unmanageable? - How do developers perceive the transition from prototype to legacy? ### ​ Future Research: - Measure long-term costs of AI-assisted vs. human-written code. - Explore best onboarding practices for AI-generated contributions. - Develop tooling that flags “vibe code” for better auditability. ### ​ Implications: - Helps craft **responsible AI policies** in open-source projects. - Encourages **education-first approaches** when using AI coding helpers. - Supports **sustainable coding practices** in learner and production environments. --- ## ​ Learning Styles Assessment: - **Visual**: Minimal visuals; could benefit from diagrams mapping the vibe spectrum. *(Improve)* - **Aural**: No podcasts or voice notes; an audio version could serve auditory learners. *(Improve)* - **Verbal**: Rich analogies and narrative tone present. *(Present)* - **Physical**: Lacks interactive demo; a hands-on tutorial would help. *(Improve)* - **Logical**: Strong cause-effect structure and comparisons. *(Present)* - **Social**: No communal prompts; adding discussion links to Val Town could foster collaboration. *(Improve)* - **Solitary**: Opportunities for personal reflection exist; a checklist could support solo learners. *(Improve)* - **Naturalistic**: Not applicable to this technical topic. --- ## ​ Accessibility Assessment: - Text-based—easy to screen-read; code and quotes are accessible. *(Present)* - Visual alt-text not detailed for chart image—needs improvement. *(Improve)* - Keyboard navigation is likely fine; consider ARIA labels for interactive zones. *(Present/Improve)* --- ## ​ DEIB Assessment: - Language is neutral and inclusive. *(Present)* - Could include perspectives from non-native English speakers to broaden relevance. *(Improve)* - Structure is digestible; strengthen support for neurodiverse readers with more bulleting and chunking. *(Improve)* --- ## ​ Logical validity: - **Strengths**: - **Causal reasoning**: fast AI output → rapid tech debt. - **Balanced nuance**: differentiates between throwaway vs. maintainable code. - **Suggestions**: Adding concrete maintenance metrics would strengthen claims. --- ## ​ DARVO Analysis: No DARVO—this is a clear, self-awar - Summary: Updates and articles from the Val Town team - URL: https://blog.val.town/vibe-code Despite [widespread](https://simonwillison.net/2025/Mar/19/vibe-coding/) [confusion](https://simonwillison.net/2025/May/1/not-vibe-coding/), Andrej Karpathy [coined "vibe coding"](https://x.com/karpathy/status/1886192184808149383?lang=en) as a kind of AI-assisted coding where you **"forget that the code even exists."** ![](https://pbs.twimg.com/profile_images/1296667294148382721/9Pr6XrPB.jpg) [Andrej Karpathy](https://twitter.com/karpathy) [@karpathy](https://twitter.com/karpathy) Good post! It will take some time to settle on definitions. Personally I use "vibe coding" when I feel like this dog. My iOS app last night being a good example. But I find that in practice I rarely go full out vibe coding, and more often I still look at the code, I add complexity slowly and I try to learn over time how the pieces work, to ask clarifying questions etc. Your browser does not support the video tag. [Posted Mar 23, 2025 at 6:06PM](https://twitter.com/karpathy/status/1903870973126045712) #### Legacy code We already have a phrase for code that nobody understands: **legacy code**. Legacy code is universally despised, and for good reason. But why? You have the code, right? Can't you figure it out from there? Wrong. Code that nobody understands is tech debt. It takes a lot of time to understand unfamiliar code enough to debug it, let alone introduce new features without also introducing bugs. Programming is fundamentally [*theory building*](https://pages.cs.wisc.edu/~remzi/Naur.pdf), not producing lines of code. We know this. This is why we make fun of business people who try to measure developer productivity in lines of code. When you vibe code, you are incurring tech debt as fast as the LLM can spit it out. Which is why vibe coding is *perfect* for prototypes and throwaway projects: It's only legacy code if you have to maintain it! #### Prototypes & throwaway code I've happily vibe coded apps to: I don't needed to continue developing those apps, so it hasn't been a problem that I don't understand their code. These apps are also very small, which means that I haven't incurred that much debt if I need to jump in and read the code at some point. I was able to vibe code these apps way faster than I could've built them, and it was a blast. #### Vibe coding is a spectrum Vibe coding is on a spectrum of how much you understand the code. The more you understand, the less you are vibing. ![shapes at 25-07-30 10.32.53.png](https://imagedelivery.net/iHX6Ovru0O7AjmyT5yZRoA/a93f8e81-c9b8-4277-6d19-525d2b8d5400/public) Simply by being an engineer and asking for a web app with a persistent database, you are already vibing less than than a non-programmer who asks for an "app" without understanding the distinction between a web app and a native app, or how persistent data storage works. The worst possible situation is to have a non-programmer vibe code a large project that they intend to maintain. This would be the equivalent of giving a credit card to a child without first explaining the concept of debt. As you can imagine, the first phase is ecstatic. *I can wave this little piece of plastic in stores and take whatever I want!* Which is a lot like *AI can build anything now! Nobody needs to learn how to code! Look at what it just made for me!* But if you wait a month, you'll get the credit card bill. *Did I actually need to buy all those things? How will I get myself out of this hole?* It's similar for the vibe coder. *My code broken. What do all these files and folders even do? How will I ever get this fixed? Can I get a refund for the $400 I spent vibe coding?* If you don't understand the code, your only recourse is to ask AI to fix it for you, which is like paying off credit card debt with another credit card. #### Serious coding with AI in 2025 If you're building something serious that you intend to maintain in 2025, Andrej has the right of it: > [Keep] a very tight leash on this new over-eager junior intern savant with encyclopedic knowledge of software, but who also bullshits you all the time, has an over-abundance of courage and shows little to no taste for good code. And emphasis on being slow, defensive, careful, paranoid, and on always taking the inline learning opportunity, not delegating. > > #### How we approach building for AI At Val Town, we've built AI into our product in dozens of ways. [Townie](https://townie.val.run/) is our AI asisstant that agentically reads & writes code, runs it, views the logs, and keeps iterating until it's done. [Townie](https://townie.val.run/) is an awesome tool for vibe coding. I heartily recommend it to folks who understand these tradeoffs. I use it to vibe code sometimes. Other times I keep in on a tight leash as it makes surgical edits to a project I care about. Both are fun and useful. Coding with AI is changing so quickly that it's hard to know what tomorrow will bring, but I'm confident that theory building will remain central to the activity of building complex software. Our technical expertise will still be relevant! And I'm optimistic that AI will continue to make programming better in suprising ways. But if you know any non-programmers spending thousands of dollars vibe coding their billion dollar app idea today, please send them this post. Vibe coding is not going to get them where they want to go. They're going to have to learn to use their human eyes to read the code 😱, and learn that sometimes it's easier to start over with building a well-written code base from scratch than to fix a legacy one that nobody understands. *This essay is a distillation of a talk I gave last month, [The Role of the Human Brain in Programming](https://www.youtube.com/watch?v=1WC8dxMC4Xw). Thanks to my fiance Emily for listening to me rant about these topics for months, and for filming my talk. Thanks Malte and Rippling for hosting the talk.* *Thanks Geoffrey Litt, Jimmy Koppel, Max McDonnell, Tom MacWright, Charmaine Lee, Brent Jackson, and Dan Shipper for feedback on this post. Thanks Simon Willison and Andrej Karpathy for being voices of reason amidst all the AI hype and naysayers.*, Vibe Code Is Legacy Code, Steve Krouse, 01k2fr24939q5kb41s0wye1ccz.