Field Notes — Software Engineering

The Judgment Layer

Natural language didn't just give computers a friendlier front door. It became the interface developers use to specify software itself — and that single change is rewriting design, development, deployment, use, maintenance, and support all at once.

7 min read Software Engineering & AI Updated 2026

Written by Claude Sonnet 5 on behalf of Kingsley Idehen, based on notes he collated

01
Design
02
Develop
03
Deploy
04
Use
05
Maintain
06
Support

Every major shift in computing has been preceded by a shift in interface. Punch cards gave way to command lines; command lines gave way to windows, icons, and pointers; pointers gave way to touch. Each transition changed not just how people used software, but how software was built — because the interface paradigm quietly dictates what kinds of programs are worth writing, and how the people writing them reason about correctness.

Natural language processing is the newest entrant in that lineage, and it is a strange one. It isn't only a new way to point at things — it's a new way to specify intent, and it sits on both sides of the development equation at once. It is the interface end users type into. It is also, increasingly, the interface developers use to describe what a system should do, letting a model produce the implementation. That dual role is why its arrival is reorganizing the entire software lifecycle rather than one corner of it.

Infographic titled 'Software Development Is Changing Fast: New Rules for Software Engineering in the AI Era,' laying out the big shift, the four forces of change, the new engineering loop, the three debts, and seven new rules.
The chart this essay expands on — “Software Development Is Changing Fast: New Rules for Software Engineering in the AI Era.”

Chart by Carlos E. Perez, Intuit Machine · view full size ↗

§1

From scarce code to scarce judgment

For fifty years, the binding constraint on software teams was implementation capacity. Writing correct, working code was slow and specialist work, and because it was expensive, the act of writing it doubled as a forcing function for understanding — a team building a feature by hand was, almost incidentally, working through its edge cases as they typed.

NLP-driven generation breaks that link. When a model can produce a working draft of a function, a service, or a whole feature from a paragraph of description, code stops being scarce. Teams can now generate implementations faster than they can review, absorb, or trust them. The bottleneck doesn't vanish — it relocates, from can we build this to do we understand what we built, and can we stand behind it.

The realignment: when producing code becomes cheap, the scarce resource is no longer implementation. It is judgment — specifying what should happen, validating that it works, and taking responsibility for what ships.

Judgment doesn't get cheaper just because generation got faster. If anything it gets more load-bearing, because there is more generated surface area to specify, validate, and answer for.

§2

The tetrad, applied to a new interface

Adding a natural-language layer to the stack doesn't act as a single force. It pulls in four directions simultaneously — the same structure Marshall McLuhan proposed for how any new medium reworks what came before it. His tetrad of media effects asks one question of each of four quadrants at once, and the field's present turbulence is the sum of all four answers, asked of natural language as computing's newest interface.

NLPas interface

Explodes implementation and prototyping capacity. Makes experimentation, refactoring, and exploration cheap. Accelerates iteration from days to hours.

Code abundance becomes trust scarcity. More generation can create more complexity than teams can understand. Production systems flip into confidence-producing systems.

Brings back specification-first thinking. Revives invariants, architecture, and stronger validation methods long set aside as implementation absorbed the budget.

Pushes syntax recall and boilerplate coding into the background. Weakens effort-based planning and line-by-line review as central practices.

Marshall McLuhan's tetrad of media effects (Laws of Media, 1988) — every medium simultaneously enhances, obsolesces, retrieves, and reverses into its opposite when pushed to its limit.

§3

Generation moves to step four

In design and early development, the practical consequence is that generation becomes one step embedded in a larger loop — not the loop itself.

Un
Understand
Sp
Specify
Co
Constrain
Ge
Generate
Ch
Challenge
Ve
Verify
Ob
Observe

Generate is the fourth step, not the first — everything before it shapes the output; everything after it earns trust in it.

Since manual line-by-line review no longer scales to the volume of generated code, review moves upstream into the constraints that shape generation, and downstream into evidence gathered in production — not a read-through, but an audit trail.

How the standing practices are being rewritten

This is also why long-standing practices are being revised rather than discarded. Each keeps its name and shifts its center of gravity:

PracticeOld center of gravityNew center of gravity
AgileShipping incrementsLearning from increments
Sprint planningImplementation capacityEvaluation & integration capacity
Test-driven dev.Writing tests before codeDefining correctness before generation
Code reviewInspecting implementationInspecting assumptions, risk, evidence
ArchitectureGuiding implementationConstraining cheap-to-produce complexity
DocumentationExplaining the codePreserving intent & provenance
CI/CDTesting human changesProving generated changes are safe
§4

The case study: decoupling identity itself

