AI for code is a failure mode
"It's been a pleasure!" I'll be away when this designer I've loved working with actually rolls off the project, and so this is it. We say goodbye-for-now. I close the video call and immediately take notes about my failure to notice and empower her technical side.
Fuck. How did we get here?
Misery
There's a decade-plus old article about the hazards of programming that opens with a rather memorable "But, for the sake of the argument, can we agree that stress and insanity are bad things?". It's by a Peter Welch I know nothing about. It deploys language that I don't much like.
It also rings painfully true every time I read it again.
You might have heard of a concept that people call the coder's high. It's this magical feeling where things just work and you, yes YOU, have brought a program to life that does something. There's nothing like it. For a moment, you're God. You have bent the machine to your will. You have solved the puzzle. You feel like a million bucks. It's addictive.
That feeling is generally bookended by hours / days / weeks / months of being convinced nothing will ever work, your entire career path was a mistake, you're a fraud who should have picked a different job and your life is a joke. Sure is a good thing no one in this field has a brain that hates us to begin with HAHA-sob.
It takes unusually well-balanced people and/or years of experience and introspection to put up with this kind of self-worth rollercoaster. It'll still break you, every so often. Ever wonder why programmers are on average fairly unpleasant with aggressive conversation styles and a preference for gallows humor? Yeah, that's one reason why.
Temptation
So, really, is it any wonder coders are embracing LLMs with such enthusiasm even if the costs are unacceptable, the results aren't even that good, and they're doing bad things to us?
Do note: I am not interested in negotiating those points. I already have to negotiate them at work, because I enjoy making rent and paying for my yarn-making habit. There is no comment section and I will delete your emails.
Programming sucks. That's just a fact. LLM products promise to make the coder's high the baseline, and to some degree... they kind of do. It's all fake, though. At best it's all fairy dust. At worst it's a gift from the fae folk, and surely you know what those are like. Right?
In my references is a thread I can no longer link to. It was by a psychologist who works with the intricacies of how software teams operate, and it was about how LLMs seem to unlock motivation in people and make them feel empowered. It's a genuinely great insight. Accounting for it is vital to making this fuckery go away.
I can no longer link to it because she blocked me instantly when, months later, I jumped off one of her posts to politely express frustration at the fact that chronically ill people are using LLMs to process healthcare research. I don't wish to linger on that specific topic because my focus today is on coding: the dynamics will be similar. If you're interested in the healthcare aspect, The Sick Times covered it to some degree if with lackluster politics.
Allow me a brief digression
I'm at my intern workbench, struggling through bending a smooth 180 degrees curve in wide borosilicate tubing. Nearby, the workshop chief and the other glassblower fight with a difficult piece. It requires so much heat the graphite tape is not enough to hold it in place. The proper approach would be building a temporary support structure: that takes time.
The chief pulls out a wide roll of a thick, white, paper-like material, reserved for special occasions. I ask what it is. "Du joli papier Canson" ("Pretty Canson paper"), he laughs, before cutting into it with scissors and no PPE.
It was asbestos.
I am not interested in arguing whether or not LLMs are truly useful for code. I think that is not a question that supports a binary answer, because programming is too diverse for that. They're useless for many types of tasks and especially for the kind of shit I do which requires a deep understanding of every intricate part built over years. They're probably near-miraculous for some specific tasks, notably throwaway scripts, offensive research and specific types of throwaway prototyping. I expect that they are on average highly mediocre and studies seem to point that way.
Several people (Mike Cook in a piece I like a lot, Casey Explosion, and Cory Doctorow who I don't read) have drawn comparisons between LLMs and asbestos, focusing on its toxicity, on the way it has now contaminated everything, on the fact that it will take ages to remove at great cost.
Asbestos is also really useful. Enough that a man who cheerfully called covid "natural selection" exposed me to it non-consensually in 2023. Hopefully we can all agree he should have done things properly instead.
Discipline
The way to resist both the self-worth rollercoaster and the temptation of the code extruder is to stop being a coder or a programmer and grow into a software engineer. The expression, credited to Margaret H. Hamilton, is a bit of a joke outside of highly specific subfields: we most often have no standards, no guilds, no audits.
I want to believe we can do our best to approach the job that way regardless, as craftspeople if not true engineers. This requires patience and an attention to detail we are rarely granted by capitalism - along with a degree of humility and care that is not encouraged by our typical cultures. It's still worth striving for.
In the case of my coworker, a tech designer who never got to be technical, she turned to LLMs because it finally made her feel like herself again. We failed, I failed, to unfuck the framework sufficiently for her to navigate it. Every man on the programming team, plus my genderfucky self, failed to integrate her in our routines so she could thrive. The fae folks - and management - offered a different solution and it was laced with poison.
Can you tell I'm mad? But not at her.
As I wrote previously, this is where a non-judgmental harm reduction approach is essential. Without open conversations, we don't get bug reports. Without bug reports, we can't fix the bugs. Often the bug is not even in the code itself, or it's not a simple bug. It's years of tech debt, it's bad UX, it's lackluster documentation, it's the failure to foster an environment where you feel safe asking questions, it's everything about the time we live in that makes us feel like we have to solve every problem alone.
It's the lie that "alone with a chatbot" is better than "together as a team". As I keep writing: I'm a queer anarchist. Specifically I'm the kind of anarchist who believes in community, in solidarity, and in building a better world together so broken institutions are made redundant. It may seem a bit silly at first glance but these principles are also at the heart of how I do my job.
Solidarity
I'm an engine programmer ("engine engineer" sounds ridiculous despite what I wrote just above). This means I work on core systems and underlying tech that the game team can then use to build the actual videogame. The true end product is, again, the videogame, not the engine: this means I am constantly balancing a broader vision for what good systems are with the actual needs of the actual games.
There's often a strange form of assumed hierarchy between engine developers and game team engineers. Engine devs are assumed to be true experts with a long-term vision, while game programmers are seen as grunts who will commit all kinds of crimes to ship the thing. Fuck that.
We simply have different forms of expertise. I get to be at a remove and curate the larger-scale, longer-term plan. They get to confront said plan with reality. It's a partnership between equals who simply work on interlinked but different things.
As a result, I have a responsibility to continuously shatter the ivory tower - real or perceived - and make myself accessible. They have a responsibility to provide me with the information I need to adjust my designs. This requires trust in both directions. It requires a boatload of talking. If they turn to a chatbot, it all collapses.
They should not need to turn to a LLM to find information. Said information should be accessible and well-structured: solid code examples, well-maintained documentation, high-quality search. My own knowledge is to be shared, not hoarded. This applies at work as it does in every area of my life.
They should not need to turn to a LLM to ask questions. If they are concerned about bothering me, then I have failed to make myself accessible. If they are concerned about looking stupid, then I have failed to create an environment where it is safe to not know something. This does not mean I cannot have boundaries: I can set hours where I am unavailable, I can link to a documentation page rather than re-explain something from scratch.
Do you see how these foster trust and empower users instead of giving a false sense of autonomy? Do you see how critically important those things are for growth and long-term improvement of the commons? Do you see how, in this framework, AI use can only be a sign that something went horribly wrong?
I refuse to be reasonable
You have to understand. I will burn the entire game industry to the ground, with me in it, before I let usage of so-called AI become the new normal to create videogames. Yes, especially for code.
Every single problem so-called AI proposes to badly fix was already known. Near-all of those problems are hard to solve but have known solutions. Those just happen to require time, effort, and/or people in power to be knocked off their pedestals.
Instead of revolution or even reform, instead of resources we have asked for to do the work we are good at, we get offered systems built on theft and non-consent. Those get shoved down our throats at every turn, automate bigotry and erasure, facilitate fascism and turn people into even bigger jerkbags than they already were.
There is only one way to look at such horrors: an abject failure.
Further reading
It Breaks a Village - what a fantastic title - is an in-depth case study / postmortem on the harm a slightly more permissive "AI policy" did to the community developing the Bevy game engine. See notably "The Other Half of This Post".