Dave Farley and Guy Padani discuss the shift in software development where developers manage AI agents by specifying goals and constraints rather than writing detailed code, enabling faster, iterative, and outcome-driven programming. They emphasize the importance of continuous evaluation, robust infrastructure, and treating software changes as experiments to ensure AI-assisted development remains reliable, adaptable, and aligned with desired behaviors.
In this discussion, Dave Farley interviews Guy Padani, CEO of Tessle, about the evolving paradigm of AI-assisted programming for complex real-world systems. Tessle promotes a model where developers act as managers of AI agents rather than writing detailed code themselves. This shift raises the level of abstraction in software development, focusing on specifying parameters, constraints, and desired outcomes instead of explicit solutions. The approach aligns with a broader trend toward outcome-driven development, where success is measured by meeting defined goals rather than by the exact code produced.
Guy emphasizes the concept of “coding the developer” rather than coding the solution, meaning that developers should define the rules and behaviors that AI agents follow. As AI takes on more responsibilities traditionally held by developers, human roles evolve into management and oversight, focusing on defining clear objectives and success criteria. This management mindset parallels organizational leadership, where reviewing every detail is a sign of insufficient delegation. The speed advantage of AI agents enables rapid iteration cycles, which is crucial for continuous improvement in quality, security, and customer responsiveness.
The conversation highlights the importance of working in small, safe, and verifiable steps, a principle familiar from traditional software engineering practices like test-driven development. Iterative development with AI involves building constraints and continuously refining them through feedback loops. Guy introduces the idea of “loop engineering,” where AI systems are incrementally improved by automating tasks such as code review, learning from historical data, and adjusting based on developer feedback. This iterative process reduces the cost of mistakes and fosters continuous optimization.
Dave relates these ideas to established software engineering concepts such as behavior-driven development and acceptance testing, which focus on defining and verifying desired behaviors through automated scenarios. He prefers these terms over newer jargon like “eval,” as they better capture the intent and methodology behind specifying and validating AI behavior. Both agree that maintaining these evaluation scenarios is essential for ensuring AI agents do not regress and can adapt to different environments or models, enabling flexible and reliable AI-assisted development.
Finally, the discussion underscores that successful AI-assisted programming requires robust infrastructure for observability, logging, and automation to support continuous learning and improvement. This process mirrors DevOps practices but operates at a faster pace enabled by AI. Treating software changes as experiments allows teams to learn and adapt iteratively, improving systems over time. Ultimately, AI should augment human capabilities in software engineering, reinforcing an experimental, iterative approach to building better software factories and delivering higher-quality outcomes.