Vibe Coding Is The WORST IDEA Of 2025

Dave Farley critiques “vibe coding” as an overly simplistic, AI-assisted programming approach that neglects the essential need for precise problem understanding, clear specifications, and rigorous verification in software development. He emphasizes that maintaining software quality and reliability requires disciplined practices like testing and incremental changes, which vibe coding fails to address, making it unsuitable for serious, complex projects.

In the video, Dave Farley critiques the concept of “vibe coding,” a term introduced by Andre Karpathy to describe a relaxed, AI-assisted style of programming where developers “see stuff, say stuff, run stuff, and copy and paste stuff.” Farley suggests that while this approach might work for simple, throwaway projects, it fundamentally misses the essence of programming. He argues that programming is not just about writing code but about deeply understanding problems, structuring solutions, and managing complexity—tasks that require precision and clarity beyond what vague natural language interactions with AI can provide.

Farley emphasizes that programming languages have evolved to help humans organize their thinking, communicate ideas clearly to others, and instruct computers precisely. Unlike natural human languages, programming languages are simpler and more constrained, designed to express ideas with the exactness needed for computers to execute them. He warns that relying on the imprecise and ambiguous nature of human language, as vibe coding suggests, is unlikely to produce reliable or maintainable software, especially for complex systems.

A significant challenge highlighted is the difficulty of specifying what software should do with enough precision and verifying that it behaves as intended. Farley points out that automated testing, continuous integration, and continuous delivery are crucial practices that ensure software quality and maintainability. These practices become even more important with AI-generated code, which often rewrites entire codebases from scratch, making incremental changes and version control more complicated and less reliable.

Farley also discusses the problem of AI models being trained on a mix of good and bad code, which affects their ability to produce high-quality software. Unlike human programmers who develop a sense of good design and taste over time, AI lacks this nuanced judgment. This leads to concerns about the quality and maintainability of AI-generated code, reinforcing the need for precise executable specifications that clearly define desired system behavior and enable verification through testing.

In conclusion, Farley argues that vibe coding is not a viable approach for serious software development because it overlooks fundamental challenges in programming: precise specification, verification, and incremental change. He believes software engineering is evolving rather than dying, and future programming methods must address these core issues to be successful. Farley encourages embracing rigorous practices and tools that support clarity, precision, and maintainability, especially as AI becomes more integrated into the development process.