VIBE CODING AI + Human 70% 30% Cursor Copilot v0 / Bolt Windsurf ADDY OSMANI · O'REILLY
★   O’Reilly · AI-Assisted Development · The 70% Problem

Vibe Coding:
The Future of Programming

Addy Osmani — O’Reilly Early Release · 2025

Google Chrome Engineering Lead yacine.love

The term “vibe coding” was coined by AI researcher Andrej Karpathy: the practice of describing what you want to build in natural language and letting AI generate the code. It sounds magical. And for the first 70% of any project, it genuinely is. Then comes the wall. Addy Osmani, Engineering Lead on Google Chrome, wrote this O’Reilly book to tell you what really happens beyond that wall — and what it means for every developer’s career.

The Central Finding

The 70% Problem — Why AI Gets You Far and Then Gets Stuck

Here is the experience thousands of developers are reporting right now: You describe your app to Cursor, Bolt, v0, or Copilot. Within minutes, you have a working prototype that looks impressive. You demo it and people are amazed. Then you try to add one more feature — and the AI makes a change that breaks three things that worked before. You fix those, and two more things break. You are now going backwards.

70%
AI handles initial solution — boilerplate, common patterns, familiar frameworks
30%
Human expertise required — edge cases, architecture, maintainability, real engineering
Frustration multiplier when you don’t understand the AI’s code

The 70% is the accidental complexity of software — the repetitive, mechanical stuff. The 30% is the essential complexity — understanding and managing the inherent difficulty of the actual problem. AI tackles incidental complexity brilliantly. Essential complexity remains firmly on human shoulders. This insight is from Fred Brooks’ classic 1986 essay “No Silver Bullet” — and it is as true today as it was then, just with a different tool playing a different role.

“AIs don’t have ‘better ideas’ than what their training data contains. They don’t take responsibility for their work. The creative and analytical thinking — deciding what to build, how to structure it, and why — remains firmly a human domain.”

— Addy Osmani, Vibe Coding: The Future of Programming
Common Failure Patterns

Why Vibe Coding Goes Wrong — Five Documented Traps

1
The Demo-Quality Trap
AI tools optimise for generating code that looks impressive in a demo. They produce clean, well-named variables, readable structure, and correct output for the obvious happy-path scenario. But demo quality and production quality are completely different things. Production code must handle: users who do unexpected things, inputs that are wrong or missing, concurrent users causing race conditions, servers that go down mid-request, and requirements that change. AI does not think about any of these unless you explicitly ask about every one of them.
2
One Step Forward, Two Steps Back
This is the pattern Peter Yang described: the AI fixes the bug you pointed to while silently breaking something that was working. Why? Because AI does not have a mental model of your whole codebase. It sees the context window it was given and optimises for that context. A change that fixes a problem in one file can violate assumptions that another file was relying on. Without understanding the code, you cannot evaluate whether a fix is genuinely safe or just appears to resolve the immediate symptom.
3
Hallucinated Libraries and Functions
AI models are known to hallucinate — generating references to functions, APIs, or libraries that do not actually exist, or exist but were deprecated years ago. The code looks correct. It follows the right patterns. But it imports from awesome-npm-package which was last updated in 2019 and has a critical security vulnerability, or calls sdk.newFeature() which was announced but never shipped. A developer without domain knowledge cannot catch this. A senior developer with experience in the stack spots it immediately.
4
Architecture Debt Accumulation
Each AI-generated file adds to a codebase without any awareness of the overall architecture. Over 20 files of AI-generated code, you may have four different approaches to the same problem, two incompatible data validation patterns, three different ways of handling errors, and no consistent approach to state management. The codebase technically works today and becomes unmaintainable in three months. Architecture is a holistic, intentional discipline that requires someone holding the whole system in their head — which the AI cannot do.
5
The Learning Avoidance Trap
This is perhaps the most dangerous long-term pattern. When AI produces code you do not understand, and it works, there is a temptation not to spend the time understanding it. Over months of this habit, you are using tools you could not explain, building systems you could not maintain, and acquiring no transferable knowledge from the work. As one developer noted: “If I knew how the code worked I could probably fix it myself. But since I don’t, I question if I’m actually learning that much.”
What Actually Works

Three Proven Workflow Patterns with AI

🛠
AI as First Drafter

Best for bootstrapping new projects. Use Bolt, v0, or screenshot-to-code tools to generate an initial working prototype from a design or brief. Expect 70% of requirements to be met. Then switch from vibe mode to engineering mode — carefully review every file, understand what was generated, rewrite anything structurally important, and add proper testing before building further.

👥
AI as Pair Programmer

Best for experienced developers accelerating existing work. You understand the system. You describe a specific, well-scoped task to Cursor, Cline, or Copilot. You review every line it generates against your mental model. You are the brain; it is the fast typist. This workflow has no 70% problem because you catch errors before they compound. The golden rule: never accept AI output you cannot explain.

AI as Validator

Underused and powerful. After writing code yourself, ask the AI to review it: “What are the security vulnerabilities in this function? What edge cases have I missed? What would happen if this input were null?” The AI has seen enormous amounts of security research, bug reports, and post-mortems. Used as a code reviewer, it adds real value without the risks of blind acceptance.

Career Guidance by Level

What Every Developer Must Do Differently Now

SENIOR Engineers
Be the Architect & Editor-in-Chief
Your highest-value contribution is now translating complex requirements into precise AI prompts, then critically reviewing every line of output. You are pair-programming with the AI — it is the fast typist; you are the brain. Use Osmani’s term: CHOP (Chat-Oriented Programming) — coding via iterative prompt refinement. Take on larger initiatives than before because the mechanical work is faster. Your domain knowledge and historical context is MORE valuable than ever — it catches exactly what AI cannot see. Set standards for your team: every AI-generated block must be verified by the person who accepts it.
MID-LEVEL Engineers
Specialise, Own Integration Boundaries, Master Code Review
AI commoditises general coding. Your defence is deep specialisation in a domain where context matters enormously: payment systems, real-time databases, embedded systems, security, performance. Master the places where AI-generated code meets AI-generated code — system integration points are where the bugs live. Become the person on your team who reviews AI output rigorously. Your value is in catching what others miss, not in writing boilerplate faster than a machine.
JUNIOR Developers
Learn the Fundamentals Anyway — Do Not Skip the Why
This is the most important piece of advice in the book. The temptation to use AI as a crutch before you understand the foundations is career-damaging. Learn data structures, algorithms, and system design without the AI safety net — at least for a while. You need a mental model sturdy enough to evaluate AI output. Without it, you cannot tell correct code from plausible-looking-but-wrong code. Then, once you have the fundamentals, use AI aggressively to accelerate — at which point it becomes a superpower rather than a dependency.

The CHOP Paradigm — Chat-Oriented Programming

Steve Yegge’s term, adopted by Osmani: programming by iterative prompt refinement rather than direct typing. You chat your way to a solution. The mental model shift: you are no longer the typist; you are the product manager and the senior reviewer simultaneously. You write specifications, evaluate drafts, reject what does not meet your standards, accept and annotate what does, and build an increasingly precise language for expressing your intent to the AI. This is a learnable skill. The developers who will be most valuable in five years are the ones who have learned to do it precisely and critically — not those who accept the first output.

VIBE CODING Future of Programming ADDY OSMANI O'REILLY

Vibe Coding: The Future of Programming

Addy Osmani · O’Reilly Media (Early Release 2025)

Written by Addy Osmani, Engineering Lead on Google Chrome and author of the foundational Learning JavaScript Design Patterns. O’Reilly Early Release — the frontier of professional thinking on AI-assisted development, written by someone who has used these tools at the highest level of production software engineering.

Vibe CodingAI ToolsCursorCopilotDeveloper SkillsO’Reilly

The Developers Who Thrive Are Not Those Who Let AI Do Everything. They Are Those Who Know Exactly What To Give It — And What To Keep.

AI is not replacing programming. It is replacing the version of programming that was mostly mechanical. What remains — the judgement, the architecture, the context, the care — is more valuable than it has ever been. The 30% has never mattered more.

Y

Yacine

BTS Electronics Instructor · Tangier · AI Explorer

Teaching embedded systems and IoT in Morocco. Writing about the future of code, AI tools, and what it means to be a developer in 2025 at yacine.love.