Table of Contents

charlie deck

@bigblueboo • AI researcher & creative technologist

Back to index

Vibe Coding: The Future of Programming

Book Cover

Authors: Addy Osmani Tags: AI, software development, future of work, productivity, engineering culture Publication Year: 2025

Overview

In my years at Google Chrome, I’ve seen technology shifts transform our work, and the rise of AI is the most profound yet. I wrote this book not to sound an alarm about the ‘end of programming,’ but to offer a practical, hands-on roadmap for leveraging this new era of [[AI-assisted coding]]. The core idea I want you to grasp is what I call the [[70% Problem]]. AI assistants are incredibly powerful; they can generate the first 70% of a project—the boilerplate, the common patterns, the initial scaffolding—with astonishing speed. This is a massive productivity boost that we must embrace. However, the remaining 30% is where true software engineering happens. This is the realm of complex architecture, nuanced business logic, subtle edge cases, performance tuning, and long-term maintainability. This is the work that requires human judgment, experience, and creativity. This book is for you, the software engineer—whether junior, mid-level, or senior—who wants to understand how to adapt and thrive. I’m not just describing the tools; I’m teaching you the workflows and mindsets to succeed. We’ll explore practical patterns like using AI as a ‘first drafter,’ a ‘pair programmer,’ or a ‘validator.’ We’ll discuss how to become the ‘architect and editor-in-chief,’ guiding the AI’s output rather than blindly accepting it. Most importantly, we’ll delve into the [[durable engineering skills]]—like systems thinking, deep domain expertise, and rigorous quality assurance—that become even more valuable when the mundane coding is automated. My goal is to help you, the professional developer and AI product engineer, see AI not as a threat, but as a powerful co-pilot. By embracing the strategies in this book, you can amplify your impact, focus on the most challenging and rewarding aspects of our craft, and ultimately future-proof your career by becoming the indispensable human in the loop.

Book Distillation

3. The 70% Problem: Hard Truths About AI-Assisted Coding

AI coding tools excel at generating the initial 70% of a solution—the boilerplate and straightforward parts. However, the final 30%, which includes handling edge cases, ensuring maintainability, and making sound architectural decisions, requires deep human expertise. This gap is where [[essential complexity]] lies, as opposed to the [[accidental complexity]] that AI handles well. Relying too heavily on AI without understanding the output leads to ‘house of cards code’ and a frustrating ‘two steps back’ debugging cycle. To work effectively, adopt practical workflow patterns: use AI as a [[first drafter]], a [[pair programmer]], or a [[validator]], but always with human oversight.

Key Quote/Concept:

The Golden Rules of Vibe Coding. This is a comprehensive list of best practices for working with AI. It includes rules like: ‘Be specific and clear about what you want,’ ‘Always validate AI output against your intent,’ ‘Treat AI as a junior developer (with supervision),’ ‘Don’t merge code you don’t understand,’ and ‘Isolate AI changes in Git by doing separate commits.’ These rules provide a practical framework for integrating AI into a professional workflow while maintaining quality and control.

4. Beyond the 70%: Maximizing Human Contribution

To thrive, engineers must focus on the irreplaceable 30% of their work by adapting their roles. Senior engineers should act as the [[architect and editor-in-chief]], using AI as a force multiplier for large initiatives and mentoring others. Mid-level engineers must elevate their skills, mastering [[systems integration]], performance optimization, DevOps, and building deep domain expertise. Junior developers must learn fundamentals deeply, practice problem-solving without AI to avoid skill atrophy, focus on testing and maintainability, and actively seek mentorship. The essential mindset shift is from merely consuming AI-generated solutions to using them as a tool for creating deeper understanding and higher-quality software.

Key Quote/Concept:

Durable Engineering Skills. This concept refers to the timeless skills that remain crucial regardless of technological shifts. The book lists several, including: strengthening [[system design and architecture]] expertise, practicing [[systems thinking]], honing critical thinking and problem-solving, building expertise in specialized domains, and improving communication. These skills constitute the ‘human advantage’ and are essential for future-proofing one’s career in the AI era.


Generated using Google GenAI

Essential Questions

1. What is the ‘70% Problem’ and what does it imply for the future of software engineering?

The [[70% Problem]] is the core concept I introduce to describe the current state of [[AI-assisted coding]]. It posits that AI tools are remarkably effective at generating the first 70% of a software project—the boilerplate, common patterns, and initial scaffolding. This is the realm of what Fred Brooks called [[accidental complexity]], the repetitive, mechanical tasks that can be automated. However, the final 30% remains a significant challenge for AI. This portion consists of the [[essential complexity]]: nuanced business logic, subtle edge cases, performance tuning, security hardening, and long-term architectural decisions. This is where deep human expertise, creativity, and judgment are indispensable. The implication is that programming is not ‘over’; rather, its focus is shifting. The value of an engineer is moving away from the ability to write rote code quickly and toward the ability to expertly manage, validate, and refine the AI’s output, focusing their energy on that critical 30% where true, durable value is created. This redefines productivity from lines of code written to the quality and robustness of the final, human-vetted system.

2. How should engineers at different career levels adapt to thrive in the age of AI?

My book provides a roadmap for engineers at all levels. For senior engineers, the role evolves into that of an [[architect and editor-in-chief]]. They must leverage their experience to guide AI, set high-level strategy, review complex outputs, and mentor others in the effective and safe use of these new tools. They act as a force multiplier, using AI to tackle large-scale initiatives. Mid-level engineers face the most pressure to elevate their skills. They must move beyond feature implementation and specialize in areas AI struggles with, such as [[systems integration]], performance optimization, DevOps, and deep domain expertise. Their focus shifts from writing code to managing complexity. For junior developers, the path is not obsolete but different. They must resist the urge to use AI as a crutch and instead use it as a tutor. The focus must be on learning fundamentals deeply, practicing problem-solving without AI to avoid skill atrophy, and developing a keen eye for testing, verification, and maintainability. Their value comes from their ability to learn quickly and contribute to that critical 30% by ensuring the quality of AI-generated code.

3. What are the ‘durable engineering skills’ that become more valuable as AI handles more of the coding?

As AI automates the more mechanical aspects of coding, a set of timeless, [[durable engineering skills]] becomes more critical than ever. These are the abilities that constitute the ‘human advantage’ in software creation. I emphasize several in the book: First, [[system design and architecture]]—the ability to see the big picture and design robust, scalable systems. Second, [[systems thinking]], which is understanding how different parts of a complex system interact and how a change in one area can affect the whole. Third is deep domain expertise; understanding the business context, the user’s needs, and the regulatory environment allows an engineer to guide the AI with crucial context it lacks. Fourth are skills in rigorous testing, debugging, and quality assurance, as the engineer becomes the ultimate backstop for the AI’s plausible-but-flawed output. Finally, communication and collaboration—the ability to translate business needs into technical requirements, document decisions, and work effectively within a team—remain fundamentally human tasks. These skills don’t expire with the next JavaScript framework; they are the foundation of a future-proof engineering career.

Key Takeaways

1. Embrace AI as a Force Multiplier, Not a Replacement

The central message I want you to take away is that AI is not here to replace you, but to augment you. The ‘Vibe Coding’ mindset is about leveraging AI as a powerful co-pilot to handle the 70% of repetitive, boilerplate work, freeing up your cognitive bandwidth to focus on the challenging 30% that requires human intellect. This includes complex architecture, user experience nuances, and critical business logic. The book shows how this partnership makes a good developer dramatically more productive. By treating the AI as a ‘wildly productive junior developer,’ as Steve Yegge puts it, you can accelerate implementation, but your expertise is what ensures the final product is maintainable, secure, and correct. This shift means your value is no longer measured by your typing speed, but by your judgment, your ability to ask the right questions, and your skill in shaping the AI’s raw output into a high-quality, finished product.

Practical Application: An AI product engineering team is tasked with a major refactor of a legacy service. Instead of spending weeks manually rewriting data models and API endpoints, a senior engineer uses an AI assistant to generate the first draft of the new code based on a detailed prompt outlining the new architecture. The team then spends its time not on the tedious rewriting, but on the high-value tasks: rigorously testing the AI-generated code for edge cases, optimizing critical performance paths, and ensuring the new design aligns with the company’s long-term technical strategy.

2. Your Role Is Shifting to Architect, Editor, and Quality Gatekeeper

With AI generating code, the engineer’s primary role shifts from ‘creator of code’ to ‘curator of systems.’ You are the [[architect and editor-in-chief]]. Your job is to provide the vision, translate complex requirements into effective prompts, and then critically review, refine, and validate every line of code the AI produces. I stress that you should never merge code you don’t fully understand. This means the burden of responsibility for quality, security, and maintainability remains squarely on your shoulders. The book provides practical patterns for this, such as using AI as a [[first drafter]] or a [[validator]]. This elevation of responsibility means that skills in code review, testing, and systems-level thinking become paramount. You are the final quality gate, and your expertise is the safety net that prevents plausible-sounding but ultimately flawed AI suggestions from destabilizing your products.

