Get AI summaries of any video or article — Sign up free
The "right way" to vibe code (engineers, please watch) thumbnail

The "right way" to vibe code (engineers, please watch)

Theo - t3․gg·
5 min read

Based on Theo - t3․gg's video on YouTube. If you like this content, support the original creators by watching, liking and subscribing to their content.

TL;DR

“Vibe coding” is not one thing; it’s used to describe multiple workflows that differ in whether developers read and understand the generated code.

Briefing

Vibe coding isn’t a shortcut to skipping engineering—it’s a way to skip the parts of engineering you don’t need to keep. The core claim is that “vibe coding” works best when it’s used to generate throwaway, legacy, or low-stakes code (prototypes, one-off scripts, UI scaffolding, quick utilities) that solves a real problem without demanding deep ownership. When that same approach is applied to production-critical systems that require careful debugging and long-term maintenance, it predictably collapses—because copying code without reading it can’t replace engineering judgment.

A major obstacle is that people use incompatible definitions of “vibe coding.” Some mean plain-English prompting that writes code without developers reading it; others mean ignoring code entirely; others mean non-developers generating code via AI; and still others mean simple autocomplete inside an IDE. Those modes sit on different points of a spectrum: how much the user understands and how much they actually read the code. The transcript argues that most arguments about vibe coding fail because participants are talking past each other—criticizing “tab completion” while defending “agentic coding,” or dismissing “prompt-only” workflows while assuming they’re the same thing.

The speaker draws a sharp distinction between agentic coding and vibe coding. Agentic coding uses tools to inspect a codebase and propose changes, but vibe coding is defined as what happens when the developer doesn’t meaningfully read the resulting code afterward—copying error messages into a prompt box rather than tracing the underlying logic. Under this lens, the “right way” to vibe code is not to treat it as a replacement for engineers, but as a productivity tool for the large fraction of software work that is inherently disposable. For every line that ships, many more lines are written, tested, and deleted; vibe coding fits that reality.

Several examples illustrate the sweet spot: generating an SVG-to-PNG converter for video editing workflows, building small browser-based utilities, and creating quick tooling for content pipelines and benchmarks. The argument is that these tasks are often solvable with code, but not worth the time and attention required to design and maintain a polished solution. In those cases, vibe coding helps ship useful outcomes faster—without requiring the developer to become deeply invested in the generated implementation.

The transcript also tackles the “dependency” critique. It argues that developers who dislike package sprawl should not be surprised that vibe coding can reduce external dependencies by generating tailored solutions instead of installing generic libraries. Still, it concedes that vibe coding can create its own maintenance risks: if the generated code needs changes later, developers may have to rewrite or patch it anyway. That’s why the speaker insists vibe coding should not be used to compensate for not knowing how to code. The real danger is emotional: tools can make people feel unblocked without learning, creating a long-term skill gap.

Finally, the manifesto rejects two extremes. AI tools won’t eliminate the need for engineers; better tools can make the same experts more productive, not replace them. Likewise, dismissing AI as useless ignores the practical value of generating code you don’t want to read—especially when the goal is to solve small, annoying problems quickly and throw the result away when it stops being useful.

Cornell Notes

The transcript argues that “vibe coding” is most valuable when it’s used for throwaway or legacy-style code—prototypes, one-off scripts, and UI scaffolding—where the goal is to solve a problem quickly rather than to deeply own every line. A key reason debates go nowhere is that people use different definitions of vibe coding (prompt-only, non-dev AI coding, IDE autocomplete, or agentic coding), even though those modes differ in how much the user reads and understands the code. The speaker distinguishes agentic coding (tools inspect and propose changes) from vibe coding (the developer doesn’t meaningfully read the generated code afterward). The practical takeaway: vibe coding can speed up work that doesn’t need long-term maintenance, but it cannot replace learning how code works or debugging production-critical systems.

Why does the transcript say “vibe coding” debates often fail before they start?

Because the term is used for incompatible workflows. One camp treats vibe coding as plain-English prompting that writes code without developers writing code directly; another treats it as ignoring code entirely; another frames it as non-developers generating code via AI; and another equates it with IDE autocomplete/tab completion. Those modes don’t overlap in how much the user understands or reads the code, so criticisms and defenses talk past each other.

What’s the difference between agentic coding and vibe coding in this framework?

Agentic coding uses prompts plus tools to inspect files, look up information, and propose changes in a codebase. Vibe coding is defined as what happens when the developer doesn’t meaningfully read the generated code afterward—copying error messages back into the tool rather than tracing the underlying logic. In short: agentic coding can be careful; vibe coding is the “don’t read much after” subset.

When does vibe coding become genuinely useful according to the transcript?

When the generated code is disposable: throwaway scripts, prototypes, benchmarks scaffolding, and UI boilerplate that supports a short-lived goal. The speaker claims most software work is already throwaway—many lines never ship—so vibe coding aligns with how development actually happens. Examples include building quick utilities (like converting SVGs to PNGs for video editing) and generating benchmark tooling where the core logic matters more than perfect long-term readability.

What’s the transcript’s warning about using vibe coding incorrectly?

Using it to avoid learning or to bypass debugging for production-critical systems. The speaker argues that if someone leans on AI because they don’t know how to solve the problem, they’re “screwed” long-term: they may ship something that later breaks, and they won’t have the skill to fix it. The danger isn’t code generation itself; it’s comfort with not knowing.

How does the transcript respond to the “vibe coding is dead weight when things break” critique?

It reframes the goal. If the workflow generates code that’s meant to be thrown away or treated as legacy, then “things break” is less catastrophic because the code isn’t expected to be deeply maintained. But if the workflow is used for code that must be owned, debugged, and evolved, then the critique is valid—vibe coding can’t replace engineering judgment.

What does the transcript claim about package dependencies and tools like Leftpad?

It argues that installing packages for small utilities is often a symptom of developers wanting solutions without writing details. If vibe coding can generate the needed behavior directly, it can reduce external dependencies. The transcript uses Leftpad as a meme example: the functionality is tiny, and modern JavaScript includes alternatives, so fewer people need to install such packages when tools can generate the same behavior on demand.

Review Questions

  1. Where does the transcript place “vibe coding” on the spectrum of how much a developer reads and understands code, and why does that matter for debugging?
  2. What conditions make generated code “safe” to treat as throwaway or legacy, and what conditions make it risky?
  3. How does the transcript’s distinction between agentic coding and vibe coding change the way you should evaluate claims that AI will replace engineers?

Key Points

  1. 1

    “Vibe coding” is not one thing; it’s used to describe multiple workflows that differ in whether developers read and understand the generated code.

  2. 2

    Agentic coding (tool-assisted codebase changes) is not the same as vibe coding (copying/pasting without meaningful review afterward).

  3. 3

    Vibe coding is most effective for throwaway, legacy, or low-stakes code—prototypes, one-off scripts, and UI scaffolding—where long-term ownership isn’t the point.

  4. 4

    The approach fails when applied to production-critical systems that require real debugging and maintenance, because copying code can’t replace engineering judgment.

  5. 5

    AI tools can create a dangerous comfort with not knowing; the transcript warns against using them as a substitute for learning how code works.

  6. 6

    Dependency complaints can be reframed: vibe coding can reduce external packages by generating tailored solutions instead of installing generic libraries.

  7. 7

    Better AI tools don’t eliminate engineers; they can make skilled engineers more productive, similar to how improved farming tech increases output without turning everyone into a farmer.

Highlights

The transcript defines vibe coding as the “below the bar” behavior: not reading the generated code much and treating error messages as inputs to more prompting rather than tracing the logic.
A central claim is that most code is already disposable—so vibe coding fits the reality of throwaway development rather than trying to replace long-term engineering ownership.
The manifesto insists the real danger is emotional: tools can unblock people without building understanding, creating long-term skill gaps.
The argument reframes package sprawl: if developers want solutions without details, vibe coding can generate those solutions directly instead of pulling in dependencies.
The transcript rejects both extremes—AI won’t replace engineers, and AI isn’t useless—because the value depends on how much the developer reads, learns, and owns the resulting code.

Topics

Mentioned