Dave Farley - Vibe Coding - Is this really the best we can do? - AI Native DevCon June 2026
Summary
The talk argues that while AI represents a massive paradigm shift in software development, relying solely on natural language or current agentic coding practices is insufficient for building complex systems. The core message is that the industry must evolve from being 'solution-focused' to 'specification-focused.' Future programming requires defining desired behaviors using precise Domain Specific Languages (DSLs) and executable specifications (like BDD), ensuring verification at every incremental step.
Key takeaways
-
The Limitations of Natural Language
12:10
Natural language is inherently vague, open to misinterpretation, and lacks the simple, consistent grammar required for precise machine execution. It cannot reliably define goals or guarantee deterministic results, making it unsuitable as a primary development tool.
-
The Role of Specification over Solution
17:25
Programming languages should be viewed not just as tools to encode algorithms (the solution), but primarily as mechanisms to organize and communicate a precise description of the problem itself. The future program must be an executable specification of what is desired, rather than merely the code that achieves it.
-
The Necessity of Incremental Verification
23:55
To manage the speed and scale of AI-generated code (e.g., 12,000 lines/day), development must maintain its core engineering principles: working incrementally, treating changes as experiments, and rigorously verifying every step using continuous delivery practices.
Technical details
-
Testing Philosophy
375s
Tests are not for proving success or challenging genius; they are a form of measurement used to confirm that the system continues to achieve defined goals. AI-generated tests based only on existing code risk reinforcing initial errors, as they cannot infer the true underlying goals.
-
Programming Language Goals
605s
Farley argues that programming languages serve three primary functions: 1) Organizing thought about a problem; 2) Acting as a communication tool between humans; and 3) Telling the computer what to do. They achieve this through simple, consistent grammars, ensuring unambiguous and deterministic execution.
-
Future Development Model
1205s
The proposed model involves using a programmer-invented problem-specific DSL to define all desired system behaviors. The AI then generates code, which is immediately subjected to executable specifications (BDD-style tests) that verify the functional correctness against defined requirements.
-
AI's Role in Development
1750s
The role of AI assistance should be viewed analogously to a compiler: we care about verifying the *results* (the behaviors) rather than scrutinizing the generated implementation code itself. This shifts focus back to rigorous verification and specification.
Mentioned resources
- Nwave
Channel & topics
Watch on YouTube · Back to latest
This independent, AI-assisted summary is provided for commentary and informational purposes. It may contain errors or omit important context. Please watch the original video for the creator's complete presentation. Video, thumbnail, and related copyrights belong to their respective owners.