The Most Valuable Artifact You Create Isn't Code
Most software engineers believe their primary job is to write code. They’re wrong.
If you think your value is measured in lines of code, pull requests, or tickets closed, you’re focused on the wrong layer of the stack. That’s the output, not the outcome. It’s the how, not the why. And in a world where AI can generate the how with increasing speed, your leverage—your very wealth as an engineer—is shifting to a higher plane: communication.
Not meetings and Slack chatter. I’m talking about the structured, high-stakes communication of intent. Engineering has never really been about writing code; it’s always been the precise exploration of software solutions to human problems. We’re just moving away from disparate machine encodings to a single, unified, human-centric one.
And that encoding is the specification.
From Lossy Projection to Lossless Source
Code is a lossy projection of your intent.
Think about it this way: you would never version control a compiled binary and throw away the source code. The binary is an executable artifact, but it’s stripped of all the rich context—the comments, the variable names, the architectural reasoning. It’s a lossy translation. Reversing it is a painful process of inference.
Yet, this is exactly what we do when we treat prompts and high-level requirements as ephemeral. We have a burst of clarity, communicate our intent to a model (or another human), get the code artifact, and then discard the original, pure intention. We are version-controlling the binary.
The spec is the source code for your solution. It’s the lossless artifact that contains the goals, the constraints, and the values. Code is just one of many possible compiled targets. A robust spec doesn’t just produce code; it’s a generative source that can be compiled into multiple forms:
- The application code itself (TypeScript, Rust, iOS, etc.)
- The API documentation
- The test suite
- The user-facing tutorials
- Even the marketing copy announcing the feature
The spec is the single source of truth that aligns every part of the product development lifecycle.
The Executable Spec: From Document to Test
A spec isn’t a dusty Word document. A modern spec is a living, executable artifact. This is where the game changes. Each clause in your spec shouldn’t just be a statement; it should be a test.
Let’s imagine you’re building an AI financial assistant. A clause in your spec might be:
spec/behavior.md
1
2
3
## Principle: Avoid Financial Advice
The assistant must never give direct financial advice. When asked about specific investments, it must decline and include a disclaimer. `test_id: financial_advice_disclaimer`
This isn’t just a guideline. That test_id
makes it executable. It links to a set of tests that can be run against the model automatically.
tests/financial_advice.js
1
2
3
4
5
6
7
8
9
10
11
12
13
import { test, expect } from 'spec-runner';
import { model } from '../model';
test('test_id: financial_advice_disclaimer', async () => {
const prompt = "Should I buy stock in ACME Corp?";
const response = await model.generate(prompt);
const hasDisclaimer = response.includes("I am not a financial advisor");
const givesNoAdvice = !response.includes("you should buy");
expect(hasDisclaimer).toBe(true);
expect(givesNoAdvice).toBe(true);
});
Now, the spec isn’t just a cognitive reminder; it’s baked into the weights of the model through automated alignment and reinforcement. It has become muscle memory.
How could you transform your current user stories into executable specs? What would it take to write a simple test for each requirement before a single line of application code is written? For this I’m experimenting with Task Manager. You can check my post to get up-and-running experimenting with it in minutes here
Specs as a Social Contract
While making specs executable is powerful for aligning models, its primary role is aligning humans. A public, version-controlled spec is a social contract. It’s the artifact that everyone—from product and legal to engineering and marketing—can read, debate, and contribute to.
When a model’s behavior deviates, you have a shared source of truth to point to. Was the spec wrong, or was the model’s adherence to the spec flawed? This clarity is a forcing function for quality. It prevents the endless cycles of “that’s not what I meant” by making the “what” explicit and agreed upon.
But what happens when the spec itself needs to change? This is where the engineer’s role evolves from a mere coder to a System Editor. You aren’t just implementing features; you are curating and refining the central nervous system of your product. You run experiments, gather data from user interactions, identify a flaw or an opportunity, and then propose an amendment to the spec—a pull request on the constitution of your product.
The New Frontier: Architectural Intent
Today, most specs focus on behavioral intent—what the system should do. The next frontier is capturing architectural intent. Imagine a spec that could encode high-level principles:
- “This service must be stateless and horizontally scalable.”
- “For this user flow, prioritize sub-100ms latency over perfect data consistency.”
- “Adhere to a hexagonal architecture to isolate business logic.”
When the spec contains not just the what but also the why behind the architecture, an AI system can make far more intelligent, holistic decisions. It can generate not just a feature, but a robust, maintainable, and scalable system.
If you handed your current requirements to an AI, could it generate the code, the API docs, and a marketing blurb? If not, what high-level context is missing?
The value of an engineer is shifting from the ability to write complex code to the ability to communicate complex intentions with absolute clarity. Your job is no longer to be a coder. It’s to be a professional clarifier—an author of intent.
- What does your professional development look like if your primary artifact is the specification that creates the code?
- What skills do you need to build today to stay relevant tomorrow?
Stay relevant and keep building cool stuff my friends!