The clearest evidence for how deep this shift runs isn't a new practice — it's an old architectural principle that finally becomes practical. Open-standards communities have argued for decades that five concerns should be loosely coupled rather than welded together: who you are, what's known about you, how that's proven, what you're allowed to do, and where the data actually lives. On paper the separation was always clean. In production it rarely held, because nothing could traverse the seams between the layers cheaply enough to keep them separate — so systems collapsed them into a single vendor-specific identity stack instead.

A standardized identifier — a hyperlink — that names an entity without asserting anything about it. Nothing more than an anchor point.

URIWebIDDID

Credentials — profiles and preferences — built as an entity-relationship graph anchored to that identifier, forming a web equally navigable by a person and a software agent.

RDFJSON-LDSchema.org

Credential verification, pluggable across any of several open-standard protocols — never fused to the identifier itself.

TLS client certsOAuthOIDCWebID-TLS

Fine-grained, attribute-based access control that reasons over user, agent, intent, and resource attributes — all represented in the same machine-computable graph, not scattered across config files.

ABACWebACLSHACL

The actual data spaces — databases, knowledge bases, filesystems, APIs — targeted by CRUD operations, swappable underneath without disturbing any layer above.

SQLTriple storesWebDAVREST
Five concerns, five independently replaceable layers — coupled only through shared, standardized identifiers.

What was missing wasn't the standards — most of this has existed in open form for years. What was missing was a second class of traverser. The promise of a web "equally navigable by humans and software agents" stayed aspirational as long as only humans could actually read the graph, follow the identifiers, and reason about the attributes; software touching it needed bespoke integration code at every seam, which is exactly what re-welds loosely coupled layers back together under deadline pressure.

An NLP-capable agent can read the same entity-relationship graph a person reads, follow the same standardized identifiers, and reason over the same attributes — without a bespoke adapter per layer. That is what turns loose coupling from a diagram into an operating architecture.

This is the pattern behind §3’s inversion in miniature: an architecture that looked elegant but impractical becomes not just achievable but structurally necessary, because generating five tightly-coupled point solutions is now cheaper than building one loosely-coupled system was — right up until someone has to change an authentication provider, migrate storage, or explain why an agent had access to something it shouldn't have. The specification and governance discipline from §3 is precisely what keeps that graph trustworthy enough for both kinds of readers to rely on it.

§5

The dogfooding gap: demos are not evidence

Software vendors have not historically demonstrated the virtues of what they sell by running it on their own hardest, most representative problems. The industry default is the lightweight canned demo: curated data, a rehearsed path, a scenario sized to finish in twenty minutes without anything breaking. The gap between "this is what we actually use to run our own systems" and "this is what we're showing you" is a dogfooding gap at the point of sale, not just inside engineering.

The asymmetry survives because complexity cuts both ways. The same complexity that would make a real dogfooding showcase persuasive is exactly what makes it hard for a customer to demand one as an evaluation requirement in the first place. Writing "prove you run this on problems as hard as ours" into an RFP requires the buyer to already understand that complexity well enough to tell a genuine demonstration from a staged one — the same specification burden this essay has been describing throughout, just moved to the buying side of the transaction.

What buyers assume they're evaluating
What a canned demo actually proves
"This works on problems like ours"
It works on a problem sized and staged to always succeed.
"This is how the vendor actually uses it"
This is a script built for the meeting, not the vendor's own daily-use system.
"The vendor trusts it enough to run their own operation on it"
Nothing about the vendor's own operation is disclosed at all.

None of this requires bad faith on the vendor's part or naivety on the buyer's. It requires only that specifying a real dogfooding showcase is itself hard — harder than specifying feature checkboxes or price — and evaluation processes default to what's easy to specify and easy to score.

The complexity that would make a real demonstration persuasive is the same complexity that keeps a buyer from being able to demand one. That isn't a coincidence — it's the specification burden this essay has been describing, moved from engineering team to purchasing committee.

Seen this way, a canned demo is verification debt exported to the point of sale: it becomes evidence not because it demonstrates correctness under real complexity, but because nobody in the room is positioned to demand the harder proof.

§6

What deployment inherits: three debts

NLP-assisted generation changes what can silently go wrong, in ways that surface at deployment and compound across the maintenance lifecycle. Three liabilities in particular tend to accrue quietly:

01 — SPEC

Specification debt

The system makes hidden decisions because the requirements were never made explicit. Nobody wrote it down, so the model chose plausibly — and nobody notices until it fails.

02 — VERIFY

Verification debt

Generated artifacts reach production before enough evidence exists that they're correct. Passing a smoke test is not the same as being validated against the spec.

03 — COMPREHEND

Comprehension debt

Teams depend on systems they can no longer fully explain, modify, or diagnose, because no one ever built a mental model of the parts a human didn't write.

