Back to blog
10 min read

Surrendering to the Machine

Why AI coding makes me unhappy but I still do it

Animated woman with pink and white hair among cables

As a startup founder (sorry, had to gag real quick after writing that) with no funding or employees (don’t worry guys it’s going so great), I spend the vast majority of my working day talking to AI. I don’t have meetings and I don’t have to adhere to any kind of code quality standards, but I do have a strong incentive to build a product quickly. Even at large companies, an ever greater share of white collar work consists of talking to large language models. I’ve read lots about the effects of AI on the nature and productivity of engineering work, and even some on how addictive AI-heavy work can become. What I’ve read much less about, and what I want to write about here, is what it feels like as a human to have your entire work life reduced to talking with a chat bot. This is an experience that most in tech will relate to already, and those outside of tech will likely face in their industries before too long. I routinely find myself deprived of the pride of ownership, mentally exhausted from rapid decision-making across many contexts, and feeling like I’m drowning in a sea of textual slop. Perhaps most importantly, I feel that I am fighting for my very right to think.

What AI Assisted Coding Looks Like

For those who don’t spend all day talking to GPT or Claude, I’ll start by going over why software engineers do this and what doing so looks like. Feel free to skip to the next section if you’re familiar. Writing code used to be a skill that was studied in school and honed through a lifetime of constant practice. Today, there is little need to write code. It is almost always more efficient to tell an AI agent to do it instead. For me, the release of Claude Opus 4.5 in November was the turning point after which I ceased coding by hand. As someone who got fulfillment, and, dare I say, pleasure, out of coding, I lamented the transition. And yet, in the last 10 months, I have not found a single occasion where writing code was a productive thing to do. Friends have asked me why I haven’t returned to coding just for the fun of it. After some reflection, I realized the answer is that utility was a core part of what made coding fun to me. Knowing that I could always do the same task faster with AI takes away one of the most fundamental joys of the practice.

The process of AI coding looks similar to the layperson’s use of ChatGPT. The developer types in several chat threads with AI agents that write and run code, and describe the results back to the developer. One such agent can produce tens of thousands of lines of code in hours, making human review an increasingly intractable task. As the developer has nothing to do while an agent is working, common practice is to start many such chat threads at once, orchestrating different tasks in each, and then hopping between them as each agent has something ready for the developer to look at. In the seconds of downtime when all agents are occupied, many of us resort to the cheap thrills of Instagram or TikTok. The process requires frenetic context switching as the developer strives to maximize productivity by keeping as many agents as possible busy at a given moment. The developer’s work has come to consist primarily of decision-making. By relaying successive decisions to the AI, we communicate to it the rough shape of our underlying intent. I often think of it as writing a religious text: I’m trying to explain enough of my high-level goals, thoughts, and feelings, such that an astute practitioner might be able to interpret the abstract objective behind the holy words and act on it.

I will concede that we as an industry are still figuring out what the best workflow is to balance development speed and code quality. As a data scientist, researcher, and startup founder, economic incentives and the nature of my work push me toward aggressive AI adoption. That is the perspective from which I’m writing the rest of this piece.

Fighting for our Minds

My deepest concern with AI coding practice is around navigating the delegation of one of the most fundamental human capabilities: thinking. Technology has always improved productivity by enabling the delegation of what once were human-executed jobs to machines. Dishwashers let us delegate the washing of dishes, sewing machines let us delegate the creation of individual stitches, and Google Maps lets us delegate navigation. With each technology we use, our ability to do the task the machine has automated wanes, but ideally, our ability to do other things should increase. For instance, having the dishwasher clean my dishes enables me to spend a few extra minutes each evening practicing guitar or studying up on the latest Mappa production.

I think there are two unique aspects of how delegation works with AI: a) It is possible to delegate almost every axis of thought itself, and b) while using AI, one has to constantly decide how much thought to delegate. While using AI to code, or for that matter do any other digital task, it is possible to limit one’s thought to almost nothing. If I gave Claude a rough description of the startup I wanted to build, I could keep telling it “Decide what to do next for the company and do it” for years on end without once lifting a neuron. It certainly wouldn’t be a successful startup, but it would build something. At the same time, one’s productivity while using AI is largely determined by how much thought one is able to offload to the AI. Thinking hard about everything it’s doing would be a colossal waste of time and mental energy.

The greatest challenge for the user has become deciding how much to think and what to think about. Beneath that decision is the tantalizing path of least resistance involving no thought and maximal delegation. Every unit of thought has to be evaluated for its utility and then committed to in spite of its inherent friction. I find this process maddening. It’s as if I’m fighting for my own mind at every moment, and the success of my startup is determined by my ability to give up as much of my mind as I can without completely losing the battle.

