Unlocking the Future of Code: How to Vibe Code in Prod (and Not Break Everything!)

image of travel planning tools

Erik Schulntz, a researcher at Anthropic focused on coding agents, is here to talk about a subject near and dear to his heart: vibe coding. If you've heard the term, you might associate it with engineers using AI tools like Cursor or Copilot for extensive code generation. But Eric, who remarkably had Claude write all his code for two months after breaking his hand, argues that's not quite the full picture.

What is Vibe Coding, Really?

True vibe coding, according to Andre Carpathy's definition, is when you "fully give into the vibes, embrace exponentials, and forget that the code even exists". The crucial part? "Forget the code even exists".

Initially, this concept brought excitement beyond the engineering world, allowing non-coders to suddenly build entire apps. It was revolutionary! However, this freedom came with downsides: people coding without knowing what they were doing, leading to issues like maxed-out API usage or bypassing subscriptions. The successful early cases of vibe coding were often low-stakes, like building video games or fun side projects where bugs were acceptable.

Why We MUST Care About Vibe Coding

So, why bother with something that seems suited only for "toy examples"? The answer lies in the exponential growth of AI capabilities. The length of tasks AI can handle is doubling every seven months. While an AI generating an hour's worth of code might still allow for intimate human review today, what happens when it generates a day's or even a week's worth of work?

Eric emphasizes that to leverage this exponential growth, we cannot remain in "lockstep" with traditional review methods. We must find a way to "responsibly give into this".

Learning to Trust: The Compiler Analogy

Think about compilers. In their early days, developers might have scrutinized the assembly output to ensure it matched their manual coding. But that approach doesn't scale for complex systems. At some point, you simply have to trust the system.

The same applies to AI-generated code. The challenge for the software industry is: "how will we vibe code in prod and do it safely?". The answer, Eric proposes, is to "forget that the code exists but not that the product exists". Just as we build good software without understanding every line of assembly, we'll need to do the same with AI-generated code.

Managing What You Don't Understand: An Age-Old Problem

This isn't a new problem for the business world. Consider:

  • A CTO managing an expert without being an expert themselves.
  • A Product Manager reviewing an engineering feature without reading all the code.
  • A CEO checking an accountant's work without being a financial expert.

These problems, "as old as civilization," have solutions. A CTO can write acceptance tests, a PM can use the product, and a CEO can spot-check key facts. The key is to find an "abstraction layer that you can verify even without knowing the implementation underneath it". Software engineers, traditionally used to understanding the full depth of the stack, need to embrace letting go of some details to maximize productivity, much like managers do.

The Tech Debt Caveat and "Leaf Nodes"

Currently, there's one significant caveat: tech debt. It's hard to measure or validate tech debt without directly reading the code, unlike other systems where verification is possible at a higher level.

So, how do we proceed? Eric's advice is to focus vibe coding on "leaf nodes" in your codebase. These are parts of the system that nothing else depends on—think end features or "bells and whistles". It's acceptable for these to have some tech debt because they're unlikely to change or have further things built upon them. The core architecture (the "trunks and underlying branches") still requires deep human understanding to ensure extensibility and flexibility. However, as models like Claude 4 improve, Eric anticipates we'll gain more trust in them to write extensible code with less tech debt.

How to Succeed: Be Claude's Product Manager (PM)!

The core advice for successful vibe coding is: "Ask not what Claude can do for you but what you can do for Claude". When you vibe code, you are essentially acting as a product manager for Claude.

This means:

  • Think like a PM: What guidance, context, requirements, specifications, and constraints would a new human employee need to succeed?.
  • Provide rich context: Instead of quick back-and-forth prompts, spend time (15-20 minutes for Eric) collecting guidance into a single, detailed prompt. This often involves a separate conversation with Claude to explore the codebase, identify files, and build a plan that captures the essence of your goal and the patterns to follow.
  • Ask the right questions: Not everyone should vibe code in production systems, especially those who can't effectively guide Claude or discern what's dangerous or safe.

A Real-World Success Story: Anthropic's 22,000-Line Change

Anthropic recently merged a 22,000-line change to their production reinforcement learning codebase, written heavily by Claude. How did they do this responsibly?

  1. Human PM Role: Days of human work went into defining requirements and guiding Claude. They truly embraced their role as Claude's product manager.
  2. Focus on Leaf Nodes: The change was largely concentrated in leaf nodes where some tech debt was acceptable.
  3. Heavy Human Review for Core Parts: Critical, extensible parts of the code still received heavy human review.
  4. Designed for Verifiability: They carefully designed stress tests for stability and ensured the system had easily human-verifiable inputs and outputs. This allowed them to create "verifiable checkpoints" and measure stability and correctness without reading all the underlying code.

This allowed them to be as confident in the change as any other, but deliver it in a "tiny fraction of the time and effort". It also fundamentally changed their engineering mindset, making them willing to tackle much bigger features because the "marginal cost of software is lower".

The Future of Software Engineering and Learning

This shift begs the question: how do we learn and become better engineers when AI handles so much of the low-level coding? While there's a valid concern about losing the "struggle in the grind", Eric is optimistic. He finds he learns much faster with AI tools. Claude acts as an "always there pair programmer," explaining libraries or design choices.

Furthermore, by collapsing the time it takes to implement large architectural changes (e.g., from two years to six months), engineers will be able to learn from four times as many lessons in the same calendar time, provided they put in the effort to understand.

Practical Tips for Responsible Vibe Coding

  • Balance Information: It depends on what you care about. For features where implementation details don't matter, simply state your desired outcome. For familiar codebases, provide more depth, but avoid over-constraining the model. Treat Claude like a junior engineer you're onboarding.
  • Security: For production systems, you need to understand enough context to identify dangers and guide Claude appropriately. Vibe coding fully offline systems, for instance, significantly reduces security concerns. Products and frameworks that are "provably correct" or provide sandboxed environments for AI-generated code could emerge to make vibe coding safer for a wider audience.
  • Test-Driven Development (TDD): TDD is "very, very useful" in vibe coding. Encourage Claude to write minimalist, end-to-end tests (e.g., happy path, error cases) that are general enough for you to understand, even without reading the implementation. Often, reviewing just the tests and ensuring they pass can give confidence in the code.
  • Managing Context: To avoid Claude "going off the rails" or creating new names for functions, compact your sessions when you reach a natural "stopping point" or "break". This reduces the token count significantly.
  • Exploring New Codebases: Before writing features in unfamiliar areas, use Claude Code to explore the codebase. Ask it to identify relevant files, classes, or similar features to build a mental picture and ensure you're not blindly vibe coding in critical areas.

Embrace the Exponential!

The models aren't just getting better; they're getting better faster than we can possibly imagine. Just as computers evolved from kilobytes of RAM to terabytes over 20 years, AI capabilities will advance millions of times over.

It's okay not to vibe code today, but in a year or two, it will be a "huge disadvantage" if you insist on reading or writing every line of code yourself. You risk becoming the bottleneck, unable to leverage the powerful new wave of models. This is poised to be one of the biggest challenges—and opportunities—for the software engineering industry in the coming years.

By responsibly embracing vibe coding, focusing on verifiable abstraction layers, guiding AI like a product manager, and wisely choosing where to apply it, we can unlock unprecedented productivity and innovation in software development.

Watch Eric's full video here: