More Goto tech episodes

Continuous Delivery in a World of Constant Change  Abby Bangser & Dave Farley thumbnail

Continuous Delivery in a World of Constant Change Abby Bangser & Dave Farley

Published 19 Jun 2026

Duration: 00:45:55

Continuous delivery principles, AI's challenges in code generation, and the necessity of incrementalism, rigorous testing, and human validation in software development are emphasized, alongside critiques of AI's lack of precision and the push for structured validation in high-stakes systems.

Episode Description

This presentation was recorded at GOTO Copenhagen 2025. https://gotocph.com Abby Bangser - Principal Engineer at Syntasso & Team Topologies Advocate D...

Overview

The podcast discusses the core principles of continuous delivery in software development, emphasizing incremental, verifiable changes and the necessity of testing and feedback loops to maintain reliability and enable reversibility. It draws parallels between these practices and scientific/engineering methodologies, highlighting their role in tackling complex problems. The conversation also explores challenges in integrating AI and code generation, such as balancing human readability with disposable AI outputs and the risks of non-deterministic code requiring resets or reverts. Extreme Programming (XP) practices are presented as increasingly vital for adapting to AI tools, with incremental development, testing, and verification framed as critical strategies for managing AI-generated code effectively. Key concepts like persistence in software principlessmall steps, verification, and reversionare reiterated as foundational, though their application varies across contexts like mobile, SaaS, or data centers.

The discussion underscores the limitations of current AI coding practices, particularly their inability to meet criteria for precision, testability, and human-understandable outcomes. It stresses the need for explicit specifications, test-driven development (TDD), and behavior-driven development (BDD) to define outcomes, enable incremental testing, and maintain version-controlled requirements. Challenges in verifying AI-generated code are emphasized, including its potential for incomprehensibility and the need for human oversight to ensure alignment with specifications. The podcast also critiques the lack of clear solution goals in development, the limitations of AI-generated tests, and the risks of uncontrolled AI behavior, such as unintended code changes or inconsistencies. Examples are provided of how AI overreach could disrupt workflows or introduce errors, requiring strict constraints and validation mechanisms.

Broader themes include the tension between automation and control in AI integration, with calls for balancing rapid code generation with human validation, especially in critical systems. Organizational challenges like coupling between teams and information divergence in distributed systems are identified as fundamental issues that AI may not resolve. The podcast reiterates the importance of continuous integration (CI), design decoupling, and consensus-driven alignment to manage complexity. It also critiques the professions inconsistent adoption of proven practices like TDD and highlights the need for developers to prioritize quality over speed. Finally, the text raises questions about the future of programming in an AI-dominated era, including the role of human expertise, the evolving definition of "incremental" progress, and the potential risks of relying on AI without rigorous verification processes.

What If

  • What if you integrate AI into your workflow with strict XP practices for verification?

    • Move: Implement a hybrid workflow where AI generates code, but you apply Test-Driven Development (TDD) and Behavior-Driven Development (BDD) to validate each output before deployment.
    • Why Now?: AI code generation often lacks precision and testability, risking undetected errors. XP practices ensure incremental, verifiable progress, aligning with the texts emphasis on safety and reliability.
    • Expected Upside: Higher code quality, reduced debugging time, and better alignment with project requirements by forcing rigorous validation of AI outputs.
  • What if you prioritize explicit specifications for AI-generated code using BDD scenarios?

    • Move: Refine high-level goals into detailed BDD scenarios (e.g., "As a user, I want to filter search results by date") before prompting AI to generate code.
    • Why Now?: The text highlights that AI struggles with implicit goals and requires clear, human-defined criteria to produce useful outputs. This addresses the "lack of clear solution goals" challenge.
    • Expected Upside: AI-generated code will adhere to explicit user stories, reducing rework and ensuring alignment with business outcomes.
  • What if you build a lightweight testing framework specifically for verifying AI-generated code?

    • Move: Create a modular test suite that runs non-deterministic exploratory tests on AI outputs first, followed by deterministic regression tests for critical components.
    • Why Now?: The text stresses the need for verification in AI workflows, as AI-generated code can be unverifiable or contain hidden flaws (e.g., "cheating" by omitting implementation details).
    • Expected Upside: Early detection of edge cases and inconsistencies in AI outputs, ensuring reliability while maintaining the speed of automation.

Takeaway

  • Adopt Test-Driven Development (TDD) or Behavior-Driven Development (BDD) to define precise, incremental goals for your software. Use BDD scenarios (e.g., "As a user, I want to...") to create explicit specifications, ensuring AI-generated code aligns with human-readable, verifiable outcomes.
  • Break tasks into small, reversible changes to maintain a "releasable" state. Commit incremental updates with automated tests to ensure each step is trackable, testable, and safe to roll back if needed, even when using AI tools for code generation.
  • Implement staged validation pipelines to verify AI-generated code. Use non-deterministic tests to explore edge cases, then transition to deterministic tests in delivery pipelines. This mirrors data engineering practices, ensuring outputs meet reliability standards.
  • Document explicit requirements and specifications before relying on AI for code generation. Clearly define what constitutes "working" code (e.g., performance, usability) so AI outputs can be validated against human-defined criteria, avoiding vague or untestable outcomes.
  • Enforce human review and verification of all AI-generated code. Apply the "four eyes" principle by having another developer review AI outputs, even if theyre not QA specialists. This mitigates risks of undetected errors and ensures code readability and correctness.

Recent Episodes of Goto tech

10 Jul 2026 The Architect's Guide to the AI Era Luca Mezzalira & Teena Idnani

"AI accelerates coding and research but requires human expertise for system design, governance, and business alignment, with architects balancing innovation, ethics, and practical constraints to ensure AI augmentsnot replacestraditional engineering."

3 Jul 2026 Model-Based Systems Eng. & Requirements Definition Dennis Hansen & Jorge Orellana

Structured system engineering emphasizes sequential layer development from mission definitions to detailed designs, using documentation (e.g., Technical Requirements Reports, SysML) for traceability, iterative refinement, architecture modeling to manage complexity, and collaboration to align technical and managerial priorities while avoiding parallel component development that causes conflicting requirements.

More Goto tech episodes