Speaker Notes

Tech Truth: Agile Evolution & the Future of SW Engineering • Martin Fowler & Kent Beck • GOTO 2025

Artificial intelligence dramatically accelerates coding and lowers language barriers, but requires rigorous verification, incremental delivery, and strong engineering principles to maintain software reliability.

GOTO Conferences · 53:56 · YouTube ↗

Talk · 2 speakers (agile pioneers)  Intermediate · Concepts, historical context, and software engineering philosophy

Highlights

8 clips · 11 min of 54 min
    • Raise your hand or finger to signal you want to speak without shouting over others.
    • The psychological weight of a raised hand naturally quiets a room over time.
    • Lowering your hand without speaking signals that your point is no longer relevant.
    • LLM coding workflows feel like a slot machine with unpredictable wonderful or terrible outcomes.
    • The excitement of rapid prototyping leads to obsessive late-night coding sessions.
    • AI can quickly bootstrap complex tools like testing frameworks, but hits walls where progress stalls.
    • AI allows developers to effortlessly switch implementation languages like Rust, Python, or Haskell.
    • Developers can build in unfamiliar languages without deep prior syntax mastery.
    • Formal verification and complex paradigms become accessible through AI translation.
    • Industry radar lists heavyweight frameworks like SAFe firmly in the hold category.
    • Scaled agile approaches often add massive bureaucracy and resistance to change.
    • True organizational agility requires focusing on core principles rather than heavy frameworks.
    • Move from monthly to bi-weekly integrations to expose hidden organizational bottlenecks.
    • Knock down blockers iteratively rather than attempting instant continuous delivery.
    • Celebrate small cadence wins before tightening the release loop further.
    • Running the same spec through an LLM twice often yields incompatible hidden validation rules.
    • Treat AI-generated code like an overconfident, maliciously subtle junior developer.
    • Take small, verifiable steps and read every generated line of code closely.
    • Using AI mirrors historical computer science challenges of building reliable systems from unreliable parts.
    • Use double-checking and systemic verification to prevent LLMs from pushing systems into invalid states.
    • Expecting flawless single-prompt answers ignores the inherent unreliability of probabilistic components.
    • Resist organizational pressure to jump instantly from one feature straight into the next.
    • Use AI as a patient tutor during feature gaps to explore refactoring, missing tests, and alternative implementations.
    • Deliberate practice during downtime is what separates true masters from average programmers.

Questions this video answers

6 · every answer cites the moment it was said
01 How do I stop people from talking over each other in meetings? 3 sources · 1:37

If you are in a meeting where people keep talking over each other, a simple hack is to raise your hand or finger. You might be ignored at first, but participants will gradually catch on and start doing the same, leading to a much more civilized conversation. The most powerful moment is when you put your hand back down if your point becomes irrelevant.

02 What is vibe coding and how does it change project scope? 3 sources · 7:44

Vibe coding is using AI genies to build ambitious projects that were previously too time-consuming to tackle manually. It lets developers focus on high-level skills like defining a distant vision, choosing what to build, and optimizing feedback loops. While it removes language barriers and allows you to work in unfamiliar languages, you still have to watch out for small-scale details and confidently incorrect AI behavior.

03 What are the most important things to focus on when scaling agile in large organizations? 3 sources · 19:32

Scaled agile frameworks often come with big costs and risks, and organizations naturally try to slow down change. To make large teams more agile, you should focus on improving the communication path between development teams and their users or customers. Additionally, you should analyze the flow of work, find where queues and bottlenecks are, and systematically cut them in half over time.

04 What is the difference between augmented coding and vibe coding? 2 sources · 36:13

Augmented coding involves a developer actively driving the process and making critical design decisions while using the AI assistant like an exoskeleton. In contrast, vibe coding occurs when someone with little or no programming skills relies entirely on prompts, accepting outputs without understanding or the ability to fix failures.

05 How can developers build reliable systems when using unreliable AI tools? 2 sources · 41:46

Drawing from computer science principles established since von Neumann, developers must implement double-checking and inhibition mechanisms to prevent invalid states. A practical technique is asking the LLM the same question or generating the same code multiple times to diff and compare the results for consistency.

06 How should junior developers utilize the gaps between implementing features? 2 sources · 51:16

Junior developers should resist the pressure to immediately start the next feature and instead use the gaps to learn and master their craft. They can leverage the AI as an endless tutor to explore alternative implementations, run coverage testing, find missing tests, and refactor code.

Section-by-section summary

11 parts

Simple meeting etiquette hacks prevent talking over each other

A polite physical cue like raising a finger helps restore order to chaotic discussions. This simple meeting hack scales from small workshops to remote setups using collaborative digital tools.

AI vibe coding makes previously impossible projects achievable

Experimenting with LLMs allows developers to tackle complex, long-abandoned pet projects. However, the workflow resembles a variable reinforcement slot machine with wildly unpredictable results.

LLMs eliminate language barriers and expand software scope

AI coding tools enable developers to easily write code in unfamiliar languages like Rust, Python, or Haskell. This dramatically lowers the friction of exploring new technical domains and paradigms.

Scaled agile frameworks fail to improve user communication

Heavy corporate agile frameworks add unnecessary costs, risks, and bureaucracy to organizations. Teams should instead prioritize direct, high-flow communication channels between developers and actual users.

Systematically halving workflow queues unlocks continuous delivery

Organizations must locate workflow bottlenecks and intentionally halve integration delays over time. Continuous improvement in flow eventually leads to true continuous delivery and sustainable organizational agility.

Cathedral versus bazaar design decisions

Design decisions can be made early like a cathedral or late like a bazaar depending on your environment's predictability. In a desert requiring strict timelines, teams are forced into rigid upfront design. In a forest where change is accepted, teams can delay decisions until benefits are actually needed.

Skepticism toward metric-driven engineering frameworks

Standardized metric frameworks often face severe warping because the temptation to turn measurements into rigid goals is overwhelming. While initial attempts at industry metrics had good intentions, measurements can easily become counterproductive. Leaders should remain skeptical of turning complex engineering health into simple KPIs.

Augmented coding versus vibe coding

Writing code with AI tools requires active supervision rather than blindly trusting generated output. Vibe coding, where developers abandon understanding entirely, leads to catastrophic failure when bugs arise. Developers must remain the ones driving the bus while treating the AI as an exoskeleton.

Building reliable systems from unreliable LLM components

Engineering reliable software using unreliable components is a foundational computer science problem dating back decades. Because AI outputs are stochastic and prone to subtle errors, systems require rigorous double-checking. Extra verification steps are mandatory to prevent LLMs from pushing applications into invalid states.

Embracing unpredictability through extreme programming principles

Software engineering continues to repeat historical security and quality mistakes rather than learning foundational lessons. However, extreme programming successfully thrives by acknowledging that predicting the future is impossible. Rather than forecasting, teams must adopt flexible postures to handle continuous technological shifts.

Leveraging feature gaps and domain understanding for mastery

Juniors face constant pressure to jump immediately from one feature to the next without pausing. Using the gaps between features to refactor code and prompt AI tutors creates a vital habit of deliberate practice. Ultimately, deep domain understanding and human communication remain far more critical than computer syntax.

0:00 / 53:56
k play/pause · f fullscreen · m mute
n next · p previous clip · t highlights/full
< > slower/faster · / search what was said
  • BitBlit2× · first 8:37

    A graphics primitive operation in Smalltalk that moves a rectangular block of bits between areas using various combining rules.

  • Vibe coding2× · first 7:48

    A style of software development driven by AI coding assistants where developers prompt the AI to build complete systems.

  • Extreme Programming3× · first 18:22

    A software development methodology focused on adaptability, short steps, and coping with unpredictability.