I don’t like LLMs.
End of post. Okay, not really. There’s more to it:
I really don’t like LLMs. God, they piss me off.
Iteration #9999999
LLMs are the hottest topic in software. Regrettably so, I’d say.
Based on that, you’ll probably already know basically every point I’ll bring up to justify my position.
Enough blog posts have argued about the topic from every possible angle.
LLMs bäd? LLMs gud? Find a blog page that suits you. LLMs are the machine god, get on your knees and
pray? Anthropic’s newsroom is down that way.
Merely listing my reasons to dislike LLMs would therefore be rather boring, wouldn’t it? Instead, I’ll try to also
comment on some observations I’ve made over time on how we reason about LLMs and how the discussions go (and why the
discussions SUCK).
Digital Veganism
If you ask most anti-AI people on their reasoning, ethical concerns are some of the most common points you’ll probably hear.
Before you ask: I totally agree. All of the popular LLMs in use nowadays are wildly unethical for a plethora of reasons,
from like siphoning off the entire internet for training to siphoning off huge swaths of land to build the datacenters that train and
run the LLMs. The industry is inherently predatory and steals from everyone it can (sorry, I meant “collecting user data for training purposes”).
And so on. You most certainly didn’t hear it here first.
I’d argue this reasoning is very close to how people argue about going vegan. Few people would contest that industrial animal farming is also
wildly unethical, and a logical consequence of that would be to also reject, or at least avoid, the products that result from these practices.
Not entirely coincidentally, I also think there are plenty of parallels in the general discussion of LLMs and of industrially farmed animal products.
At the core of both of these arguments sits the idea that even if the great evils of this world are outside of your control as an individual,
you still have a responsibility to reflect on the broader implications of your choices (in what to consume, for example).
This isn’t by any means a controversial idea, but people end up being rather selective which specific aspects of their life this idea is applied to.
To some extent, everyone has to be: The only fully morally consistent choice is to move to a cabin in the woods, and unless your name is Ted Kaczynski
you’ll probably consider this too impractical. While this is a fairly horrible indictment about the society we’ve
collectively built, different people draw different conclusions from it, and most importantly, they draw their moral red lines at different points.
What I believe can serve as a takeaway from most discussions both about going vegan and about LLMs is that pointing out the immorality of a thing
is fairly ineffective in changing someone else’s mind, at least most of the time. This isn’t an excuse for unethical behavior of course, it’s still wrong.
And even though pointing out that everyone’s a hypocrite in some way reeks of whataboutism, I can’t help but observe that arguments purely appealing to
morality appear fairly weak to someone that isn’t already convinced.
There are still contexts in which it absolutely makes sense to point out the ethical concerns with LLMs. For example, it’s still a completely
valid reason to explain why you yourself don’t use LLMs. When it stops being just about you, for example in a project-wide AI policy discussion,
I’ve observed these arguments just falling flat.
Side note: I’m also super annoyed by people arguing in favor of AI saying that “it’s just a tool” to handwave any such ethical concerns away.
The tech industry as a whole has enough of a problem with people dissociating themselves from the consequences of their work. One might not consider the
ethical concerns a dealbreaker for their LLM use, whatever, but I find it dishonest to reject thinking about the ethical implications of LLM use
entirely.
Side rant: Proxy arguments
Speaking of AI policy discussions: They’re always such a mess. I’m not sure I’ve ever seen instances where public AI policy discussion didn’t
immediately turn into an utter cesspit. Usually, the only party that really got something out of it was Phoronix getting free traffic on the articles
about how messy the discussion turned out.
From what I can tell, one of the easiest ways to derail such a discussion is to start “arguing by proxy”. That is, you conceal the actual reasons
for why you hold your opinion and instead argue based on other points (that you believe might be more likely to convince people).
The most common case of this, in my experience, has been people who will argue based on qualitative aspects of LLMs (“generated code is bad”, “we’re getting into licensing trouble”, etc.) when they’re actually not that worried about these points and instead think about things like ethical concerns.
This is a really, really bad idea, and above all it’s HORRIBLY annoying. In almost any case, it leads to bad-faith arguments being made when
other participants respond to these proxy arguments to try and rebuke them. And before you know it, everyone’s talking past each other and the
entire discussion turns into hot garbage.
LLMs are annoying
So what can I do about people around me trying to use LLMs?
Not much, really. In the end, people make their own choices, and I can’t just force them not to use it. However, in the same sense, I can reject
LLMs being forced upon me (to a reasonable extent). I can push back on people who mistakenly think they’re helping by having Chap Gibbidy™ write
up the issue report for them, I can push back on slop MRs, for code I own I can tell people to submit human PRs or go away.
And honestly, there isn’t much of an alternative. Because these things are SO GODDAMN ANNOYING. Genuinely. I’d rather have 100 “game crashes pls fix”
bug reports than one more LLMslop “analysis” that hides actual information behind 5 pages of useless babble that only sounds good because it’s peppered
with smart-seeming keywords of zero substance. How did we arrive at companies automating the “confidently incorrect internet person discovers a thesaurus
for the first time” cliché???????
Code contributions aren’t much better, really. Most LLM contributions give a distinct smell of “I couldn’t be bothered to actually write this up,
but I have an LLM subscription, please put me in the changelog”. In a way, it’s a matter of respect to the codebase and the people who spent time
writing the original code. “If you can’t be bothered to write it, I can’t be bothered to read it”.
I honestly believe that this alone is reason enough to reject LLMs and their products.
They’re a hassle to deal with for everyone except those who prompt it.
Why should developers accept this blatant offloading of the annoyance that is dealing with LLM slop onto them?
Developers typically believe that they do better, that their LLM code is above the pure slop churned out by random uninitiated people.
That’s not always wrong, but developers are not above the universal trend that the more LLMs are involved, the more annoying things get for everyone else.
Unfortunately, it seems like once you start interacting with LLMs at all, it seems to take over more and more as time goes on.
Crack CocAIne
One more thing that makes me extremely uncomfortable with anything relating to LLMs is that they seem like a genuinely addictive substance.
I’ve lost count of how many people in my immediate surroundings I’ve seen that “just tried AI for feedback on prototyping” and two weeks later
they’re slopping out code like there’s no tomorrow. At every step along the way I get assured that “I definitely still know what I’m doing, I’m
reviewing the code”, but are you really?

