# Dave Farley - Vibe Coding - Is this really the best we can do? - AI Native DevCon June 2026

## Executive 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: 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: 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: 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: 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: 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: 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: 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.

## Practical implications

- Shift focus from writing code to defining precise, executable specifications (Behavior-Driven Development/BDD).
- Adopt Domain Specific Languages (DSLs) tailored to the problem domain for maximum precision.
- Implement robust verification pipelines that treat all changes as experiments and ensure continuous, incremental testing.
- Recognize that the core engineering discipline is not coding, but the ability to analyze, decompose, and specify problems.

## Topics

AI Programming, Software Architecture, Behavior-Driven Development (BDD), Continuous Integration/Delivery (CI/CD), Programming Language Theory, Nwave

Source: https://www.youtube.com/watch?v=libNzUdL9eM