Cartoon of two engineers standing before a roped-off, cobweb-covered server rack under a sign reading DO NOT TOUCH, ASK DAVE, with a framed memorial photo of Dave lit by candles beneath it.
Comprehension debt, illustrated. “Nobody knows what it does. We just know what happens when it stops.”

Cartoon by Justin Miller · view full size ↗

AI accelerates all three unless specification discipline, verification rigor, and provenance-preserving documentation are deliberately redesigned to keep pace. Speed without redesigned guardrails just produces debt faster — and debt is exactly what maintenance and support organizations inherit.

§7

What using the system well now means

For the people doing AI-assisted development day to day, none of this is about writing code faster. It's about the discipline that makes fast-written code trustworthy — which is exactly what the people downstream, in support and maintenance, need most. Seven rules fall out of the shift:

  1. Specify critical behavior before generating code.
  2. Treat tests as evidence, not proof.
  3. Review assumptions, not just syntax.
  4. Constrain complexity — AI makes it cheap to create.
  5. Preserve provenance: why the code exists, what it's supposed to do.
  6. Keep humans responsible for high-consequence decisions.
  7. Optimize for verified capability, not volume of code produced.
§8

Three roles, one developer

This is reflected in what the best developers are becoming — not faster typists, but people who hold three roles at once.

Defines intent, constraints, and invariants before anything is generated.

Demands evidence and actively challenges hidden assumptions, rather than trusting output at face value.

Decides what the organization should and shouldn't let into the system — rationing complexity like any other scarce resource.

The future of software engineering is not about writing more code. It is about creating trustworthy systems in a world where code is cheap.

§9 — Closing thesis
Reference

Frequently Asked Questions

Quick answers to the essay’s core claims — each question links to its entity in the RDF companion.

What does “scarce judgment” mean in an AI-assisted software team?
It means the bottleneck moved. When generating code is cheap, the limiting factor stops being how fast a team can type an implementation and becomes how well it can specify what should happen, verify that what was generated actually does it, and take responsibility for the result.
Why apply McLuhan’s tetrad of media effects to AI coding tools?
Because it captures four simultaneous effects a new medium has, rather than treating change as one-directional “AI makes things faster.” Natural language as an interface enhances prototyping, obsolesces syntax recall, retrieves specification-first thinking, and reverses code abundance into trust scarcity — all at once.
Why does “Generate” sit at step four of the engineering loop instead of first?
Because everything before it — understanding the problem, specifying the intended behavior, and constraining the solution space — determines whether what gets generated is worth trusting. Everything after it — challenging, verifying, observing — is where that trust gets earned in practice.
What are the three debts AI-assisted development can create?
Specification debt (hidden decisions made because requirements were never written down), verification debt (generated code used before enough evidence exists that it’s correct), and comprehension debt (teams depending on systems nobody can fully explain).
Why is comprehension debt the hardest of the three to notice?
Because it doesn’t fail loudly. A system with comprehension debt keeps working — right up until it needs to be changed, debugged, or explained under pressure, and nobody left on the team can do any of those things.
What are the five layers of the loosely coupled identity stack described in this essay?
Identity (a standardized identifier), identification (a credentials graph anchored to it), authentication (pluggable verification protocols), authorization (attribute-based access control over a machine-computable graph), and storage (the data spaces targeted by CRUD operations).
Why couldn’t this loosely coupled identity architecture work in practice before AI agents existed?
Because loose coupling only holds together if something can actually traverse the seams between the layers. As long as only humans could read the entity-relationship graph and reason over its attributes, every integration needed bespoke adapter code — which is exactly what re-welds separated layers back into one vendor stack under deadline pressure.
What is the “dogfooding gap” between vendor demos and real product use?
Vendors have not historically demonstrated their software by running it on their own hardest, most representative problems — the default is a lightweight, curated demo instead. That gap persists because the same complexity that would make a real showcase persuasive is exactly what keeps buyers from being able to demand one as an evaluation requirement: writing "prove you dogfood this" into an RFP requires already understanding the complexity well enough to tell a genuine demonstration from a staged one.
What are the seven new rules for software engineering this essay proposes?
Specify critical behavior before generating code, treat tests as evidence not proof, review assumptions not just syntax, constrain complexity, preserve provenance, keep humans responsible for high-consequence decisions, and optimize for verified capability rather than volume of code. See the How To section below for the full list with links.
What three roles do the best developers now hold at once?
Specifier (defines intent, constraints, and invariants), Verifier (demands evidence and challenges hidden assumptions), and Governor of Complexity (decides what the organization should and shouldn’t let into the system).
Who created the chart and the cartoon featured in this essay?
The opening chart, “Software Development Is Changing Fast,” is by Carlos E. Perez (Intuit Machine). The comprehension-debt cartoon, “Nobody knows what it does…,” is by Justin Miller. Both are credited inline with links to their profiles and the original hosted images.
Is this essay itself digitally signed?
Yes. The HTML, Markdown, and RDF companion are each signed with a detached RSA-SHA256 signature tied to Kingsley Idehen’s WebID-TLS certificate — see the “Digitally signed” card in the footer for the fingerprint and the sibling .sig file.
Where can I query this essay’s own concepts as structured data?
In the RDF companion (linked in the footer), which models every concept above — the tetrad’s four effects, the five stack layers, the three debts, the seven rules, and the three roles — as schema.org entities with resolver-backed IRIs.
Reference

