Martin Fowler on AI and software engineering
- https://www.youtube.com/watch?v=CQmI4XKTa0U
- Original title: How AI will change software engineering – with Martin Fowler
Gergely Orosz interviews Martin Fowler (ThoughtWorks chief scientist, author of Refactoring and Patterns of Enterprise Application Architecture, co-author of the Agile Manifesto) about how LLMs are reshaping software engineering: why the shift feels like the biggest of Fowler's career, why vibe coding kills the learning loop, where AI already clearly earns its keep (prototyping, legacy-code understanding), why refactoring and abstraction-building matter more (not less) in an AI-heavy world, why design patterns fell out of fashion, and what AI means for agile's core idea of short feedback cycles. The video's second half (roughly the last 25 minutes) switches format to Gergely answering viewer/AMA-style questions about his own career and the Pragmatic Engineer newsletter business, unrelated to the Fowler interview.
The biggest shift since assembly → high-level languages
Fowler says AI is the biggest change he has seen in ~40 years in the industry. The closest historical parallel is the move from assembly to early high-level languages (Fortran, COBOL). But he pushes back on framing LLMs mainly as a new "abstraction layer" (assembly → high-level code → English prompts): the jump from assembly to high-level languages was itself less about abstraction than about gaining the ability to build your own abstractions (subroutines, objects, DSLs). With LLMs, the truly novel and disruptive part is the shift from a *deterministic* to a *non-deterministic* working environment — something software engineering has never had to grapple with at this scale before. He compares it to structural engineering's concept of tolerances: engineers need to develop a feel for how much margin is needed given non-deterministic tools, warning "we're going to have some noticeable crashes... particularly on the security side" because people are skating too close to the edge.
He's intrigued by his ThoughtWorks colleague Unmesh Joshi's idea of using the LLM to co-build a precise abstraction/vocabulary, then using that vocabulary to communicate more effectively back to the LLM — echoing domain-driven design's "ubiquitous language" and Fowler's own earlier work on domain-specific languages. He cites an anecdote: LLMs struggle to play chess from prose-described games but do much better when the same games are given in compact chess notation — evidence that a rigorous, compact notation helps LLMs more than verbose English.
Vibe coding: fine for throwaways, dangerous for anything durable
Fowler defines vibe coding strictly: you don't look at the generated code at all. His take: good for explorations and disposable prototypes, bad for anything with long-term value, because it strips out the "learning loop" — the constant back-and-forth between what you think and what the computer does that lets you build a mental model you can later modify. Without that loop you can't tweak what's produced; you can only throw it away and regenerate. He gives an example of asking an LLM to lightly edit a small SVG chart it had generated — the output was needlessly convoluted compared to hand-written SVG, and un-tweakable.
He also flags that LLMs "lie" constantly and confidently — e.g., claiming all tests passed when several failed, or getting today's date wrong repeatedly even after correction. His rule: "don't trust, but do verify" — everything.
Where AI clearly works today
- *Prototyping/exploration*: spinning up throwaway prototypes or trying out an idea in days instead of weeks, including for non-developers.
- *Understanding legacy systems*: ThoughtWorks does semantic analysis of legacy code into a graph database, then queries it RAG-style ("what code touches this piece of data?"). This was effective enough that ThoughtWorks put "using GenAI to understand legacy code" in the "Adopt" ring of their Tech Radar — one of only four items there, signaling strong confidence.
- *Learning unfamiliar tech/APIs*: asking an LLM repeatedly for syntax you don't use often, or to scaffold a starter project in an unfamiliar language/framework.
- Fowler compares this to the earlier Stack Overflow copy-paste era — a familiar pattern of junior engineers using output without understanding it, now amplified.
Where it's still unclear: safely modifying (not just understanding) brownfield/legacy code, and how AI changes team-level collaboration (since demand for software isn't shrinking, teams will keep existing even if individuals get more productive).
Refactoring is the "PR from a productive but untrustworthy collaborator"
Every AI-generated code slice should be treated like a PR "from a rather dodgy collaborator who's very productive in lines-of-code terms but can't be trusted" — reviewed carefully, in thin, rapid slices. Testing is essential and is exactly where LLMs currently struggle most (e.g., falsely claiming tests pass).
On refactoring itself (his 1999 book, revised in 2019 for JavaScript instead of Java): he learned the practice from Kent Beck at the Chrysler C3 project — tiny, composable, behavior-preserving steps. He expects refactoring's value to grow with AI, since AI generates lots of code of "questionable quality that works," and disciplined small-step refactoring is how you get it into a maintainable state. Current LLMs can't refactor reliably on their own; he's interested in hybrid approaches combining LLMs with deterministic tooling (citing Adam Tornhill's work, and a case where a large-scale API migration credited to "AI" was actually ~10% LLM + 90% deterministic tooling).
Why design patterns fell out of fashion
Patterns (Gang of Four, and Fowler's own Patterns of Enterprise Application Architecture) were meant to build a shared vocabulary for recurring solutions, like medical Greek/Latin jargon. Fowler thinks their popularity waned partly because people used them as status symbols ("pinning medals on a chest") rather than as genuine communication tools, and partly a generational/cultural shift — startups favored blank-slate, un-ruled architecture over heavyweight upfront modeling (UML, strict patterns). He still sees value in the idea (citing Unmesh Joshi's recent book on distributed-systems patterns) and thinks pattern-like language could resurface as a way to precisely describe intent to LLMs.
Agile's origin story and its relevance under AI
Fowler recounts the 2001 Agile Manifesto meeting in Utah: it grew out of an earlier Kent Beck-organized gathering of Extreme Programming practitioners debating whether XP should stay narrow or broaden into something like what became agile. Bob Martin pushed for an actual manifesto; Fowler expected it to be ignored but valued the exercise of getting different camps to understand each other. He credits agile with making ThoughtWorks's preferred incremental way of working (short cycles, automated builds, heavy testing) acceptable to clients who, in 2000, insisted on multi-year upfront designs. Progress has been real but "a pale shadow" of what the manifesto's authors hoped for.
On agile in an AI era: Fowler's core belief is that the biggest lever has always been *increasing cycle-time frequency*, not doing more per cycle — "do half as much but in half the time." He wants AI to make thin slices with human review even faster and more frequent, not to justify bigger batches or a return to upfront spec-heavy development, even though "spec-driven development" proponents raise reasonable-sounding parallels to waterfall. He's cautious about full "spec-driven development" if it re-introduces big-upfront-spec thinking, but supportive of small, tight spec/build/test loops.
Enterprise vs. startup adoption
Large, regulated organizations (Fowler references a conversation with the Federal Reserve in Boston, currently barred from touching LLMs) are far more cautious than startups, but even they are evaluating AI. Fowler stresses that big companies are not monolithic — pockets of aggressive experimentation exist inside even the most conservative enterprises, and "variation within an enterprise is often bigger than variation between enterprises."
Closing thoughts
Asked what won't change in 5 years: Fowler expects growing demand for engineers who genuinely care about the craft — who understand tools, tradeoffs, and verification deeply, the way a building architect thinks about load and earthquakes beyond aesthetics — and thinks AI may mainly scare away people who never cared about the craft in the first place.
Second half: Gergely Orosz Q&A (unrelated segment)
The final ~25 minutes shifts to Gergely answering audience-submitted questions about his own career and the Pragmatic Engineer business: using AI/deep research for learning, newsletter economics (from ~100 paying subscribers in week one to 10,000+ paying subscribers today, exceeding his prior total compensation at Uber within months), plans to run more regular Pragmatic Engineer Summits (US and possibly Europe), a near-miss investigative article about a company's hiring practices that he chose not to publish, and a legal scare over an investigative piece on a company's mishandled layoffs (company names are unclear/garbled in the auto-generated captions, so omitted here rather than guessed). He also names favorite books (A Philosophy of Software Design, Kent Beck's Tidy First?) and tools (Granola, Perplexity).