Skip to content
Tech News
← Back to articles

Don't call yourself an artisanal programmer

read original get The Pragmatic Programmer (20th Anniversary Edition) → more articles
Why This Matters

A working programmer pushes back on the emerging industry framing that splits developers into 'serious engineers' who ship with LLMs and 'artisanal' coders who supposedly just enjoy the craft. The author argues the label is a rhetorical move that quietly strips the word 'engineer' from people who prioritize correctness, maintainability, and deep familiarity with low-level details. It matters because the vocabulary we adopt around AI coding tools shapes what the industry treats as professional norms — and whether 'move fast and break things' becomes the default again.

Key Takeaways
Worth a Look

The Pragmatic Programmer (20th Anniversary Edition) — If you care about craft, correctness, and understanding your code down to the low-level details, this classic is the definitive manifesto for that mindset. It's full of practical habits for writing reliable, maintainable software by hand — exactly the kind of deep engagement the article argues for.

See The Pragmatic Programmer (20th Anniversary Edition) on Amazon → Affiliate link — we may earn a commission on purchases, at no extra cost to you. Product picked by AI based on this article; it is not a tested recommendation.

Don't call yourself an artisanal programmer

September 13, 2026

So I’ve been meaning to write about something, but got sucked into this rabbit hole, and now I’m kinda scared if I’ve been a subject of propaganda that worked on me.

A common theme in software development AI discourse is that there are “serious” engineers who value the end result the most, and “artisanal” coders who value the experience of coding over the final product. This dichotomy doesn’t correctly describe me and likely many others, but let’s play along with it for now.

I want my programs to be reliable. Patience and care are two important ingredients for this. When designing programs from ground up and taking my time, I just know that they’re correct, and that any mistake is due to a typo. Unit tests, LLM reviews, and provers can guarantee the code is 99% right, but not that it’s 100% right: optimal, maintainable, readable, and that it doesn’t rely or break due to undocumented incompliant behaviors. I want that 100%. I can only begin to achieve this with deep connection to code, so I refuse to use LLMs, since they isolate me from the low-level details that matter and cannot guarantee correctness by construction.

Contrast

Which is where the dichotomy falls apart in my eyes. By the book, I’m an artisanal coder, since I don’t use LLMs. But if the industry calls the opposite of “artisanal programmer” a “software engineer”, isn’t there a subtext that I’m not an engineer? This may seem like a minor point, but it matters on a subconcious level. Care, attention, and precision are the defining characteristic of engineering – so why is this term appropriated by people who are becoming closer and closer to managers?

Back in my day (ahem), developers hated management that wouldn’t allocate time to dealing with tech debt, and the “move fast and break things” attitude was considered childish. Nowadays, common knowledge among developers says that vibecoding (I’m using the term loosely) is the norm, and wasting time on reliability work is unserious. Who is in the right?

Redefining terms

To me the answer seems obvious: you can’t earn the title of Software Engineer by building stuff blindly. An engineer should know what they’re doing. But let’s ask someone more knowledgeable about this topic.

... continue reading