Continuous Delivery in a World of Constant Change • Abby Bangser & Dave Farley • GOTO 2025
Summary
Continuous Delivery (CD) is defined as ensuring software is always in a releasable state, achieved through small, verifiable steps and constant feedback. This approach, fundamental to scientific and engineering problem-solving, guarantees better outcomes in software development. In the context of AI and Large Language Models (LLMs), these established XP-style practices, such as small, testable changes and the ability to revert, become even more critical. While AI offers potential for abstraction, it often struggles with incrementalism and precision, leading to "messy" code. The speakers emphasize that AI programming must facilitate problem decomposition, human communication, and incremental progress. Behavior-Driven Development (BDD) and Test-Driven Development (TDD) are proposed as essential methods to precisely specify desired outcomes, allowing for verification of AI-generated code. The discussion also highlights the ongoing challenge of human verification for AI output and the organizational "people problems" that AI cannot solve, such as coupling between teams. A recent Dora report indicates experienced programmers are better at steering AI, raising concerns about the development of junior talent.
Key takeaway
For development teams integrating AI into their workflows, prioritize established Continuous Delivery principles like small, verifiable steps and testable changes. AI's propensity for non-deterministic output and large code rewrites makes precise specification via Behavior-Driven Development (BDD) or Test-Driven Development (TDD) crucial. You must actively "trust but verify" AI-generated code, ensuring human oversight and robust testing to maintain quality, control incremental progress, and avoid the pitfalls of unconstrained automation.
Key insights
Continuous Delivery's incremental, verifiable steps are foundational for robust software development, especially with AI.
Principles
- Software must always be in a releasable state.
- Solve complex problems through small, verifiable steps.
- Programming aids problem decomposition, communication, and incremental progress.
Method
Employ Behavior-Driven Development (BDD) to precisely specify desired outcomes, then execute these specifications as tests against AI-generated code to ensure accurate fulfillment.
In practice
- Adopt XP-style practices for AI-assisted development.
- Use BDD specifications to verify AI-generated code.
- Cultivate human oversight for AI code quality.
Topics
- Continuous Delivery
- AI Development
- Behavior-Driven Development
- Test-Driven Development
- eXtreme Programming
- Software Quality Assurance
Best for: Software Engineer, DevOps Engineer, AI Engineer
Related on AIssential
Editorial summary, takeaway, and curation by AIssential. Original article published by GOTO Conferences.