What Is Code?

saikatsg1 pts0 comments

What Is Code?

What Is Code?

12 May 2026

Unmesh Joshi

Unmesh is a Distinguished Engineer at Thoughtworks, based in Pune,<br>India. He is the author of Patterns of Distributed Systems.

generative AI

Contents

Two Aspects of Code

Conceptual Models and Vocabulary

Vocabulary in Code

Bounded Contexts and Local Vocabularies

Programming Languages As Thinking Tools

Working with LLMs

Cognitive Debt

Code as a shared Conceptual Model

Code itself as Harness and Context

Conclusion

What is code? At a high level, the answer to this<br>question seems obvious. Code is what developers write: instructions<br>expressed in a programming language that tells machines what to do.<br>For years, writing code meant typing it out, word by word.<br>Progress is measured by how efficiently code can be<br>produced, compiled, tested and deployed.<br>With modern LLMs we no longer need to type every word to produce code.<br>Large amounts of executable code can now be generated from high-level descriptions.<br>This forces a deeper question: If producing code becomes<br>cheaper, what remains valuable about code?

Two Aspects of Code

Code has always served two distinct but intertwined purposes.

First, code is a set of instructions to a machine . It directs<br>computation, moves data, interacts with storage, and coordinates<br>execution. In the era of LLMs, this is the part being commoditized.

Second, code is a conceptual model of the problem domain . This is the<br>“design” aspect. A well-designed codebase does not only contain<br>instructions for the machine; it also contains concepts for humans and tools to reason with.

The activity we call coding is where these two aspects meet.<br>We are shaping the concepts, names, boundaries, and relationships<br>through which the system is understood.

Conceptual Models and Vocabulary

Making the conceptual model explicit is the deeper aspect of coding,<br>driven by the domain and the use cases the system is meant to address.<br>Every domain comes with established processes, practices, and more importantly<br>a shared vocabulary.<br>That vocabulary is where the conceptual model becomes visible.

Vocabulary is usually understood as the set of words used in a<br>particular language or subject. I am able to write this article because<br>I know the vocabulary of English. The reader can read it because they<br>share that vocabulary with me.

But to understand this article, knowing English alone is not enough.<br>This article is about software development. Software development is<br>a broad, mature field with its own technical vocabulary. When I use a<br>word like abstraction, I am not merely using an English word. I am<br>referring to a specific software development concept, with its own<br>meaning, history, and implications. A reader unfamiliar with software<br>development may understand the word at the surface level, but miss its<br>deeper meaning in this context. The mature areas with their own established<br>vocabulary are called domains.

This is true of all serious domains. Communication depends on shared<br>vocabulary. Whether we are communicating with a person, a<br>framework, or an LLM, the words we use must map to concepts that the<br>receiver can understand and act upon.

Vocabulary in Code

A well designed codebase is a representation of a certain vocabulary.<br>Where does this vocabulary in code come from?<br>This is where the unique nature of software development truly shines.<br>Software development works on the intersection of various domains.<br>At one end we have the domains such as banking, finance, retail, inventory,<br>healthcare, insurance etc. On the other we have domains like web,<br>infrastructure, AI, data engineering etc.

Someone doing web development needs to have a strong grasp of web<br>architecture, the semantics of web methods, the universal caching<br>potential of GET, and the implications of those semantics. Someone who<br>does not know that will not architect complex systems well. The same is<br>true in other domains. Vocabulary is not just a collection of labels.<br>It carries meaning, constraints, and design consequences.

Consider a retail domain. When we write code for retail we talk about<br>customers, products, orders, shipments, payments etc. When we are doing web<br>development for the retail domain, the code contains concepts that map<br>retail domain to web domain. E.g. Catalog is a resource<br>and we can use GET, POST, PUT, DELETE HTTP methods to perform operations on it.<br>Someone writing code needs to be familiar with both the vocabularies.

Coding for a domain is fundamentally an act of translation. The developer<br>maps the domain vocabulary onto the vocabulary of technical domains. In<br>doing so, a new vocabulary is also built using the constructs provided by<br>a programming language. There are concepts like logs, repositories,<br>quorums, transactions, and specific concepts like money. Concepts become<br>types, relationships become interfaces, rules become invariants, and<br>workflows become compositions.

The precise names of variables, the boundaries of methods, and the hierarchy of<br>classes are...

code vocabulary domain development concepts domains

Related Articles