Practical Application: A product manager requests a new feature. A mid-level engineer first uses an AI to generate the basic API endpoints and UI components. However, before committing the code, she spends the majority of her time writing a comprehensive suite of integration tests that cover not just the ‘happy path’ but also potential failure modes and security vulnerabilities. She then refactors the AI’s code for clarity and adherence to team style guides, adding detailed comments explaining the ‘why’ behind the implementation. She is acting as the editor and quality gatekeeper, not just a coder.

3. Future-Proof Your Career by Cultivating ‘Durable Skills’

The technology landscape is in constant flux, but some skills are timeless. I call these [[durable engineering skills]], and they are your best defense against professional obsolescence. While AI can write a function, it cannot (yet) design a complex, distributed system from first principles, understand the subtle needs of a user, or negotiate technical trade-offs with stakeholders. Therefore, I urge you to invest in these areas. Deepen your knowledge of [[system design and architecture]], practice [[systems thinking]] to understand the broader context of your work, build expertise in a specific business domain, and hone your communication skills. These are the activities that fall into the crucial 30% that AI can’t handle. By focusing on these durable skills, you move up the value chain from being a ‘coder’—a role increasingly commoditized by AI—to being a ‘problem solver’ and ‘technical leader,’ a role that is more valuable than ever.

Practical Application: An AI engineer, noticing that AI assistants can handle much of her routine coding, decides to proactively build durable skills. She enrolls in an internal company course on cloud architecture, schedules regular coffee chats with product managers to better understand customer pain points (domain expertise), and volunteers to write the technical design document for her team’s next major project. She is consciously investing in skills beyond pure implementation to increase her strategic value to the organization.

Suggested Deep Dive

Chapter: Chapter 2. Beyond the 70%: Maximizing Human Contribution

Reason: This chapter is the strategic heart of the book. While Chapter 1 defines the problem, this chapter provides the solution by offering a concrete, role-specific playbook for how to adapt. It breaks down actionable advice for junior, mid-level, and senior engineers, moving beyond abstract ideas to provide specific skills to cultivate, such as [[systems integration]] for mid-levels and becoming the [[architect and editor-in-chief]] for seniors. For an AI product engineer, understanding how the roles on their team are evolving is crucial for effective management, mentorship, and career planning. This chapter provides the framework for that understanding.

Key Vignette

The ‘Two Steps Back’ Antipattern

I describe a common and frustrating failure pattern I call the ‘two steps back’ cycle, which often plagues developers who rely too heavily on AI without deep understanding. It begins when a developer tries to fix a small bug and accepts a plausible-looking code change from an AI assistant. However, this ‘fix’ introduces a new, unrelated bug. The developer then asks the AI to fix the new issue, and in doing so, it creates two more problems. This leads to a demoralizing loop of ‘whack-a-mole’ debugging, where the codebase becomes increasingly fragile and the developer loses control, a phenomenon I illustrate with a flowchart in the book.

Memorable Quotes

AI can get you most of the way there, but that final crucial 30% (edge cases, keeping things maintainable, and solid architecture) needs serious human expertise.

— Page 7, Chapter 1. The 70% Problem: AI-Assisted Workflows That Actually Work

Steve Yegge wryly likens today’s LLMs to ‘wildly productive junior developers’ – incredibly fast and enthusiastic, but ‘potentially whacked out on mind-altering drugs,’ prone to concocting crazy or unworkable approaches.

— Page 8, Chapter 1. The 70% Problem: AI-Assisted Workflows That Actually Work

Don’t merge code you don’t understand. Never integrate AI-generated code unless you thoroughly comprehend its functionality and implications. Understanding is critical to maintainability and security.

— Page 20, Chapter 1. The 70% Problem: AI-Assisted Workflows That Actually Work

We’re not facing the end of programming, but rather ‘the end of programming as we know it today,’ meaning developers’ roles are evolving, not evaporating.

— Page 22, Chapter 2. Beyond the 70%: Maximizing Human Contribution

It’s worth noting a mindset shift for juniors in the AI era: you need to move from just consuming solutions to creating understanding.

— Page 40, Chapter 2. Beyond the 70%: Maximizing Human Contribution

Comparative Analysis