Glossary

Every concept minted for this essay’s companion RDF, defined in one line.

Scarce Judgment
When producing code becomes cheap, the scarce resource is no longer implementation — it is judgment: specifying what should happen, validating that it works, and taking responsibility for what ships.
McLuhan’s Tetrad of Media Effects
Every medium simultaneously enhances, obsolesces, retrieves, and reverses into its opposite when pushed to its limit — applied here to natural language as computing’s newest interface.
Enhances
Explodes implementation and prototyping capacity; makes experimentation, refactoring, and exploration cheap.
Obsolesces
Pushes syntax recall and boilerplate coding into the background; weakens effort-based planning and line-by-line review.
Retrieves
Brings back specification-first thinking and architectural invariants, long set aside as implementation absorbed the budget.
Reverses Into
Code abundance becomes trust scarcity; production systems flip into confidence-producing systems.
Identity (stack layer)
A standardized identifier — a hyperlink — that names an entity without asserting anything about it.
Identification (stack layer)
Credentials — profiles and preferences — built as an entity-relationship graph anchored to the identifier.
Authentication (stack layer)
Credential verification, pluggable across open-standard protocols, never fused to the identifier itself.
Authorization (stack layer)
Fine-grained, attribute-based access control reasoning over user, agent, intent, and resource attributes.
Storage (stack layer)
The data spaces — databases, knowledge bases, filesystems, APIs — targeted by CRUD operations.
Dogfooding Gap
The gap between what a vendor actually runs on its own hardest problems and the lightweight canned demo it shows customers instead — sustained because the complexity that would make a real showcase persuasive is what keeps buyers from being able to demand one.
Specification Debt
The system makes hidden decisions because the requirements were never made explicit.
Verification Debt
Generated artifacts reach production before enough evidence exists that they are correct.
Comprehension Debt
Teams depend on systems they can no longer fully explain, modify, or diagnose.
Specifier
Defines intent, constraints, and invariants before anything is generated.
Verifier
Demands evidence and actively challenges hidden assumptions.
Governor of Complexity
Decides what the organization should and should not let into the system.
Reference

How To Apply This

The seven rules from §7, indexed here for quick lookup.

Generation provenance
Language model
Claude Sonnet 5 Anthropic — authored this essay, based on notes collated by Kingsley Idehen
Agent platform
Claude Code Anthropic — execution environment
Framework cited
Laws of Media Marshall McLuhan, 1988 — tetrad of media effects
RDF companion
Turtle (.ttl) Structured provenance & concept graph for this essay
Server platform
Virtuoso OpenLink Software — hosts this page and its RDF companion
Linked data resolver
URIBurner Resolves the entity links throughout this essay
Digitally signed
RSA-SHA256 (.sig) Kingsley Idehen — SHA-256 fingerprint A1:47:71:84:4A:8E:F1:C0:DE:95:F9:DC:AA:2A:7A:12:31:87:EC:28:3B:CB:2F:D8:93:4D:9A:77:1B:42:25:96 · verify against the public certificate
How to verify this signature

Each rendition (this HTML, the Markdown companion, the RDF companion) has its own detached RSA-SHA256 .sig file, computed over the exact bytes of that file. To check that a copy hasn't been altered since Kingsley signed it:

# 1. Fetch the public certificate and this file's .sig, alongside the file itself
curl -O https://kingsley.idehen.net/DAV/home/kidehen/Public/YouID/link-in-bio-credentials-5/cert.pem
curl -O {this-file-url}.sig

# 2. Extract the public key from the certificate (no passphrase needed — it's public)
openssl x509 -in cert.pem -pubkey -noout > pubkey.pem

# 3. Verify the signature against the file you actually have
openssl dgst -sha256 -verify pubkey.pem -signature nlp-judgment-layer-claude_sonnet_5-1.html.sig \
  nlp-judgment-layer-claude_sonnet_5-1.html
# → "Verified OK" means: this exact file, unaltered, was signed by the
#   private key paired to that certificate (CN=Kingsley Uyi Idehen).

Substitute the .md or .ttl file and its matching .sig to verify those renditions instead. A fingerprint mismatch or "Verification Failure" means the file differs from what was signed — don't trust it.