What We Had to Unlearn
Six months of arguments about languages, review, tests, and teams in the agent era, and the engineers who had to give up rules they'd held for a whole career.
read every line. test everything. never break the api. plan first.
Every engineer carries rules they never wrote down.
Most of them were really about what things cost.
This year the prices changed, and the rules had to beunlearned.
I went back through six months of my X bookmarks looking for the arguments about languages, code review, tests, and how teams work. I expected a pile of hot takes. What I found was people giving up rules they’d held for their whole career, often in public, sometimes reluctantly, and once or twice taking it back a week later.
Most of those rules weren’t wrong.11Some went further and decided much of the old practice was accidental complexity all along.render 🦋, Oct 23 They were prices in disguise. Verbose code was expensive to write. A breaking API change was expensive to roll out. A big team was the only way to get enough code typed. When agents made those things cheap,22Cheap to write isn’t cheap to own. Several people pushed back on treating cheap code as free code, or on moving the cost onto whoever has to review it.Ryan Carniato, Nov 10benja, Aug 17grant!!! (he/him), Sep 21 the rules lost their reason, and people had to notice that the thing they’d defended for years was really about cost.
These are the ones I watched go, roughly in the order they went, and what it took to let them go.
The verbose way
At an Effect meetup this fall, someone on the panel admitted they’d tried to write a service definition by hand that day and couldn’t. They had become a beginner again in a library they use every day, and they didn’t mind.
Effect is a TypeScript library for typed errors, dependency injection, retries, and resources. For years the objection to it was the syntax: generators, yield*, layers, a lot of ceremony compared with plain TypeScript. Then, over a few weeks in late summer, some prominent skeptics changed their minds out loud, and long-time users stopped apologizing for it.33More adopters, some newly converted and some feeling vindicated.Micky, Sep 2Zoran Plesivcak, Sep 2James Ward, Jun 25Effect | TypeScript for the AI Era, Jul 30jem 💜🩵🩷, Oct 4
Now, for backend, it's "use Effect, not just TS"
Took a long time for me to drop my scepticism but I 100% agree with Dillon.
- 2.6Klikes (2,561)
- 98reposts (98)
- 96replies (96)
it’s reached critical enough adoption, provides distinct tailwinds to agents, and has great cloudflare support that it’d be a mistake not to at this point
- 2.1Klikes (2,076)
- 84reposts (84)
- 87replies (87)
The syntax tax we paid upfront has paid dividends as the frontier models have continued to improve. … We have no regrets.
- 82likes (82)
- 7reposts (7)
- 2replies (2)
Why? AI resolved basically every reason people didn't want to adopt it, while making the things it does well even more valuable https://t.co/LpH7l9ejav
- 526likes (526)
- 31reposts (31)
- 20replies (20)
- 362likes (362)
- 23reposts (23)
- 14replies (14)
Nothing about Effect’s case changed. Typed errors and explicit dependencies were always good ideas.44Effect’s defenders had argued for years that the verbosity is just what handling errors, testing, and telemetry looks like, and that every TypeScript backend ends up inventing a smaller, worse version.Michael Arnaldi, Aug 20Vicente Sanchez, Aug 18 What changed was who paid for the ceremony. Once an agent writes the yield*, the cost of the syntax drops to almost nothing, and what’s left is code that’s easier to check.55The same logic showed up in CSS: after a decade of atomic CSS, Jared Palmer decided StyleX’s stricter constraints suit agents better.Jared Palmer, Aug 24 I wrote more about that in Effect makes the invisible reviewable.
Not everyone got there. “I really, really wanna like effect,” one reply to Matt Pocock said, “but I still just can’t get past the sheer verbosity.”
Reading every line
I made the full case against pull requests in Kill the Pull Request, so I’ll stay on the people here. The posts that stuck with me weren’t the loud ones.66Louder versions of the same move, plus a reminder that SOC 2 doesn’t require human review of pull requests.Theo - t3.gg, Jul 5Quinn Slack, Sep 5Ben Holmes, Oct 5Nate Berkopec, Oct 16ian brash, Aug 6 They were from engineers who had reviewed every line of code for their entire careers and stopped.
Talked with a rock-solid, v experienced engineer who, until recently, reviewed all code their AI generated… till Fable. …
And this is someone who has always reviewed their and everyone else’s code their whole career
- 3Klikes (2,964)
- 162reposts (162)
- 358replies (358)
I believe that, long-term, humans have no role in routinely reviewing code.
- 1.7Klikes (1,710)
- 169reposts (169)
- 134replies (134)
- 621likes (621)
- 45reposts (45)
- 141replies (141)
The best exchange was under Marc Brooker’s post. Someone said they’d never ship anything without at least reviewing it themselves, because AI review still misses awkward constructs and bad names. Brooker’s answer turned an instinct into an analogy:
the register allocation testCould you do better than the compiler? Maybe. Is it worth doing better? Only for a tiny fraction of code.
Most people landed somewhere in between: they still review, but they review differently,77What review turned into: a checklist for danger and blast radius, sorting changes into one-way and two-way doors, specialized agents that review before commit, and reviewing the model’s decisions instead of its code.Ben Vinegar, Sep 5Matt Pocock, Sep 18Cindy Sridharan, Jul 24Alan, Jul 25 and they got pickier about what a change has to explain.88The slop also moved into the descriptions. Kenton Varda banned AI-written change descriptions outright; Simon Willison started collapsing them.Kenton Varda, Jul 8Jamon, Aug 1Simon Willison, Nov 9
The pushback was real too, and some of it came from people who tried letting go and came back.
And the returns amortize. Because I improve the docs / skills every time.
- 92likes (92)
- 3replies (3)
- 187likes (187)
- 1reposts (1)
- 37replies (37)
I receive and write dozens of AI written pull requests every week and, if I stopped reviewing code produced by AI, I am 100% confident we would have a slower Elixir compiler, buggier type system
- 494likes (494)
- 29reposts (29)
- 16replies (16)
José Valim’s point is the one I can’t get past. Valim writes and receives dozens of AI pull requests a week, and is sure that without review, Elixir would have a slower compiler and a buggier type system. The rule “review everything” is weakening. The rule “someone has to understand the system” isn’t.99The joke version is two engineers asking the same model to write and then approve a change. The serious version: we only insist on reading every line because we have no other way to ensure quality yet.Yuchen Jin, Oct 18Nate Berkopec, Jun 14
Writing it yourself
One reversal ran the other way. Many of the engineers who stopped reading every line of code drew a harder line than ever around prose. Pamela Fox put the split in two sentences.
Please do a human pass on READMEs and docs, for all of our sakes.
- 123likes (123)
- 4reposts (4)
- 23replies (23)
The old rule was so obvious nobody wrote it down: if you’re reading something, someone wrote it, and they worked harder on it than you will. Bryan Cantrill calls this a social contract in RFD 576, Oxide’s guide to using LLMs, and AI-written prose breaks it: “why should they spend more time reading prose than the writer spent writing it?” Clay’s AI writing policy turns the same idea into a rule: “More time should be spent authoring a document than consuming it.”1010Other teams wrote down their own versions: a two-rule policy against delegating thinking or human-facing prose, and wide praise for Clay’s policy and Oxide’s RFD 576.Paul Bakaus, Jun 6Chandra, Aug 11Mishti, Aug 11HSVSphere, Nov 3
Readers started acting on it. In The revolt of the reader, Cantrill cites Cynthia Dunlop’s survey of 668 developers: 78% stop reading as soon as they detect an LLM, and 71% avoid the author afterward. Oxide now requires its public writing to come back from Pangram, an AI-text detector, as human-authored.1111Detection got good quickly: a model that told AI-written blog posts from human ones 98% of the time, a list of tells guaranteed to raise your blood pressure, a name for the dialect (“Claudish”), and a hook that answers long agent replies with “tldr.”Jochen Madler, Sep 25Daax, Aug 23Sarah Friend, Aug 29Ian Nuttall, Aug 16 Gergely Orosz passed the essay on with a question a lot of people were asking about themselves.
Bryan spells it out. Read it: https://t.co/DsGFQXS9mW
- 1.5Klikes (1,518)
- 169reposts (169)
- 86replies (86)
- 656likes (656)
- 11reposts (11)
- 24replies (24)
Thomas Ptacek’s rule is the strictest version I found, and it isn’t anti-AI: use the model all you want, just don’t keep a single word it chose.1212The complaints were specific: filler sentences, repetition, long lists of near-synonyms, generated docs sent in place of a summary, and more text than anyone could ever correct.Gergely Orosz, Jul 14Roman Elizarov, Aug 26Donn Felker, Sep 21Drew Bredvick, Jul 22 Nobody is asking for perfect prose. They’re asking to know that a person meant every sentence.1313Not everyone accepted the burden. Asked why anyone should bother proving their writing is human, Cantrill answered: “your intellectual fly might be open.”Unazi Ogah, Aug 29Bryan Cantrill, Aug 29
four people, one requestSend me your prompt, not your output.
What surprised me is how many people landed on the same request without, as far as I can tell, coordinating. Kenton Varda in July: “I’d rather see your prompt than your output.” Clay in August: “consider instead just sharing the prompt itself.” Cantrill in September: “just give us your prompt.” And Peter Steinberger, from the receiving end of a pull request:
What’s even the point with this workflow? You already wrote the prompt, why make me ping my agent again so your agent then merges?
- 1.1Klikes (1,102)
- 16reposts (16)
- 144replies (144)
- 296likes (296)
- 9reposts (9)
- 21replies (21)
That’s the “agent ping-pong” people started complaining about, and Will Larson gave the review version a name in Speeding up code review with small-change: “meat proxy review.” Reviewers point their own agents at a pull request. The author can’t tell which comments the reviewer actually believes, so the author points an agent back at them, “making the entire review process an illusion.” Larson’s team made its review skill able to do only two things, approve or stay silent, because the comments had become “a bottleneck-pretending-to-be-a-solution.”1414A Japanese reader of Larson’s post put the cost plainly: letting agents trade review comments is just a question of whose tokens to burn (my paraphrase). Others asked for agents that take review feedback without a human relaying it.yuki, Oct 31Metis🌿, Sep 8
“Meat proxy” escaped review and became how people described their own jobs: the human as a clipboard between two agents. Some said it as a joke and some said it as a warning.1515The phrase as a product pitch, a prediction, and a grief: a multiplayer mode launched as “the death of the meat proxy,” warnings that the job won’t last, and people despairing that it’s now their job.OpenClaw🦞, Sep 18tuna🍣, Nov 2Yak (Yacine), Oct 31Fernando Borretti, Oct 22
A highly paid human being, working as a clipboard... This stops today
https://t.co/Q5qgsYZAOB
- 4replies (4)
- 2.9Klikes (2,852)
- 156reposts (156)
- 34replies (34)
- 2.5Klikes (2,548)
- 209reposts (209)
- 88replies (88)
The most interesting counterpoint came in the replies to Cantrill. Instead of hiding machine-written prose, gfodor started labeling it: a second kind of essay, written by LLMs for agents to read.
“Feel free to point your agent at it instead of reading it yourself if you want to digest it.”
That may be where this settles. Writing for people stays human. Writing for machines can be machine-written, as long as it says so.
Tests as a net
“More tests make you safer” sounded like physics. It turned out to assume something: that whoever wrote the test was thinking about behavior, not restating the implementation. Agents restate the implementation. A lot of people found this out by reading what their agents committed.1616The same complaint, over and over, including a browser extension that hides test files in pull requests.dex, Sep 19Shoopy, Sep 25Kent C. Dodds 🐨, Sep 6David Cramer, Jul 29Brandon McConnell, Sep 8
- 1.6Klikes (1,623)
- 86reposts (86)
- 76replies (76)
They're good for making sure the code works, but often not good enough to commit to long term.
- 238likes (238)
- 2reposts (2)
- 22replies (22)
- 90likes (90)
- 4reposts (4)
- 39replies (39)
Every time I make a change, AI just changes all the unit tests anyway, so there's no safety. It's all overhead.
- 293likes (293)
- 2reposts (2)
- 131replies (131)
Then someone measured it. Kun Chen banned the agent from writing tests on an eval set and got a slightly higher success rate (not statistically significant), with significantly less time and fewer tokens. Kun’s spot checks matched what everyone else had seen: most of the tests were “simply a repetition of the implementation.”
- 2.8Klikes (2,813)
- 208reposts (208)
- 466replies (466)
Matt Pocock’s correction is the useful one. Testing larger units, at the boundaries where behavior actually lives, was always good practice.1717What people kept instead: end-to-end tests, generative and property-based tests, and in one case a promise to delete every UI test on day one.Georgios Konstantopoulos, Oct 15TigerBeetle, Sep 30Eric Clemmons 🍊☁️, Nov 4Jacob Bartlett, Oct 26 The agent era didn’t kill testing. It killed the habit of writing a test for every function, because now we can see what those tests were worth.
Testing larger units has ALWAYS been a good practice - it makes your tests less sensitive to structural changes
So not "dead in the water", just software fundamentals coming back around
Never break the interface
This is the one that surprised me most, because it’s the deepest. Aaron Boodman worked on the web platform for years, where never breaking an API was “basically a law of nature.” In November, Boodman called that instinct “2025 thinking.”
But I think this thinking is a trap in 2026 and beyond.
Agents dgaf about any of this. … The definition of "hard" is changing.
- 39likes (39)
- 2reposts (2)
- 6replies (6)
The argument is about cost. API compatibility mattered because migrating a codebase meant assigning a scarce developer, who had to learn the new API, who probably had an emotional attachment to the old one. Agents don’t care. They’ll rewrite to a new API, fork the library on top, and nobody will review the mechanical change anyway. “The definition of ‘hard’ is changing.”1818The same cost argument, applied to other old defaults: ORMs, buying SaaS, internal wikis, and code comments.Ronan Berder (SF + SG), Nov 9Synthetic Beef, Oct 27jacob, Oct 30lauren, Oct 13
Peter Steinberger put a related rule in one line, and Thorsten Ball took it further: a lot of the frameworks of the last twenty years were made for reasons of taste that no longer seem valid.
- 2.9Klikes (2,853)
- 128reposts (128)
- 110replies (110)
There are other, deeper (for lack of a better term) abstractions though that still seem valid: abstractions that introduce a different way to compute. Think: type systems, Lisps, CUDA, unikernels, IaC, k8s.
- 189likes (189)
- 9reposts (9)
- 36replies (36)
the new rule, for nowDuplicating logic is no longer painful. Abstractions still are.
Thorsten’s caveat matters: the abstractions expected to survive are the ones that introduce a different way to compute, like type systems, Lisps, CUDA, and infrastructure as code. Thorsten marks that list as unsure. So do I.1919The counterweight: finding the right abstraction still takes time. shadcn spent more than a week on some single components.shadcn, Jun 6
Languages for humans
The language fights got louder, not quieter. In July, one widely shared summary of the drama went like this: Anthropic had acquired Bun, Bun was being rewritten from Zig to Rust with agents, and Zig’s creator was not happy about it.
- Anthropic acquires Bun because machine god says so
- Bun uses machine god to rewrite from Zig to Rust
- Zig creator accuses Bun of selling out, going mainstream, or something
- 3.3Klikes (3,301)
- 187reposts (187)
- 93replies (93)
Then, in November, a developer with nearly nine years of Rust posted the opposite move. The post (in Chinese; this is my paraphrase) recommends Zig for the AI era. Rust’s strict borrow checker was sold as a safety net for human programmers. Now that humans aren’t writing the code, it’s a drag: the agent rereads compiler errors and takes detours to satisfy it, and every round trip waits on a slow incremental build.2020In the replies, one person argued that Rust exists because humans couldn’t track ownership across Firefox’s million-line C++ codebase, a limit agents may not share (in Chinese; my paraphrase). Even people paid to write Zig criticized how the Bun fight was handled.Tor Tor, Nov 11Simon Klee, Jul 9
- 952likes (952)
- 83reposts (83)
- 102replies (102)
The other camp says the opposite, and with just as much conviction: with agents, the compiler is the only reviewer that reads every line.2121The type-system case, spelled out: strong static types, algebraic data types, null safety, and states that can’t be represented if they’re illegal.𝗠𝗮𝗹𝗶𝘅, Nov 7BrendanEich, Aug 22工业聚, Nov 1
- 66likes (66)
- 15reposts (15)
- 4replies (4)
- 354likes (354)
- 18reposts (18)
- 24replies (24)
Both sides agree the language matters more now. They disagree about who it’s for. One side wants a language that stays out of the agent’s way, and the other wants one that catches the agent’s mistakes.
Marc Brooker’s feedback loop hypothesis is a useful way to read this fight. An agent is a flawed model inside a feedback loop, so it finds tasks with good feedback easy and tasks without it hard. Seen that way, the Zig post and the compiler camp want the same thing, a better loop. One wants it faster, and the other wants it more informative.2222Formal verification came up constantly. These were the clearest short primers, plus the argument that verification is really about token efficiency.Herrington Darkholme, Nov 5arni, Nov 4lauren, Oct 7
Some people decided the right language doesn’t exist yet and started new ones.2323Related bets: syntax with layers of detail you can reveal on demand, the warning that a new language’s real problem is now adoption, and a TypeScript compiler rewritten by an agent in weeks.Leo 🏴☠️, Oct 7Jean-Michel Lemieux, Oct 10Peter Steinberger, Oct 20
Faster than rust, a powerful type system, all the power of effect systems, metaprogramming, zero-cost worktrees, semantic merging, sqlite-stored content-addressable code.
Psychosis? Hopefully not.
https://t.co/PZf55rf8uZ
- 3.7Klikes (3,690)
- 153reposts (153)
- 463replies (463)
It is a new programming language that blocks AI mistakes via *proof checking* …
- 11.9Klikes (11,906)
- 1.3Kreposts (1,332)
- 669replies (669)
Think, then build
“Measure twice, cut once” assumed cutting was expensive. Dex summed up the problem with specs in March: a spec detailed enough to generate good code is about as long as the code. Dax’s reply is my favorite admission in the whole collection: a gut aversion to writing specs, and a worry about being forced to write them one day.2424On steering agents without a big spec: push determinism as far as it goes with linters, and watch for mistakes in both directions, from too little alignment to too much.dex, Jun 20Matt Pocock, Oct 13
- 682likes (682)
- 45reposts (45)
- 36replies (36)
it felt like it was as much work as writing the code … was worried i'd be forced into writing specs one day
- 177likes (177)
- 3reposts (3)
- 13replies (13)
I dont think its adding value. … many times I caught them being outdated-enough that the agent misunderstood what truth was. …
Going to delete them all
- 219likes (219)
- 4reposts (4)
- 33replies (33)
David Cramer tried keeping specs in the repo for months, found they went stale and misled the agent about what was true, and decided to delete them. And a developer writing in Chinese went further: build a pile of garbage first. In my paraphrase, the argument is that thinking used to dominate because doing was expensive. Now thinking costs more than doing, so you should do more, and let real results feed the thinking.2525The organizational version: fewer meetings and documents, more prototypes, and in one case canceling the issue tracker.lauren, Jul 16GosuCoder, Oct 24Andy, Oct 23
假设叠假设=更弱的假设;结果叠结果=更强的结果。
过去思考要多,是因为做的成本高;现在思考的成本高于做的成本 …
the math, translatedAssumptions stacked on assumptions make weaker assumptions. Results stacked on results make stronger results.
I don’t think specs are dead, though. They’ve changed jobs. A spec written for a reviewer to read goes stale. A spec a machine checks on every change, as a type, a lint rule, a model, or a property test, can’t.
The same reckoning reached the tooling around agents. After a year of elaborate harnesses, some of the people building them started arguing for less.2626Some argued the opposite of building more harness: custom setups are a sign of frustration, the middle ground is a valley of despair, and smarter models will need less checking.dax, Jul 18Rhys, Jun 17Thariq, Nov 3
The monorepo, again
Some debates didn’t move anyone. The same question about repository shape came up again and again from June to November, with a different answer each time, from people who all sounded sure.
If you cannot make modular monoliths and monorepos work, please trust me: it is a skill issue.
- 282likes (282)
- 8reposts (8)
- 27replies (27)
- 1Klikes (1,025)
- 53reposts (53)
- 173replies (173)
I’m the bottleneck either way. AI is capable enough to handle the bullshit.
- 26likes (26)
- 2reposts (2)
- 1replies (1)
the alternative is to keep things light and make a lovely cli/mcp for agents to do search over your org's code and docs without a checkout
- 765likes (765)
- 21reposts (21)
- 128replies (128)
I find this one reassuring. Not every prior was a price. Some are just tradeoffs, and the agent era didn’t settle them. It just made everyone argue about them again.2727The middle path that tools started offering: work across several repositories without merging them.Zed, Jul 13dax, Jun 10
Two slices
The rule about team size was the most explicitly about cost. Amazon’s two-pizza rule existed because coordination is expensive and typing is slow, so you needed a team that was big enough to ship and small enough to talk. Dan Shipper’s answer, in The Two-slice Team, is that two pizzas now feed too many people. At Every, by Dan’s account, each software product is run by one person, with design, growth, and marketing acting as internal agencies people rotate through.2828Every’s numbers are its own, from a company that sells AI tools. Dan Shipper’s later framing is the more durable idea: generating possibilities is cheap, and knowing which ones matter is hard.Dan Shipper, Nov 11
this is one reason why very small teams are better in AI. it's much easier to start over if you don't have to coordinate amongst a large number of people
@every we run each product with just a single GM—what i call a two-slice team: https://t.co/zGymJwpQWr
- 14likes (14)
- 2reposts (2)
- 2replies (2)
Jack Dorsey and Roelof Botha went further in From Hierarchy to Intelligence. Their argument is that hierarchy, from Roman tent squads to the first railroad org chart, was an information-routing protocol built around how many people one manager can track. If a model of the company can route that information, Block can normalize down to three roles:
individual contributors
Deep specialists who build and operate one layer of the system. The company’s world model gives them the context a manager used to.
directly responsible individuals
People who own a cross-cutting problem or customer outcome, like “merchant churn in a specific segment for 90 days,” with authority to pull in whoever they need.
player-coaches
People who still build and also develop the people around them. “There is no need for a permanent middle management layer.”
It’s worth reading that essay next to the note Jack sent a month earlier, announcing Block would go from over 10,000 people to just under 6,000. The new org chart is also a story about who isn’t in it.
Inside companies, the job titles started to blur. Boris Cherny described the Claude Code team as five archetypes, from prototyper to maintainer, that cut across engineering, product, design, and data science. Coinbase ran “pirate and architect” pods, an idea Dan Shipper has been pushing since April: one person ships fast to learn what matters, and another makes it solid.2929Other maps of where the roles are heading, and one objection to the “software factory” metaphor: knowledge work is more like a kitchen or a lab.Christian Ciabattoni, Nov 4Steve Yegge, Jul 15Yingjun Wu 🤘, Oct 19Kyle Mathews, Oct 4
1. Prototyper … 2. Builder … 3. Sweeper … 4. Grower … 5. Maintainer …
I also notice that these roles are not really tied to job function
- 20.1Klikes (20,119)
- 2.5Kreposts (2,462)
- 885replies (885)
The pirate ships like mad … The architect makes sure stuff is built for scale
- 979likes (979)
- 71reposts (71)
- 42replies (42)
Now, one dev can orchestrate multiple agents in loops to achieve an entire team’s output. No team required.
- 797likes (797)
- 54reposts (54)
- 157replies (157)
It's built by an awesome team of people who care so, so much and obsess over getting things right (and the agents pointed in the right direction). https://t.co/ssDENHt5gq
- 373likes (373)
- 19reposts (19)
- 38replies (38)
Quinn Slack’s post is the counterweight. Amp, Quinn says, could never be built by a factory. It’s built by people who care, with the agents pointed in the right direction. And Thorsten Ball, also at Amp, gave the most honest moment in this section: a post about “doers” and “thinkers” that Thorsten then called “dumb,” followed by a longer version admitting it said the opposite of what was meant. Where it landed: the split between people who think and people who do doesn’t make sense anymore.
Maybe the best way to put it is that the distinction doesn't make sense anymore in software …
Think-doers is what we need.
- 195likes (195)
- 3reposts (3)
- 49replies (49)
The inside of it
Everything so far is about positions. The part I actually went looking for was harder to find: what it felt like to give these rules up. Most people don’t post that. The ones who did were worth reading slowly.
- 48.6Klikes (48,601)
- 4.7Kreposts (4,740)
- 2Kreplies (2,034)
That post has nearly 50,000 likes. Someone two weeks into a new role at a big company describes specs, code, tests, tickets, and reports all written by Claude Code, people working 12- to 13-hour days “just to press enter,” and no sense of victory. In the replies, someone advised letting go of the old concepts to avoid going nuts. The answer: leaving wouldn’t help, because this is how development works everywhere now, and “I want human ingenuity to still have a place in this world. I am not against AI coding.”3030Two of the replies the author answered.Vatroslav Vrbanić, Sep 20Ezra Cooper, Sep 20
It wasn’t an isolated post. Fatigue showed up early in my bookmarks and never really left.3131Fatigue showed up early and kept showing up, alongside a survey describing a workforce that’s splitting in two.Lenny Rachitsky, Jul 7dalibali, Jun 3Vic 📠, Sep 30Art of Biz, Sep 21
Mitchell Hashimoto ran the experiment that sits underneath all of this: an agent, a deliberately slow renderer, the real validation tests, and four hours. The agent made the renderer dramatically faster, and it still wasn’t close to the version Mitchell had written by hand.
frame time on the same benchmark
An agent loop took the renderer from 88ms to 1.5ms per frame in about four hours and $350. Mitchell’s own renderer runs the same benchmark in about 0.02ms, with no allocations in the update path.
If you don't understand the system, you'll accept the first number as an incredible result.
One reply pushed back: someone who isn’t Mitchell Hashimoto can now get a nearly 60x speedup for $350, and most software is badly written anyway.3232Other replies: let it run for 40 hours instead of 4, tell it 500 allocations isn’t good enough, or accept 2ms if the target was 10ms.Kun Chen, May 28Conrad Kramer, May 28gfodor.id, May 28ily⚡️, May 29 Mitchell agreed there’s value there, then asked the question I think this whole period is really about.
- 211likes (211)
- 1reposts (1)
- 1replies (1)
- 484likes (484)
- 12reposts (12)
- 16replies (16)
the question under the questionWho becomes the next S-tier programmers if they never put in the work?
Nobody has a full answer. The usual gate into the profession is already moving.3333The interview changed first: LeetCode stopped measuring anything, and writing code by hand in an interview started to look like a historical reenactment.Yuchen Jin, Oct 11Panat, Nov 10 The most hopeful answers say the work moves up, toward customers, economics, and owning outcomes earlier in a career.3434Marc Brooker’s answer for juniors: they already know they’re beginners, and the new path engages earlier with customers, economics, and people, with less emphasis on the craft of typing code and more on the science under it. “Carry a pager. Own a deadline.”Marc Brooker, “What about juniors?” Others expect the work to simply disappear.3535Some expect their job to disappear outright, and soon.L3 Tweet Engineer, Jul 27
The rest of what I found was ambivalence. People who were glad and sad at once. People who suspected they’d gone too far and said so. People going back to writing it by hand.3636The other half of the ambivalence was fatigue with slop at work: “slop grenades,” decks nobody wrote, and all-hands slides calling it out.Shane Parrish, Sep 15svs 🇮🇳, Sep 21Alex Cohen, Jul 14ThePrimeagen, Sep 21Mario Zechner, Sep 26
Also glad to see that for Ben, Svelte is still one of the things that matters.
- 49likes (49)
- 1reposts (1)
- 1replies (1)
The a-ha moment was realising we just need better systems of summarisation on top for the human reviewers. Agents want all the detail, it’s just hard for us humans.
(I might be wrong)
- 45likes (45)
- 15replies (15)
- 157likes (157)
- 6reposts (6)
- 10replies (10)
The one big difference is that the size of the individual tasks has increased by an order of magnitude or more.
- 578likes (578)
- 8reposts (8)
- 47replies (47)
writing that shit by hand
- 61likes (61)
- 6reposts (6)
- 6replies (6)
What stayed
Not everything moved. A few rules came out of this period stronger, and they have something in common: none of them were about what things cost to type.
- 668likes (668)
- 27reposts (27)
- 42replies (42)
- 11.2Klikes (11,176)
- 432reposts (432)
- 797replies (797)
- 429likes (429)
- 28reposts (28)
- 52replies (52)
But if you're shipping customer-facing work, you can't be shipping things you don't understand at a high level.
- 9.5Klikes (9,539)
- 1Kreposts (1,027)
- 233replies (233)
System architecture belongs on that list too. Ben Holmes put it plainly: when everything from the hello world is agent-built, agents copy whatever patterns they find, good or bad, so someone has to keep reshaping the codebase on purpose.
The answer is system architecture. Agents (like humans) copy bad patterns like a virus. It's a ball of clay that needs constant reshaping. … say, a weekly automation with a frontier reasoning model … that pulls out one improvement to your system architecture is a start.
- 92likes (92)
- 7reposts (7)
- 7replies (7)
Make bad code impossible to write. Keep the architecture worth copying. Verify with machines instead of opinions, while remembering that no proof checks the program against what’s in your head. And be able to explain, at any moment, how the thing you shipped actually works.3737Two more data points on where the line sits: AI gets less useful the closer the work gets to human language, and regressions turned out to be less of a problem with agents than with people.Aaron Boodman, Jul 8Thorsten Ball, Nov 5 Those were never prices. They were the point.
Hold it loosely
If there’s one pattern across all of this, it’s that the same few questions came back every month with different answers: review, tests, repo shape, team size. The people who handled it best weren’t the ones who picked the right side. They were the ones who could say what their rule had been paying for.3838Marc Brooker called this moment “an extinction-level event for rules of thumb,” and gave tech leads a job description for it: “the humility to accept that many of your heuristics are wrong, the courage to believe some are still right, and the curiosity to actively learn the difference.”Marc Brooker, “My heuristics are wrong. What now?”
Ask what a rule was paying for.
Check whether that price changed.
Let go of the rule, not the reason.
Be ready to change your mind again next month.
notes
- Some went further and decided much of the old practice was accidental complexity all along.render 🦋, Oct 23 ↩
- Cheap to write isn’t cheap to own. Several people pushed back on treating cheap code as free code, or on moving the cost onto whoever has to review it.Ryan Carniato, Nov 10benja, Aug 17grant!!! (he/him), Sep 21 ↩
- More adopters, some newly converted and some feeling vindicated.Micky, Sep 2Zoran Plesivcak, Sep 2James Ward, Jun 25Effect | TypeScript for the AI Era, Jul 30jem 💜🩵🩷, Oct 4 ↩
- Effect’s defenders had argued for years that the verbosity is just what handling errors, testing, and telemetry looks like, and that every TypeScript backend ends up inventing a smaller, worse version.Michael Arnaldi, Aug 20Vicente Sanchez, Aug 18 ↩
- The same logic showed up in CSS: after a decade of atomic CSS, Jared Palmer decided StyleX’s stricter constraints suit agents better.Jared Palmer, Aug 24 ↩
- Louder versions of the same move, plus a reminder that SOC 2 doesn’t require human review of pull requests.Theo - t3.gg, Jul 5Quinn Slack, Sep 5Ben Holmes, Oct 5Nate Berkopec, Oct 16ian brash, Aug 6 ↩
- What review turned into: a checklist for danger and blast radius, sorting changes into one-way and two-way doors, specialized agents that review before commit, and reviewing the model’s decisions instead of its code.Ben Vinegar, Sep 5Matt Pocock, Sep 18Cindy Sridharan, Jul 24Alan, Jul 25 ↩
- The slop also moved into the descriptions. Kenton Varda banned AI-written change descriptions outright; Simon Willison started collapsing them.Kenton Varda, Jul 8Jamon, Aug 1Simon Willison, Nov 9 ↩
- The joke version is two engineers asking the same model to write and then approve a change. The serious version: we only insist on reading every line because we have no other way to ensure quality yet.Yuchen Jin, Oct 18Nate Berkopec, Jun 14 ↩
- Other teams wrote down their own versions: a two-rule policy against delegating thinking or human-facing prose, and wide praise for Clay’s policy and Oxide’s RFD 576.Paul Bakaus, Jun 6Chandra, Aug 11Mishti, Aug 11HSVSphere, Nov 3 ↩
- Detection got good quickly: a model that told AI-written blog posts from human ones 98% of the time, a list of tells guaranteed to raise your blood pressure, a name for the dialect (“Claudish”), and a hook that answers long agent replies with “tldr.”Jochen Madler, Sep 25Daax, Aug 23Sarah Friend, Aug 29Ian Nuttall, Aug 16 ↩
- The complaints were specific: filler sentences, repetition, long lists of near-synonyms, generated docs sent in place of a summary, and more text than anyone could ever correct.Gergely Orosz, Jul 14Roman Elizarov, Aug 26Donn Felker, Sep 21Drew Bredvick, Jul 22 ↩
- Not everyone accepted the burden. Asked why anyone should bother proving their writing is human, Cantrill answered: “your intellectual fly might be open.”Unazi Ogah, Aug 29Bryan Cantrill, Aug 29 ↩
- A Japanese reader of Larson’s post put the cost plainly: letting agents trade review comments is just a question of whose tokens to burn (my paraphrase). Others asked for agents that take review feedback without a human relaying it.yuki, Oct 31Metis🌿, Sep 8 ↩
- The phrase as a product pitch, a prediction, and a grief: a multiplayer mode launched as “the death of the meat proxy,” warnings that the job won’t last, and people despairing that it’s now their job.OpenClaw🦞, Sep 18tuna🍣, Nov 2Yak (Yacine), Oct 31Fernando Borretti, Oct 22 ↩
- The same complaint, over and over, including a browser extension that hides test files in pull requests.dex, Sep 19Shoopy, Sep 25Kent C. Dodds 🐨, Sep 6David Cramer, Jul 29Brandon McConnell, Sep 8 ↩
- What people kept instead: end-to-end tests, generative and property-based tests, and in one case a promise to delete every UI test on day one.Georgios Konstantopoulos, Oct 15TigerBeetle, Sep 30Eric Clemmons 🍊☁️, Nov 4Jacob Bartlett, Oct 26 ↩
- The same cost argument, applied to other old defaults: ORMs, buying SaaS, internal wikis, and code comments.Ronan Berder (SF + SG), Nov 9Synthetic Beef, Oct 27jacob, Oct 30lauren, Oct 13 ↩
- The counterweight: finding the right abstraction still takes time. shadcn spent more than a week on some single components.shadcn, Jun 6 ↩
- In the replies, one person argued that Rust exists because humans couldn’t track ownership across Firefox’s million-line C++ codebase, a limit agents may not share (in Chinese; my paraphrase). Even people paid to write Zig criticized how the Bun fight was handled.Tor Tor, Nov 11Simon Klee, Jul 9 ↩
- The type-system case, spelled out: strong static types, algebraic data types, null safety, and states that can’t be represented if they’re illegal.𝗠𝗮𝗹𝗶𝘅, Nov 7BrendanEich, Aug 22工业聚, Nov 1 ↩
- Formal verification came up constantly. These were the clearest short primers, plus the argument that verification is really about token efficiency.Herrington Darkholme, Nov 5arni, Nov 4lauren, Oct 7 ↩
- Related bets: syntax with layers of detail you can reveal on demand, the warning that a new language’s real problem is now adoption, and a TypeScript compiler rewritten by an agent in weeks.Leo 🏴☠️, Oct 7Jean-Michel Lemieux, Oct 10Peter Steinberger, Oct 20 ↩
- On steering agents without a big spec: push determinism as far as it goes with linters, and watch for mistakes in both directions, from too little alignment to too much.dex, Jun 20Matt Pocock, Oct 13 ↩
- The organizational version: fewer meetings and documents, more prototypes, and in one case canceling the issue tracker.lauren, Jul 16GosuCoder, Oct 24Andy, Oct 23 ↩
- Some argued the opposite of building more harness: custom setups are a sign of frustration, the middle ground is a valley of despair, and smarter models will need less checking.dax, Jul 18Rhys, Jun 17Thariq, Nov 3 ↩
- The middle path that tools started offering: work across several repositories without merging them.Zed, Jul 13dax, Jun 10 ↩
- Every’s numbers are its own, from a company that sells AI tools. Dan Shipper’s later framing is the more durable idea: generating possibilities is cheap, and knowing which ones matter is hard.Dan Shipper, Nov 11 ↩
- Other maps of where the roles are heading, and one objection to the “software factory” metaphor: knowledge work is more like a kitchen or a lab.Christian Ciabattoni, Nov 4Steve Yegge, Jul 15Yingjun Wu 🤘, Oct 19Kyle Mathews, Oct 4 ↩
- Two of the replies the author answered.Vatroslav Vrbanić, Sep 20Ezra Cooper, Sep 20 ↩
- Fatigue showed up early and kept showing up, alongside a survey describing a workforce that’s splitting in two.Lenny Rachitsky, Jul 7dalibali, Jun 3Vic 📠, Sep 30Art of Biz, Sep 21 ↩
- Other replies: let it run for 40 hours instead of 4, tell it 500 allocations isn’t good enough, or accept 2ms if the target was 10ms.Kun Chen, May 28Conrad Kramer, May 28gfodor.id, May 28ily⚡️, May 29 ↩
- The interview changed first: LeetCode stopped measuring anything, and writing code by hand in an interview started to look like a historical reenactment.Yuchen Jin, Oct 11Panat, Nov 10 ↩
- Marc Brooker’s answer for juniors: they already know they’re beginners, and the new path engages earlier with customers, economics, and people, with less emphasis on the craft of typing code and more on the science under it. “Carry a pager. Own a deadline.”Marc Brooker, “What about juniors?” ↩
- Some expect their job to disappear outright, and soon.L3 Tweet Engineer, Jul 27 ↩
- The other half of the ambivalence was fatigue with slop at work: “slop grenades,” decks nobody wrote, and all-hands slides calling it out.Shane Parrish, Sep 15svs 🇮🇳, Sep 21Alex Cohen, Jul 14ThePrimeagen, Sep 21Mario Zechner, Sep 26 ↩
- Two more data points on where the line sits: AI gets less useful the closer the work gets to human language, and regressions turned out to be less of a problem with agents than with people.Aaron Boodman, Jul 8Thorsten Ball, Nov 5 ↩
- Marc Brooker called this moment “an extinction-level event for rules of thumb,” and gave tech leads a job description for it: “the humility to accept that many of your heuristics are wrong, the courage to believe some are still right, and the curiosity to actively learn the difference.”Marc Brooker, “My heuristics are wrong. What now?” ↩