AI Tools and the Craft of Coding
I found this post The Programmer Identity Crisis on Mastodon via a boost by David Beazley of Andrii Mishkovskyi’s post. I agree with Andrii, this really is a beautifully written piece, but I do, however, think I have something to add.
So let me try.
Here’s the crux of the programmer identity crisis, according to its author Simon Højberg:
The ghosts of ancient Hackers past still roam the machines and—through the culture they established—our minds. Their legacy of the forging of craft lingers. A deep and kinetic craft we’ve extended and built a passionate industry on.
I find craft arguments compelling. I am a craft-focused coder first and foremost. By craft, I mostly just mean care and attention to detail, a love for the language and style of a program. Programming for the sake of other programmers, not just for the computer executing the code.
It’s this craft that Simon feels is in jeopardy with AI-assisted coding. About LLM coding, he writes:
It reeks of a devaluation of craft, skill, and labor. A new identity where our unique set of abstract thinking skills isn’t really required; moving us into a realm already occupied by product managers and designers.
The thing I want to talk about is the difference in craft and its alternative, what I’ll call the just-ship-it coder. I’ve jokingly referred to this as the coder who goes, “Did it work? Great, ship it!” It’s a low bar, and maybe you get a sense of my feelings about the pure just-ship-it coder.
Now realistically, a pure craft coder or a pure ship-it coder don’t exist. We’re all somewhere along that spectrum. I love craft, but I’m pragmatic. I work with folks who are more inclined to ship than worry about craft, but even they don’t want to produce slop no one can maintain. I do, however, think there’s a pretty sharp divide between craft and ship-it coders in the circles I work in.
My open source colleagues care deeply about craft. My professional colleagues care deeply about shipping code. I find adoption of AI-assisted tools much higher in my work colleagues than in my open source colleagues. I think there’s a corollary here to this idea that Simon writes about, that AI tools are going to ruin the craft of what we do.
I’m not sure it is. I think you could be a craft-loving coder and still use an AI assistant. See Mitchell Hashimoto’s post on Vibing a Non-Trivial Ghostty Feature. You can read his process there and see plenty of care and craft involved. As I said, I consider myself a craft coder, and I find it fun to use AI tools in my coding. I totally agree that there’s a risk that we don’t focus enough on craft with these tools, but that risk exists even without using AI. The trick for us who care about craft is to keep arguing for it, regardless of any specific tooling we use.