Why
The post's argument is that an agent writing the code does not remove the need for software knowledge but increases it, because the agent builds what it is told and somebody has to decide what to tell it. Its load-bearing sentence is about full-stack and it is the best line in the piece: full-stack is not a person who can build every layer, it is a person who can see every layer. That is a claim about reviewing rather than producing, and once it is stated the other four items turn out to be the same claim applied to different material.
But the headline claim — that the gap is widening rather than narrowing — is asserted rather than argued, and it is not obvious. Tools have historically compressed skill gaps rather than opening them. A compiler removed the advantage of knowing assembly. A spreadsheet let people who could not program do analysis. An IDE with autocomplete narrowed the distance between someone who had memorised an API and someone who had not. The default expectation for a powerful new tool is convergence, so a claim of divergence needs a mechanism, and the post gestures at one without naming it.
The mechanism is that an agent multiplies production and not review. Writing became roughly free; checking did not, because checking is bounded by how much a person can hold in their head at once and that number did not move. So the question for any given piece of work is not how much knowledge it took to produce but how expensive it is to find out that it is wrong. Wherever there is a cheap oracle — it compiles, the test goes red, the page is blank, the endpoint 500s — the agent's output is verified in seconds and the person who knew less gets to the same place slightly slower. The gap closes there, exactly as it did with every previous tool.
The gap opens where the failure is silent, and that is what actually sorts the five. A wrong data model runs perfectly and stays wrong; the post says this better than anything else in it — the app can be rewritten and the data cannot. A missing trust boundary passes every test, because a test asserts that something works rather than that nothing else does. A structure that fits today's load is indistinguishable today from one that fits ten times it. A cost curve does not show up until the invoice. These are the four places with no cheap oracle, and they are exactly where a person who cannot tell will not find out for months. Ordered by silence rather than by the post's order, data comes first and full-stack comes last.
One item deserves an argument rather than agreement. The post says every developer becomes half a security engineer, and adds that a scan is meaningless if you cannot read the result. The second half is right and the first half is too generous. the-boundary-is-the-unit argues that what transfers in security is the trust boundary rather than the list of attacks — so half a security engineer who studied attack lists is a person who can read a scanner report, which is not the same as a person who can tell whether the scanner was pointed at the right thing. The scan has an oracle and the boundary does not, which is the same distinction this card is built on, arriving from the other direction.
How it works
The five, re-sorted by whether being wrong is loud
| Competency | How a wrong answer shows up | Cheap oracle? | So the gap |
|---|---|---|---|
| Data management | It runs fine, and stays wrong for months | None | Widens most |
| Security | Everything passes. A test asserts something works, not that nothing else does | None | Widens |
| Architecture | Correct today, and identical today to one that dies at 10× | None | Widens |
| Production ops | Outages are loud; cost and slow degradation are not | Partial | Mixed |
| Full-stack | It does not render, the endpoint 500s, the type does not check | Yes | Narrows |
The post lists these in roughly the opposite order, starting with full-stack. That is the order in which they are learned, not the order in which they matter now, and the difference between those two orders is the practical content of the argument.
Why divergence needs a mechanism
| Tool | What it removed | What happened to the gap |
|---|---|---|
| Compiler | The advantage of knowing assembly | Narrowed |
| Spreadsheet | The need to program to analyse | Narrowed |
| IDE and autocomplete | Having the API memorised | Narrowed |
| Coding agent | The cost of producing code | Depends on the oracle |
Every previous entry compressed the gap, so this time it widens is the claim that carries the burden of proof. The mechanism that discharges it is that production got cheap and review did not — and review is bounded by a human constant that no tool has moved.
The audit this produces
For one component, name the oracle for each of the five, or write none. Then the reading list is not five subjects, it is however many rows say none. That is a much smaller and much more specific answer to "there is too much to study" than the post gives, and it is the same instruction as one-page-not-the-curriculum: pull the page you are stuck on rather than the next one in order.
Where this catalogue already sits on the five
| The post's item | The card that already works on it |
|---|---|
| Data management | the-split-is-the-experiment — a leak is a data-model failure that scores well; huggingface-is-a-package-manager — the unpinned dependency |
| Architecture | architecture-is-accepted-failure — every pattern introduces the failure it does not prevent |
| Security | the-boundary-is-the-unit — the boundary transfers, the attack list does not |
| Production ops | the-product-is-resume-not-schedule; the-70-has-to-be-wrong for anything probabilistic in the loop |
| Full-stack | Deliberately thin here, which is consistent: it is the row with an oracle |
Three of the five already had cards before the post was read, which is mild corroboration of the sort. This card is the index over them rather than a sixth item, and its own contribution is the sorting rule.