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.
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 ContextConclusionSort: