youtubeJanuary 4, 2026

How AI Will Change Software Engineering

Martin Fowler argues AI represents the biggest shift in software engineering since assembly to high-level languages—not because of abstraction level, but because we now work with non-deterministic systems.

Key Takeaways

  • AI marks the most significant change in software development since the shift from assembly to high-level languages. The comparable historical moment was when FORTRAN and COBOL first let programmers think beyond individual hardware instructions.
  • The critical shift isn't about abstraction levels—it's from determinism to non-determinism. Working with systems that don't produce identical outputs from identical inputs requires completely different mental models, similar to how structural engineers think in tolerances.
  • Vibe coding works for explorations and throwaway prototypes, but removes the learning loop essential for long-term projects. When you vibe code, you skip understanding what the code does, which prevents you from building the mental models needed to maintain it.
  • LLMs excel at helping understand legacy systems. They can analyze existing codebases and explain unfamiliar patterns, making them valuable for working with inherited code.
  • Using rigorous notation helps LLMs perform better. Describing chess matches in plain English produces poor results, but using chess notation enables the LLM to understand game strategy. This parallels domain-driven design's emphasis on ubiquitous languages.
  • Security incidents from non-deterministic tools are likely inevitable. Teams skating too close to the edge of what AI can reliably do will experience noticeable failures.

Notable Quotes

"It's the biggest change I think in my career. If we looked back at the history of software development as a whole, the comparable thing would be the shift from assembly language to the very first high-level languages."

"When you're using vibe coding, you're actually removing a very important part of something, which is the learning loop."

"The biggest part of it is the shift from determinism to non-determinism—suddenly you're working with an environment that's non-deterministic, which completely changes everything."

References

Martin Fowler is the author of refactoring-improving-the-design-of-existing-code, the Agile Manifesto co-author, and Chief Scientist at Thoughtworks. His colleague Unmesh Jooshi has been exploring co-building abstractions with LLMs—using the abstraction to communicate more effectively with the model.

Connections (6)