Vibe Coding: Why It’s Not the Future of Software Engineering

Vibe Coding: Why It’s Not the Future of Software Engineering

For Modern Software Engineering

On February 2nd, 2025, Andrej Karpathy—OpenAI co-founder and former head of AI at Tesla—introduced a new term for a style of AI-assisted programming: vibe coding.

Karpathy described it as a relaxed, conversational way of working with a large language model to “just see stuff, say stuff, run stuff, and copy and paste stuff”—something he felt “isn’t really coding” but can be fun for quick, throwaway projects. The term went viral, quickly becoming a fixture in software development discussions.

But beneath the novelty lies a serious question: is vibe coding a glimpse of the future—or a distraction from what software engineering is truly about?


The Allure—and the Problem

The appeal is obvious: have a casual chat with an AI, get working code, skip the complexity. It plays into a common misconception—shared by both non-technical and technical people—that writing code is the hard part.

Non-technical stakeholders often see code as mysterious and complex. Developers, in turn, can overvalue their language and framework expertise as the core of their identity. We even hire based on tool familiarity, not necessarily problem-solving ability.

In reality, good software engineering is hard for reasons that have nothing to do with language syntax. It’s about breaking down problems into precise, deterministic steps—a process that has remained fundamentally difficult for decades.


Why Precision Still Matters

Programming languages aren’t complex because of tradition or elitism; they’ve evolved to be clear, constrained, and precise. They help us:

  1. Organize our thinking about a problem
  2. Communicate our understanding to other humans
  3. Tell a computer exactly what to do

Replacing that precision with the expressive vagueness of natural language is risky. Legal documents—also written in natural language—are a cautionary example: often verbose, but rarely unambiguous.

This is why “vibe coding” misses the point. Software engineering’s value lies in structuring complexity, using principles like modularity, separation of concerns, and abstraction. Those skills aren’t bypassed just because an AI is involved.


The AI Challenge: Quality, Verification, and Change

AI-assisted coding introduces three key challenges:

  1. Specification – How do we express what we want with enough precision?
  2. Verification – How do we confirm that’s what we got?
  3. Incremental Change – How do we evolve the system safely over time?

These problems aren’t new—they’re fundamental to all software. But with AI-generated code, they become more acute. AI models often regenerate entire files rather than making surgical edits. Without strong automated tests, we can’t be sure small changes haven’t broken something elsewhere.

Historically, other “raise the abstraction” movements—4GLs, model-driven development, low-code/no-code—stumbled here too. They assumed correctness “the first time” and often lacked robust version control.


The Path Forward: Executable Specifications

If there’s one lesson, it’s that automated testing, continuous integration, and continuous delivery are even more critical with AI-generated code than human-written code.

The best way to prompt an AI is with an executable specification—a clear, testable definition of desired behaviour under repeatable conditions. This shifts programming from “specifying implementation” to “specifying intent” with precision.


Who Is Dave Farley?

Dave Farley, the voice behind this critique, is one of the leading figures in modern software engineering. He is:

  • Co-author of Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation, the book that helped define Continuous Delivery and heavily influenced the DevOps movement.
  • Pioneer of large-scale CD pipelines, notably at LMAX, where he helped deliver one of the world’s most advanced, low-latency trading systems.
  • Influential educator, running the Modern Software Engineering YouTube channel and speaking internationally on TDD, evolutionary architecture, and high-quality software delivery.
  • Advocate for test-driven development, modular design, and evidence-based engineering.

You can read more about him and his work on the Modern Software Engineering LinkedIn page.


Conclusion

Vibe coding may be a fun weekend experiment, but it doesn’t solve the deep, structural challenges of software engineering. If anything, it risks hiding them behind a seductive illusion of simplicity.

Software engineering isn’t dying—it’s changing. But any next step in programming, AI-assisted or not, must tackle specification, verification, and incremental change head-on. Without that, we’ll just be repeating the mistakes of past failed abstractions.


Modern Software Engineering is dedicated to advancing excellence in software development through practical, evidence-based practices. Learn more at Modern Software Engineering on LinkedIn.

NB: This entire article was written by GPT 5 with contextual reference to the transcript from this YouTube video https://www.youtube.com/watch?v=1A6uPztchXk

Why? 🦖🏞️ 🧑🔬

Appreciate you sharing this -love how you contrasted Karpathy’s “vibe coding” with Farley’s emphasis on engineering discipline. It’s interesting that while AI can make coding faster and more conversational, it still can’t replace the underlying structure that makes software reliable at scale. I agree that practices like automated testing, CI/CD, and executable specifications might actually become more critical in an AI-assisted world -...they’re the guardrails that keep “vibes” from turning into chaos. Ross Farrell

Like
Reply

To view or add a comment, sign in

Others also viewed

Explore content categories