I don’t enjoy programming very much in 2026. It’s not all AI’s fault. Partly mine too. Read on to learn why.
Simple tools
In my earliest days as a programmer, I got started with Python and vim as my
text editor. I dabbled in various plugins and such, but mostly used vim close
to the base config. That meant no autocomplete and generally needing to remember
import paths, class and function signatures, etc. I wound up committing a lot of
that kind of thing to memory1, which made the act of programming very fluid.
I would fire up my test suite via watch in one terminal and code in vim in
another and be fully engaged in whatever it was that I was building. Python’s
dynamic typing was actually an asset in that it required me to internalize more
of the system rather than lean on the safety guarantees of a type system.
Sure, I still had to look up documentation and Google error messages and stuff. But the tools were simple which meant I needed to be more engaged, active and skilled at using them.
Power tools
When I started at Google, I was dropped into the deep end of Android development.
You could use vim and command line tools, and I gave it a try after being
frustrated by IDE bloat, but ultimately Java as a language (and Android as a
platform) really pushed you toward using an IDE.
An IDE and code indexing meant I didn’t need to commit as much to memory. Every
symbol was a mouse hover or cmd-click away from the docs or implementation code.
In some ways this was good, because there were still plenty of things to keep
in mind while coding and not having to remember that the import path for the
Widget was com.foo.bar.what.really.gosh.thats.right was a relief.
But being skilled at really knowing and using APIs was less important. More functionality was handled by the language, IDE and other tooling. It was something that I remember feeling at the time, but also feeling like I could continue to enjoy coding despite that. And I did for 10+ years at Google and in the short time since then.
A tool or a factory?
Even as recently as late 2025, I was approaching LLMs/AI as a power tool. I found them very useful for general programming questions/answers. I would occasionally fire up Claude Code to help debug an issue or help trace some data flow through an unfamiliar subsystem (with mixed results). But by and large I wasn’t using LLMs to build software for me. They really weren’t quite good enough at it.
But right around when I wrote that post about my uses of AI, there was a change in the capability of frontier models. Claude Opus 4.5 could actually understand and work on actual codebases and projects. I began to feel some social pressure2 to start offloading more of the “simple coding tasks” for the sake of efficiency.
I can’t argue that Claude Code can now bang out an implementation of something much faster than I could, and also that it’s usually not terrible in isolation. With a few iterations and review feedback, the result is usually pretty good.
But I’m not sure I’m actually any more efficient.
It’s certainly much less fulfilling to review code created by an AI. When reviewing code from a teammate, there’s a sense that you’re investing some of your time and skill back into someone else, who will hopefully have new things to think about or who might learn something from the review. Or maybe they’d push back with a valid rebuttal and I’d learn something. There’s nothing like that with a pre-trained, sycophantic LLM.
I want to like programming again
I think I compromised on some of my own principles when it comes to how I as a Christian feel I should be using AI. So I’m going to try to dial back some of my use of LLMs. I want to internalize more of the systems I’m working on, be more careful (as in “full of care”) in my approach to building software.
I’m also going to try and get back to my editor roots and swap out the IDE for
neovim, at least for personal projects3.
It might mean I fall behind or don’t reach maximum efficiency, but I suspect that liking the act of programming again might have positive knock on effects for my work.
To quote one of my favorite authors4:
We must choose not to do all that we can do.