
A heartfelt provocation about AI-assisted programming.
Tech execs are mandating LLM adoption. That’s unhealthy technique. However I get the place they’re coming from.
Among the smartest individuals I do know share a bone-deep perception that AI is a fad — the following iteration of NFT mania. I’ve been reluctant to push again on them, as a result of, properly, they’re smarter than me. However their arguments are unserious, and value confronting. Terribly gifted persons are doing work that LLMs already do higher, out of spite.
All progress on LLMs might halt immediately, and LLMs would stay the 2nd most essential factor to occur over the course of my profession.
Vital caveat: I’m discussing solely the implications of LLMs for software program growth. For artwork, music, and writing? I acquired nothing. I’m inclined to consider the skeptics in these fields. I simply don’t consider them about mine.
Bona fides: I’ve been delivery software program for the reason that mid-Nineties. I began out in boxed, shrink-wrap C code. Survived an ill-advised Alexandrescu C++ part. Numerous Ruby and Python tooling. Some kernel work. A complete lot of server-side C, Go, and Rust. Nonetheless you outline “critical developer”, I qualify. Even when solely on one in all your decrease tiers.
stage setting
† (or, God forbid, 2 years in the past with Copilot)
First, we have to get on the identical web page. In case you have been attempting and failing to make use of an LLM for code 6 months in the past †, you’re not doing what most critical LLM-assisted coders are doing.
Individuals coding with LLMs immediately use brokers. Brokers get to poke round your codebase on their very own. They creator recordsdata instantly. They run instruments. They compile code, run assessments, and iterate on the outcomes. Additionally they:
- pull in arbitrary code from the tree, or from different bushes on-line, into their context home windows,
- run customary Unix instruments to navigate the tree and extract data,
- work together with Git,
- run current tooling, like linters, formatters, and mannequin checkers, and
- make primarily arbitrary device calls (that you simply arrange) by means of MCP.
The code in an agent that truly “does stuff” with code isn’t, itself, AI. This could reassure you. It’s surprisingly easy programs code, wired to floor reality about programming in the identical method a Makefile is. You may write an efficient coding agent in a weekend. Its strengths would have extra to do with how you concentrate on and construction builds and linting and check harnesses than with how superior o3 or Sonnet have change into.
In case you’re making requests on a ChatGPT web page after which pasting the ensuing (damaged) code into your editor, you’re not doing what the AI boosters are doing. No marvel you’re speaking previous one another.
the optimistic case
LLMs can write a big fraction of all of the tedious code you’ll ever want to jot down. And most code on most tasks is tedious. LLMs drastically cut back the variety of stuff you’ll ever have to Google. They give the impression of being issues up themselves. Most significantly, they don’t get drained; they’re proof against inertia.
Consider something you needed to construct however didn’t. You tried to dwelling in on some first steps. In case you’d been within the limerent part of a brand new programming language, you’d have began writing. However you weren’t, so you set it off, for a day, a yr, or your entire profession.
I can really feel my blood strain rising pondering of all of the bookkeeping and Googling and dependency drama of a brand new mission. An LLM may be instructed to simply determine all that shit out. Typically, it would drop you exactly at that golden second the place shit virtually works, and growth means tweaking code and instantly seeing issues work higher. That dopamine hit is why I code.
There’s a draw back. Generally, gnarly stuff wants doing. However you don’t wanna do it. So that you refactor unit assessments, soothing your self with the lie that you simply’re doing actual work. However an LLM may be instructed to go refactor all of your unit assessments. An agent can occupy itself for hours putzing along with your assessments in a VM and are available again later with a PR. In case you hearken to me, you’ll know that. You’ll really feel worse yak-shaving. You’ll find yourself doing… actual work.
however you don’t have any thought what the code is
Are you a vibe coding Youtuber? Are you able to not learn code? If that’s the case: astute level. In any other case: what the fuck is fallacious with you?
You’ve all the time been chargeable for what you merge to foremost
. You have been 5 years go. And you’re tomorrow, whether or not or not you employ an LLM.
In case you construct one thing with an LLM that folks will rely on, learn the code. In reality, you’ll most likely do greater than that. You’ll spend 5-10 minutes knocking it again into your personal type. LLMs are displaying indicators of adapting to native idiom, however we’re not there but.
Individuals complain about LLM-generated code being “probabilistic”. No it isn’t. It’s code. It’s not Yacc output. It’s knowable. The LLM is likely to be stochastic. However the LLM doesn’t matter. What issues is whether or not you can also make sense of the end result, and whether or not your guardrails maintain.
Studying different individuals’s code is a part of the job. In case you can’t metabolize the boring, repetitive code an LLM generates: expertise challenge! How are you dealing with the chaos human builders end up on a deadline?
† (as a result of it could actually maintain 50-70kloc in its context window)
For the final month or so, Gemini 2.5 has been my go-to †. Virtually nothing it spits out for me merges with out edits. I’m certain there’s a ability to getting a SOTA mannequin to one-shot a feature-plus-merge! However I don’t care. I like transferring the code round and chuckling to myself whereas I delete all of the silly feedback. I’ve to learn the code line-by-line in any case.
however hallucination
If hallucination issues to you, your programming language has allow you to down.
Brokers lint. They compile and run assessments. If their LLM invents a brand new operate signature, the agent sees the error. They feed it again to the LLM, which says “oh, proper, I completely made that up” after which tries once more.
You’ll solely discover this taking place in the event you watch the chain of thought log your agent generates. Don’t. Because of this I like Zed’s agent mode: it begs you to tab away and let it work, and pings you with a desktop notification when it’s completed.
I’m certain there are nonetheless environments the place hallucination issues. However “hallucination” is the very first thing builders carry up when somebody suggests utilizing LLMs, regardless of it being (roughly) a solved downside.
however the code is shitty, like that of a junior developer
Does an intern value $20/month? As a result of that’s what Cursor.ai prices.
A part of being a senior developer is making less-able coders productive, be they fleshly or algebraic. Utilizing brokers properly is each a each a ability and an engineering mission all its personal, of prompts, indices, and (particularly) tooling. LLMs solely produce shitty code in the event you allow them to.
† (Additionally: 100% of all of the Bash code you must creator ever once more)
Perhaps the present confusion is about who’s doing what work. At the moment, LLMs do plenty of typing, Googling, check circumstances †, and edit-compile-test-debug cycles. However even essentially the most Claude-poisoned critical builders on the earth nonetheless personal curation, judgement, steerage, and course.
Additionally: let’s cease kidding ourselves about how good our human first cuts actually are.
but it surely’s unhealthy at rust
It’s arduous to get a superb toolchain for Brainfuck, too. Life’s powerful within the aluminum siding enterprise.
† (they usually certainly will; the Rust neighborhood takes tooling critically)
A number of LLM skepticism most likely isn’t actually about LLMs. It’s projection. Individuals say “LLMs can’t code” when what they actually imply is “LLMs can’t write Rust”. Honest sufficient! However individuals choose languages partially primarily based on how properly LLMs work with them, so Rust individuals ought to get on that †.
I work principally in Go. I’m assured the designers of the Go programming language didn’t got down to produce essentially the most LLM-legible language within the trade. They succeeded nonetheless. Go has simply sufficient sort security, an intensive customary library, and a tradition that prizes (usually repetitive) idiom. LLMs kick ass producing it.
All that is to say: I write some Rust. I prefer it wonderful. If LLMs and Rust aren’t working for you, I really feel you. But when that’s your entire factor, we’re not having the identical argument.
however the craft
Do you want wonderful Japanese woodworking? All hand instruments and sashimono joinery? Me too. Do it by yourself time.
† (I’m a piker in comparison with my woodworking associates)
I’ve a fundamental wooden store in my basement †. I might get plenty of satisfaction from constructing a desk. And, if that desk is a workbench or a grill desk, certain, I’ll construct it. But when I would like, like, a desk? For individuals to sit down at? In my workplace? I purchase a fucking desk.
Skilled software program builders are within the enterprise of fixing sensible issues for individuals with code. We aren’t, in our day jobs, artisans. Steve Jobs was fallacious: we don’t have to carve the unseen ft within the sculpture. No one cares if the logic board traces are pleasingly routed. If something we construct endures, it received’t be as a result of the codebase was lovely.
Apart from, that’s probably not what occurs. In case you’re taking time rigorously {golfing} features down into swish, fluent, minimal practical expressions, alarm bells ought to ring. You’re yak-shaving. The true work has depleted your focus. You’re not constructing: you’re self-soothing.
Which, look ahead to it, is one thing LLMs are good for. They devour schlep, and clear a path to the essential stuff, the place your judgement and values actually matter.
however the mediocrity
As a mid-late profession coder, I’ve come to understand mediocrity. You need to be so fortunate as to have it flowing virtually effortlessly from a faucet.
All of us write mediocre code. Mediocre code: usually wonderful. Not all code is equally essential. Some code needs to be mediocre. Most effort on a random unit check? You’re doing one thing fallacious. Your workforce lead ought to appropriate you.
Builders all like to preen about code. They fear LLMs decrease the “ceiling” for high quality. Perhaps. However additionally they increase the “ground”.
Gemini’s ground is greater than my very own. My code seems to be good. However it’s not as thorough. LLM code is repetitive. However mine contains dumb contortions the place I acquired too intelligent attempting to DRY issues up.
And LLMs aren’t mediocre on each axis. They virtually definitely have an even bigger bag of algorithmic tips than you do: radix tries, topological kinds, graph reductions, and LDPC codes. People romanticize rsync
(Andrew Tridgell wrote a paper about it!). To an LLM it won’t be that rather more fascinating than a SQL be a part of.
However I’m getting forward of myself. It doesn’t matter. If actually mediocre code is all we ever get from LLMs, that’s nonetheless enormous. It’s that a lot much less mediocre code people have to jot down.
but it surely’ll by no means be AGI
I don’t give a shit.
Good practitioners get wound up by the AI/VC hype cycle. I can’t blame them. However it’s not an argument. Issues both work or they don’t, it doesn’t matter what Jensen Huang has to say about it.
however they take-rr jerbs
So does open supply. We used to pay good cash for databases.
We’re a subject premised on automating different individuals’s jobs away. “Productiveness features,” say the economists. You get what which means, proper? Fewer individuals doing the identical stuff. Talked to a journey agent currently? Or a ground dealer? Or a document retailer clerk? Or a darkroom tech?
When this argument comes up, libertarian-leaning VCs begin the mantra: lamplighters, inventive destruction, new varieties of labor. Perhaps. However I’m not hypnotized. I’ve no fucking clue whether or not we’re going to be higher off after LLMs. Issues might get so much worse for us.
LLMs actually may displace many software program builders. That’s not a excessive horse we get to journey. Our jobs are simply as a lot in tech’s line of fireplace as everyone else’s have been for the final 3 a long time. We’re not East Coast dockworkers; we received’t cease progress on our personal.
however the plagiarism
Synthetic intelligence is profoundly — and possibly unfairly — threatening to visible artists in ways in which is likely to be arduous to understand in the event you don’t work within the arts.
We think about artists spending their working hours pushing the boundaries of expression. However the median artist isn’t producing gallery items. They produce on temporary: turning out competent illustrations and compositions for journal covers, museum shows, movement graphics, and recreation property.
LLMs simply — alarmingly — clear trade high quality bars. Gallingly, one of many issues they’re greatest at is churning out just-good-enough facsimiles of human inventive work. I’ve household in visible arts. I can’t discuss to them about LLMs. I don’t blame them. They’re most likely not fallacious.
In the meantime, software program builders spot code fragments seemingly lifted from public repositories on Github and lose their shit. What concerning the licensing? In case you’re a lawyer, I defer. However in the event you’re a software program developer enjoying this card? Reduce me a bit slack as I ask you to shove this concern up your ass. No occupation has demonstrated extra contempt for mental property.
The median dev thinks Star Wars and Daft Punk are a public commons. The nice cultural mission of builders has been opposing any safety which may inconvenience a monetizable media-sharing website. Once they fail at coverage, they route round it with coercion. They arise global-scale piracy networks and sneer at anyone who a lot as tries to protect a new-release window for a TV present.
Name any of this out if you wish to watch a TED discuss how arduous it’s to stream The Expanse on LibreWolf. Yeah, we get it. You don’t consider in IPR. Then shut the fuck up about IPR. Reap the whirlwind.
It’s all particular pleading in any case. LLMs digest code additional than you do. In case you don’t consider a typeface designer can stake an ethical declare on the terminals and counters of a letterform, you certain as hell can’t be possessive a couple of red-black tree.
optimistic case redux
Once I began writing a pair days in the past, I wrote a piece to “stage set” to the cutting-edge of LLM-assisted programming. A bluefish filet has an extended shelf life than an LLM take. Within the time it took you to learn this, every thing modified.
Youngsters immediately don’t simply use brokers; they use asynchronous brokers. They get up, free-associate 13 various things for his or her LLMs to work on, make espresso, fill out a TPS report, drive to the Mars Cheese Citadel, after which verify their notifications. They’ve acquired 13 PRs to overview. Three get tossed and re-prompted. 5 of them get the identical suggestions a junior dev will get. And 5 get merged.
“I’m sipping rocket gas proper now,” a good friend tells me. “The parents on my workforce who aren’t embracing AI? It’s like they’re standing nonetheless.” He’s not bullshitting me. He doesn’t work in SFBA. He’s acquired no cause to lie.
There’s loads of issues I can’t belief an LLM with. No LLM has any of entry to prod right here. However I’ve been first responder on an incident and fed 4o — not o4-mini, 4o — log transcripts, and watched it in seconds spot LVM metadata corruption points on a number we’ve been complaining about for months. Am I higher than an LLM agent at interrogating OpenSearch logs and Honeycomb traces? No. No, I’m not.
To the consternation of lots of my associates, I’m not a radical or a futurist. I’m a statist. I consider within the haphazard perseverance of advanced programs, of establishments, of reversions to the imply. I write Go and Python code. I’m not a Kool-aid drinker.
However one thing actual is occurring. My smartest associates are blowing it off. Perhaps I persuade you. Most likely I don’t. However we must be completed making house for unhealthy arguments.
however i’m bored with listening to about it
And right here I rejoin your organization. I learn Simon Willison, and that’s all I really want. However all day, day-after-day, a large chunk of the entrance web page of HN is allotted to LLMs: incremental mannequin updates, startups doing issues with LLMs, LLM tutorials, screeds towards LLMs. It’s annoying!
However AI can also be extremely — a phrase I take advantage of advisedly — essential. It’s getting the identical type of consideration that sensible telephones acquired in 2008, and never as a lot because the Web acquired. That appears about proper.
I feel that is going to get clearer over the following yr. The cool child haughtiness about “stochastic parrots” and “vibe coding” can’t survive way more contact with actuality. I’m snarking about these individuals, however I meant what I mentioned: they’re smarter than me. And after they recover from this affectation, they’re going to make coding brokers profoundly more practical than they’re immediately.