As LLMs commoditize code generation, the deeper value of coding lies in building conceptual models and shared vocabulary. Code serves two purposes: machine instructions and a domain model for human reasoning. Drawing on Domain-Driven Design concepts like bounded contexts and ubiquitous language, the author argues that the act of writing code is itself a thinking tool that shapes understanding. LLMs work best when the codebase has precise, consistent vocabulary and stable abstractions — poorly named, LLM-generated code can introduce 'cognitive debt' when developers adopt structures without understanding the underlying concepts. Well-structured code with clear abstractions acts as its own harness and context for LLM-assisted development.

11m read timeFrom martinfowler.com
Post cover image
Table of contents
Two Aspects of CodeConceptual Models and VocabularyVocabulary in CodeBounded Contexts and Local VocabulariesProgramming Languages As Thinking ToolsWorking with LLMsCognitive DebtCode as a shared Conceptual ModelCode itself as Harness and ContextConclusion

Sort: