The Pragmatic Engineer — selected conversations
How AI will change software engineering – with Martin Fowler
Eighteen curated conversations on agent workflows, design, harnesses, and software quality
A manually reviewed selection of Pragmatic Engineer conversations with Maggie Appleton, Matt Pocock, Tibo Sottiaux, Martin Fowler, Dex Horthy, Boris Cherny, Mario Zechner and Armin Ronacher, Laura Tacho, Hillel Wayne, Mitchell Hashimoto, Kent Beck, Peter Steinberger, Grady Booch, Steve Yegge, DHH, Dax Raad, Charity Majors, and Addy Osmani. Topics include design prototyping, reusable skills, agent workflows, context and harness design, TDD and verification, architecture, measurement, accountability, and open-source governance. Practitioner observations, product-team claims, and forecasts are not controlled findings.
In this collection Browse 18 summaries 4 of 18
Gergely Orosz, host of The Pragmatic Engineer podcast, interviews Martin Fowler, Thoughtworks chief scientist, author, and Agile Manifesto co-author. Fowler's central argument is that LLMs introduce a shift from deterministic to non-deterministic software construction, so teams should use their speed to tighten learning loops rather than abandon review, testing, and incremental delivery 00:00–01:52(opens in a new tab), 16:45–24:55(opens in a new tab), 1:25:36–1:28:34(opens in a new tab).
Key Points Covered
- Non-determinism is the deeper shift: Fowler compares AI's potential impact with the move from assembly to high-level languages, but says non-deterministic behavior matters more than merely moving to a higher abstraction level 16:45–24:55(opens in a new tab).
- Prototypes and legacy analysis are promising uses: He identifies disposable explorations as a strong fit and reports that Thoughtworks practitioners found LLM-assisted analysis useful enough to recommend investigating for legacy work 25:58–29:10(opens in a new tab).
- Treat generated production code as untrusted: Fowler says durable work should proceed in thin slices, with each slice reviewed as if it came from a highly productive but untrustworthy collaborator. He presents the speedup as worthwhile but smaller than advocates claim 29:10–31:03(opens in a new tab).
- Vibe coding removes a learning loop: He defines vibe coding as disregarding generated code. In his view, it suits throwaway work but removes feedback needed to understand, modify, and evolve durable software 33:09–36:20(opens in a new tab).
- Keep specifications small and feedback concrete: Fowler favors small specifications, tests, production feedback where possible, and a human verification loop over writing a large specification before inspecting code 46:20–50:29(opens in a new tab).
- Refactoring becomes more important, not automatic: He expects more working but questionable-quality code, while saying current LLMs cannot reliably refactor unaided. He is interested in using an LLM to initiate deterministic, inspectable transformations 1:03:53–1:06:58(opens in a new tab).
- Spend generation speed on smaller batches: Fowler argues that AI should accelerate frequent delivery slices rather than enlarge each batch; Orosz supports the point with an account of an Anthropic engineer testing 20 interactive prototypes in two days 1:24:33–1:28:34(opens in a new tab).
- Junior engineers still need mentors and skepticism: Fowler recommends experimenting with AI while prioritizing experienced mentors, probing generated advice for sources and context, and retaining the communication skills needed to determine what software should do 1:34:51–1:42:37(opens in a new tab).
Full video: https://www.youtube.com/watch?v=CQmI4XKTa0U(opens in a new tab)