My book, ‘Vibe Coding,’ enters a conversation that includes timeless classics like Fred Brooks’ ‘The Mythical Man-Month’ and modern guides like ‘The Pragmatic Programmer.’ I directly build on Brooks’ foundational idea of [[essential complexity]] versus [[accidental complexity]], arguing that AI’s primary achievement is in conquering the latter. While ‘The Pragmatic Programmer’ focuses on the enduring mindset of a craftsman, my work provides a specific, tactical lens for applying that craftsmanship in the age of AI. Unlike more theoretical or futurist books on AI, which often speculate on the ‘end of programming,’ my contribution is intentionally pragmatic and grounded in current workflows. I’m not focused on AGI; I’m focused on how a professional developer can use tools like Copilot and Cursor tomorrow to be better at their job. The unique contribution of ‘Vibe Coding’ is its detailed breakdown of role-specific adaptations for junior, mid-level, and senior engineers and its codification of practical patterns like ‘AI as first drafter’ or the ‘Golden Rules.’ It’s less a philosophical treatise and more of a field manual for the working engineer navigating this specific technological shift, aiming to be immediately applicable in a way that broader texts on software or AI are not.

Reflection

I wrote ‘Vibe Coding’ to be a pragmatic and optimistic guide, not an alarmist prophecy. My goal is to empower engineers, especially AI product engineers, by giving them a mental model—the [[70% Problem]]—and actionable strategies to navigate the current technological wave. The book’s strength lies in its focus on the ‘how’: how to adapt your workflow, how to mentor your team, and how to invest in your skills. It deliberately avoids the hype and fear surrounding AI to provide a grounded perspective from someone who works with these tools daily. A skeptical but fair critique would question the longevity of the 70/30 split. As AI capabilities advance, the 30% of ‘human-only’ tasks may shrink. My opinion, which I believe is supported by the history of technology, is that this won’t lead to obsolescence but to a further elevation of the human role. The ‘30%’ will become even more abstract, strategic, and focused on creativity and judgment. The greatest risk, which I touch upon, is the potential for skill atrophy, especially among junior developers. If not managed carefully, reliance on AI can create a generation of engineers who don’t understand the fundamentals, making the entire system more brittle. Ultimately, the book’s significance is as a snapshot in time—a guide for this specific transition. It argues that the core of great software engineering has always been about thoughtful problem-solving, and AI doesn’t change that; it simply raises the stakes.

Flashcards

Card 1

Front: What is the ‘70% Problem’ in AI-assisted coding?

Back: AI can handle the first 70% of coding (boilerplate, common patterns), but the final 30% (edge cases, architecture, essential complexity) requires deep human expertise.

Card 2

Front: In the context of AI, what is the difference between ‘accidental complexity’ and ‘essential complexity’?

Back: Accidental complexity is the repetitive, mechanical work (e.g., boilerplate) that AI excels at handling. Essential complexity is the inherent difficulty of the problem itself (e.g., nuanced business logic), which remains a human responsibility.

Card 3

Front: What are the three practical workflow patterns for using AI in a team?

Back:

  1. AI as [[first drafter]]: AI generates the initial code, which developers then refine. 2. AI as [[pair programmer]]: A developer works in a tight feedback loop with the AI. 3. AI as [[validator]]: A developer writes the code and uses AI to test and improve it.

Card 4

Front: Describe the ‘Two Steps Back’ antipattern.

Back: A developer accepts an AI’s fix for a bug, which then creates one or more new bugs. Repeating this process leads to a frustrating cycle where the code becomes increasingly fragile.

Card 5

Front: What is the ‘knowledge paradox’ with AI coding tools?

Back: Senior engineers use AI to accelerate what they already know how to do, while junior engineers try to use it to learn what to do, which can impede fundamental learning if not used carefully as a tutor.

Card 6

Front: Name three of the ‘Golden Rules of Vibe Coding’.

Back: Any three of: Be specific and clear; Always validate AI output; Treat AI as a junior developer; Don’t merge code you don’t understand; Isolate AI changes in Git; Ensure all code undergoes review.

Card 7

Front: What is the recommended role for a senior engineer in the age of AI?

Back: To be the [[architect and editor-in-chief]]: focusing on high-level system design, setting standards, reviewing the team’s AI-assisted work, and mentoring others.

Card 8

Front: What are [[durable engineering skills]]?

Back: Timeless skills that remain valuable regardless of technology shifts. Examples include system design, systems thinking, domain expertise, critical thinking, and communication.


Generated using Google GenAI

I used Jekyll and Bootstrap 4 to build this.