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:
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:
Recommended by LinkedIn
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:
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