Up until two years ago, reviewing code was the thing everyone mostly accepted and did in a sort of “FOSS jury duty”
way, where it’s definitely not the favorite part of the job but everyone does it to keep everyone else unblocked.
Suddenly, reviewing the code is the main way you interact with it at all, and I just don’t believe that you actually
get a great understanding of what is happening just by reading code. It sounds like the review step is a temporary concession
you make to those who doubt AI code, but I don’t trust for a second that inconvenience won’t be automated away later.
This isn’t even getting into the cases of genuine delusion, where people elevate their LLMs to genuine personal friends (or even closer relationships).
Not all people fall into the hole this deep, but I can’t shake the impression that people are falling down a treacherous slippery
slope where something about these things keeps luring people into taking over more and more, bit by bit, and I can’t help but think it’s
deliberate design. I can’t help but suspect getting people hooked if not completely reliant is the whole point.
This almost sounds conspiratorial,
but the general principle of getting people subtly hooked into your service has seen a literal decade of optimization in the social media realm, and
at this point there are more than enough studies backing up how well that works. LLMs look like they’re like a reprise of that same playbook, but now
targeted at your work time instead of your free time. I’m not sure if there are reliable studies on the addictiveness of LLMs yet, so for now I mostly
rely on anecdotal evidence to back me up here.
What also doesn’t help is the constant proclamation that “AI is inevitable”. It’s easy to claim that if you’re prompting an LLM and are
absolutely amazed at all the things it spits out for you, but outside of vague references to calculators or compilers there really isn’t much to back
that claim up. Usually, it seems to rely on implicit assumptions that any possible limitation or annoyance that’s present in LLMs today will be
overcome by tomorrow, because they’ve already made so much progress up to here!
Of course, if you genuinely got addicted to LLMs, it is also hard to imagine how you’d continue programming without it. Just like you can’t imagine
a life without social media if you end up addicted to that. I’m just baselessly speculating here, but it would not surprise me in the slightest if
this sentiment was more of an expression of people being personally unable to resume coding without an LLM to prompt.
Who knows whether that’s actually true. But given how many people express this opinion, it is quite a terrifying thought to have.
(pixelcluster from the future here. To clarify: I don’t mean to call every single AI user an addict. What I’m trying to point out is that commercial LLM products
seem to employ a range of techniques I’d consider manipulative, and that I’d suspect that this can (sometimes) lead to addiction-like states or at least entice
people to use LLMs more than they otherwise would.)
Side Note 2: I don’t care about LLM “quality”
As alluded to before, the actual quality of LLM output is a popular point of contention, though in many cases I’d argue it’s used as a proxy argument
rather than a genuine concern. That’s also why I haven’t talked about output quality at all up to this point. Whether LLM usage actually accelerates
you as a developer isn’t as clear-cut as many proponents would claim it is (there are more than enough case studies claiming it’s a massive speedup,
or is at least perceived to be, yet some studies claim to not find any objective speedup after LLMs are introduced), but for my opinion on LLMs it
honestly doesn’t matter that much. My concerns have been talked about at length already, so I don’t really care if GPT-6.7 ends up reasoning 200% better
than the previous iteration or anything.
Random Ramblings on Reasonable Applications
All my concerns here are really just about LLMs as in the ones sold by <insert your favorite model provider here>.
The core idea of (VERY roughly) creating a neural network that can ingest human language and extract some comprehensive meaning from it
isn’t really a bad one at all. Human language is super weird and messy and it makes some sense that a neural network fits the problem.
For everything else, though? Throwing LLMs at problems like reading or writing code feels like a brute-force hack more than anything.
Programming languages have been designed to be structured and unambiguous for a reason, quite literally their whole point is specifying
an exact behavior in a form that is easy for machines to ingest and process. And we’re throwing all of that in the wind by having an LLM
ingest the text, and then doing funny statistical transformations that you have neither lots of insight nor lots of control over (well, it’s not really
as simple anymore, but you get the point). It may be a solution, but I think it sounds horribly stupid if you think about it.
The “AI” industry seems to be increasingly moving to offloading work onto tool calls provided by whatever harness you use, to invoke programs
doing things the LLM itself can’t effectively do (for example,
rm -rf --no-preserve-root /). Sometimes I’m wondering if there are more
reasonable use cases if you basically invert that relationship: That is, write a proper program that “Does A Thing”, but some
inputs/parameters etc. are determined by running a language model against some input in human language. Ideally, given that such kind of
model doesn’t need to predict arbitrary token sequences, you wouldn’t even need to scrape the entire internet for it, and you won’t really get
addicted to that program, either. I probably would have way fewer issues with something like that.
Conclusion
I don’t like LLMs. If you use them, kindly go away. Thanks.