The Surrealism of Stochasticity

I think there is something deeply unsettling about having one’s grasp on reality mediated by a stochastic process.1 Writing code has always been a soothingly deterministic endeavor. In fact, that calming determinism was a big part of what drew me to it in the first place. Every result, no matter how hard to understand, had a cause that could be pinpointed to a line of text somewhere and altered in predictable ways. I am well aware that the practice of machine learning research was always far from deterministic, but the coding that underlay it remained steadfastly devoid of stochasticity.

Today, the only medium by which many of us perceive the systems we are building is through the output of an LLM summarizing its observations. The hard reality of code and its outputs is replaced by the progeny of a random process, further muddied by the inherent ambiguity of human language. Sometimes the LLM makes mistakes or lies outright, but even when it doesn’t, its output is necessarily a crude approximation of reality generated by a fuzzy process ridden with randomness. Interacting with my work like this sometimes makes me feel like I’m in a dreamscape. It reminds me of Cyberpunk stories like Neuromancer where technical work involves plugging one’s mind into some kind of deck that converts code into abstract visuals and sensations. Like the book’s protagonist, I feel my sanity slipping a bit after each work session.

1 In layman’s terms, a stochastic process is a sequence of random objects/events that evolves over time. An LLM produces text one word (technically token) at a time, and the the next word is selected from a probability distribution. Furthermore, the brain (weights) of an LLM are produced by training processes awash with randomness.

Context Switching

I find the rapid context switching required for AI coding all at once unpleasant, exhausting, and deleterious to my mental faculties. It is the TikTok-ification of a task that until recently required sustained periods of deep thought about specific problems. Now, the time spent working on a given problem before moving to another has been reduced to minutes or seconds. The demands on context switching have grown exponentially while the need for deep thought has dwindled. Sessions of AI-assisted coding leave me mentally fatigued in a way regular coding never did. It feels to me that it preys on the same mental exploit as short-form content, yielding addiction in the form of successive tiny pleasures while putting a hammer to one’s attention span and long-term satisfaction.

No Pride No Joy

Some argue that a major upside to coding with AI is the joy of greatly increased productivity. That even if the process isn’t fun anymore, the ability to create so much so quickly makes up for it. I disagree. By automating the process, I lose any sense of ownership of my work that would allow me to take pride in the end result. In the last decade, coding has been far and away the activity I’ve spent the most time doing, and, in my niche, I got really good at it. This probably sounds cheesy, but there was a thrill to writing a beam search in vanilla PyTorch, building the most efficient distributed data loader, or even debugging a cryptic NCCL error. I had a sense that each unit of work done was the hard-earned product of years of my own effort. I will concede my sense of ownership may have been a smidge delusional, since I was building on top of the work of thousands of others. Nevertheless, I miss the feeling and cannot seem to get it from my work today.

Conclusion

So that was a lot about why I personally don’t enjoy AI assisted coding, but how does that connect to everyone else, especially beyond software? As AI use spreads further into more people’s work and personal lives, I expect the struggles I talk about here to become more commonplace. The broader impacts of that worry me. For one, learning to think in an environment where thinking itself is completely offload-able is a terrifying prospect. For those able to fight the uphill battle and commit to thought, the possibilities are greater than ever before. But most will not win that battle. We have recently witnessed the frightening impacts on our minds wrought by social media and short-form content. They make us sadder, more alone, more anxious, unable to focus, and distrustful of others, to name only a few. I anticipate AI’s mental impacts to be even more dramatic. I hope anyone reading this piece can leave at least slightly better equipped to handle AI use in their own lives.

PS

A little disclaimer since I spoke very negatively about AI use in this piece: I use AI a ton. I have max Codex, Claude, and GLM subscriptions that I routinely exhaust every week. I launch ChatGPT and Claude threads for everything from cooking advice to programming for powerlifting to discussing my feelings. I have worked as an AI engineer and researcher for the entirety of my career, including well before the launch of ChatGPT. For better or worse, the creation of AI is the thing I have tried the hardest at and am most capable at in this life. I believe strongly in its ability to do good. Like any powerful technology, it can also be damaging. Consider me writing this piece as a small attempt to offset the wholesale endorsement of AI and its advancement that makes up the bulk of my working life.

Acknowledgements

Thank you to many of my friends with whom I discussed the subject matter of this post. Appreciate y'all. I used ChatGPT and Claude for feedback and edits ;).

Discussion

OMG there's even a chat, this is basically Reddit