As a spatial data scientist, I put tremendous value on efficiency. I’ve poured what feels like an inexhaustible number of hours into optimizing my Emacs config (unashamedly) so that I can work more efficiently, and even to become more efficient at being efficient. And so on. All of this has been remarkably satisfying, even if I have no applied end goal in mind.
One of my favorite things about programming is creating R packages to streamline some cumbersome task, and arguably the best part is finding some edge case that doesn’t work in some niche function and then using the debugger to do truly deep work: testing variables in a function’s intermediate state, decomposing ellipsis arguments, and so on.
I literally don’t know if I’ll ever do this again due to agentic coding. For years I was using the OpenAI API in Emacs as an interface to ChatGPT and thought, “This is a really powerful tool.” But the first time I used Claude Code, it was way more advanced than what I imagined we’d see in the next 10 years, even having extensively used LLMs (perhaps I was naive). The stories other people told about it seemed too good to be true, and none convinced me until I started using Claude Code myself. After coming to the immediate realization that this tool would be weaponized against the poor, my next thought was, “I don’t know if I’ll ever use the debugger again,” and that made me sad.
I have always felt that programming was like an art form. It doesn’t have the same aesthetic value on broader society as literature, music, and oil painting for instance, but you can definitely identify a “style” in many a programmer’s approach and code. For those of us who regularly review others’ code, it’s gratifying to see a super clean, code-embedded .html output from a computational notebook or an elegant and solution to a cumbersome problem.
But now programming has awkwardly undermined itself because it doesn’t feel efficient to actually program anymore. While I could still program just for fun, this has lost it’s luster since I know I can just tell Claude to create things faster than I can develop them myself. Of course, things do go wrong and there is a need for manual troubleshooting, but it is far less satisfying deciphering errors created by agentic AI than sorting out errors produced by myself or a colleague. I still get tremendous satisfaction out of writing even though LLMs can write for me, so AI’s effect on programming feels fundamentally different.
It also feels different than the industrial automation that has taken place decades prior. Of course there was tremendous job loss and economic hemorrhaging as a result of this type of automation, but as David Graeber pointed out in Bullshit Jobs: A Theory, these were generally jobs that people did not want to do. Not many people have worked on an assembly line purely for fun and without pay in their free time, whereas tons of people (even professional programmers!) program for fun and for free, although maybe far fewer today than a few years ago (this obviously excludes vibe coding).
Something specific (and different) happened to programming, moreso than other tasks changed by automation. I can’t quite put my finger on what is so disheartening about a tool that has made me so much more efficient when that was the point of programming to begin with. Maybe this wouldn’t be an issue if I was simply more skilled and farther ahead of the agentic AIs, but I have a sneaking suspicion that it’s more than that. Will I still be writing my own git commits via Magit in the future? I’m already doing this less and less. Will I be typing on a keyboard in five years? I have a newfound frustration with not being able to type as fast as I can speak, and perhaps in ten years I’ll be frustrated that I can’t speak as fast as I can think. What does this all mean?