Menu
Martin Fowler·October 5, 2026

The Evolving Role of Code and Conceptual Models in the AI Era

This article explores the shift from 'building' deterministic software to 'nurturing' inferential AI systems, highlighting the new challenges and implications for software development. It discusses how the traditional role of code as both machine instructions and a conceptual model is changing, with LLMs making code generation cheaper while elevating the importance of precise conceptual modeling and high-level representations.

Read original on Martin Fowler

From Building to Nurturing: The AI Paradigm Shift

Martin Fowler discusses a fundamental shift in how we approach software development with the advent of large language models (LLMs). Traditionally, software has been 'built' with a high degree of determinism, where expected behavior is controlled and understood. However, LLMs represent an 'inferential' system that is 'nurtured,' akin to cultivating plants or raising children, where emergent and sometimes unintended behaviors are inherent. This distinction is crucial for system architects to consider when designing and managing AI-driven systems.

⚠️

Implications of Inferential Systems

Unlike deterministic systems where bugs can often be directly fixed or components disabled, inferential LLMs pose challenges when unintended behavior (e.g., hallucinations) occurs. The lack of simple 'fixes' necessitates new approaches to error handling, validation, and system resilience in AI-centric architectures. This suggests a need for robust monitoring, explainable AI (XAI) components, and mechanisms for graceful degradation or intervention.

The Dual Role of Code in the Age of AI

The article delves into the changing perception of code, which historically served two intertwined purposes: instructions for a machine and a conceptual model of the problem domain. With LLMs becoming adept at generating code from high-level prompts, the mechanical act of writing instructions is becoming less central. This doesn't diminish the role of coding but reshapes it, emphasizing the criticality of the conceptual model.

Higher-Level Abstractions as the Source of Truth

Discussions with Sam Ruby and Paul Graham suggest that as LLMs 'drill down' to generate lower-level code (e.g., from Ruby to C++ to assembly), the higher-level language (like Rails) becomes the most compact, precise, and conventional specification of an application. This implies that for system design, maintaining clear, high-level conceptual models and domain-specific languages becomes paramount. The 'source of truth' shifts from the detailed implementation code to the abstract, human-understandable representation that guides AI generation.

  • Conceptual Model Refinement: The primary task shifts to defining and refining conceptual models, discovering the right vocabulary, and iterating on these high-level specifications.
  • Programming Language Importance: Programming languages continue to be vital not just as instruction sets but as tools for expressing and evolving conceptual models.
  • Iterative Exploration: The process of interacting with LLMs for code generation mirrors the iterative exploration and refinement characteristic of agile development and domain-driven design, focusing on feedback and small steps.

This evolution means system designers must focus more on defining robust domain models, clear interfaces, and effective communication strategies for human-AI collaboration, ensuring that the generated systems align with architectural intent and business requirements, even as the lower-level implementation details are increasingly abstracted away by AI.

AILLMconceptual modelingsoftware developmentcode generationsystem designsoftware architectureabstraction

Comments

Loading comments...