sharp
James Ludwell-Grymes links LLM-generated code to developer unemployment, but the essay gives zero defect-rate, performance, or hiring data.
My first reaction is mixed. The sharp part is not the old claim that abstractions hide costs. The sharp part is the author’s personal state: unemployed since July 2025, physically injured, unable to do labor-heavy work, supporting a son, revising resumes, applying for jobs, building Claude proof-of-concepts, and doing cold outreach. That gives the essay weight. This is not a clean architecture rant from someone bored on Hacker News.
But as a claim about AI coding, the causal chain is too neat. The essay ties three things together. Hardware got cheaper, so developers stopped caring about bytes and CPU cycles. Libraries proliferated, so people called functions they did not understand. LLMs arrived, so almost anyone can prompt something functional and pretty. Emotionally, that lands. Empirically, the essay does not carry it. There is no reproducible comparison between Claude prototypes and human-written code. There is no defect density, no six-month maintenance data, no incident sample, and no baseline for “slow and buggy, more so than before.” As a peer, I hear the frustration. As an analysis, I cannot accept the full indictment.
The abstraction argument also predates LLMs by decades. Joel Spolsky wrote “The Law of Leaky Abstractions” in 2002. The point was simple: abstractions leak, and eventually the lower layer matters. Node/npm, React build systems, Kubernetes YAML, and Terraform modules all replayed this cycle. Each wave made software easier to assemble and created a cohort of engineers who could connect pieces without explaining the machinery. LLMs compress the same pattern. Before, you still had to search Stack Overflow, read API docs, and run tests. Now Claude can hand you a demo. The problem is not abstraction alone. The problem is organizations treating demos as systems and first successful runs as acceptance criteria.
I want to defend abstraction here. Without high-level languages, garbage collection, ORMs, managed cloud, and containers, most modern software would not exist. Abstraction is not sufficient to produce bad software. Bad software usually comes from missing validation. Ask a junior engineer to build payment logic with Claude, then skip property-based tests, code review, threat modeling, observability, and rollback plans, and the failure is not unique to Claude. Ask a senior engineer to stack npm packages without ownership, and the same service burns later. LLMs make the production step cheap enough that teams skip the steps they already disliked.
The actual AI coding shift is also more specific than “everyone can code now.” Cursor, Claude Code, GitHub Copilot, and similar tools have raised throughput for existing engineers, especially in glue code, test scaffolding, migration scripts, and CRUD interfaces. I have not personally run a controlled benchmark here, but public SWE-bench Verified comparisons have shown steady gains on issue-fixing tasks. Those benchmarks still measure bounded repair work. They do not measure product judgment, long-term maintainability, dependency governance, or security boundaries. The author’s complaint lives in that second category: there is too much runnable software and too little judgment around it.
The essay deserves attention as a labor-market signal. The author describes himself as someone who read manuals, ran services, wrote automation scripts, used Cheat Engine to edit memory, and stepped through malware in OllyDbg. That is a recognizable “deep generalist” engineering profile. Security, infra, SRE, and internal tooling should value that profile. Yet he says he has been unemployed from July 2025 to May 2026. The uncomfortable read is that the market is rewarding people who can package AI-assisted work into business outcomes, not people who are merely closer to the metal. Low-level understanding still matters. It has to be sold as incident reduction, security review, cloud-cost reduction, migration speed, or operational risk ownership.
I also have pushback for the author. He mentions Claude proof-of-concepts as part of the failed job and services push, but the essay does not say who they served, what problem they solved, whether users tried them, whether anyone saw pricing, or what feedback came back. AI prototypes are now so cheap that “I built a PoC” is barely a signal. In 2023, a working demo got meetings. In 2026, buyers ask who uses it, what spend it replaces, who owns failure, and how data permissions work. His pain is real. The claim that LLMs make people confuse good and bad explains only part of it. The other part is harsher: the market no longer pays for technical potential by itself. It pays for someone taking delivery risk.
So I read this essay as a warning, but not a warning to stop abstracting. AI coding is splitting software work into two layers. Low-cost assembly keeps getting cheaper. Judgment, constraints, verification, and accountability get more valuable. Abstractions will not disappear. LLMs will not leave the IDE. The engineer who does well is not the one who refuses Claude or worships it. It is the one who cages Claude output inside tests, reviews, permissions, deployment discipline, and operational ownership. The essay lacks hard data, but it captures the pressure accurately. For AI practitioners, that is more useful than another vague “10x productivity” victory lap.