The Death of a Software Craftsman (it happens a lot 'round here)

https://naildrivin5.com/blog/2026/02/23/the-death-of-the-software-craftsman.html

AI Abstinence? All in on Agents? Or resign yourself to becoming a niche craftsperson?

The Death of the Software Craftsman

The Death of the Software Craftsman

Naildrivin' 5 - Website of David Bryant Copeland
@davetron5000
Thank you for writing this. This the best short description of this weird feeling where I just do not know if it is a new segment in an ongoing ride that is icky but comes up as fun too or just a new ride and the fun is for other types of persons. Software as requirements and outcome management, not as a puzzle to balance conflicting tradeoffs with the passing of time and knowledge.

@davetron5000 I hate this timeline. I left corporate tech in 2021, and it would have been hard enough to return had not this rug-pull pulled this particular rug. Now I can only code on passion projects or grant-funded work I guess.

I still care about code. Writing code is transformative, and I don't want to lose that. So for me, I guess it's option 3: Embrace Tradition. (But I'm still not calling myself a "craftsman".)

@CoralineAda I have been a depressive haze for the last few months because of this. I'm not sure if writing this post helps, but I think it does. Though still not sure what this means for me personally.

Craft{er,sman,sperson} - I don't love the term, but "maker" doesn't seem right to me, nor does "artisan", but maybe it's just "coder"?

@davetron5000 We could recoup “software architect”?
@CoralineAda true - that is such a dirty word to me, but maybe it could be turned around!
@davetron5000 @CoralineAda I always liked "s/w architect" as something like "the designer of the core structure and abstractions of a s/w project in order to champion the true longterm needs of the users who may not be able to fully articulate those needs", and not its modern meaning of "person who chooses which pub-sub tool to use and which database abstraction to put on top of which RDBMS".
@davetron5000 @CoralineAda The architect is the person who can say no to a shortcut or design decision if it short-changes what the user actually requires. And as such, the project manager <--> architect relationship should be a productive dynamic of tension due to to pulling in almost opposite directions, to ensure that both can play their role correctly... on a good project they complement (and compliment) each other in the interest of the end-user/client
@CoralineAda @davetron5000 or perhaps “software poet” 😄

@jaredwhite @CoralineAda @davetron5000 iirc very early versions of rails docs had examples of a "David" whose job was "code poet"

I thread this particular needle by changing the noun to a verb, which, not coincidentally, helps separate action from identity: I write software. I clean up messes. I help the people around me learn to do those things.

@davetron5000 “Professional” is right there.

Anyone proactively deskilling themselves by feeding at the slop bucket is behaving unprofessionally—never mind unethically and engaging in class war against their fellow laborers—and should be considered thusly.

@jgarber I dunno, "professional" as something like "accredited" (like in real engineering) would be nice, but since there is no accreditation it feels too ambiguous (esp when a more general definition is just "gets paid").

NGL, I have a feeling the end state will be "engineer" == "writes markdown for AI" and "coder" == "writes code the old fashioned way" and the class-distinctive difference of those two words would not be an accident :(

@davetron5000 Can we just call sloperators "dipshits" or "chumps" or something? Hard to be taken seriously when everyone's calling you a chump. 😂
@davetron5000 @CoralineAda code luthier, software taylor, computer mason, codesmith?
@oinak @davetron5000 “hand-coder” is straightforward at least.

@davetron5000 I went through a similar haze, which ended in late December for me. It's really hard to describe in a few words why the following doesn't match the experience I have with LLM-augmented coding using certain tools (not most!):

> “coding” by writing Markdown and feeding it to a compiler that sometimes works and sometimes doesn’t until I ask it nicely to do what I need.

Instead, it feels more like a weird form of rapid-fire software design iteration, like whiteboarding but in code.

@kerrick My limited experience is that it's anything but rapid, but I have not gone deep on any of this.
@davetron5000 thank you!! This is such a clear-eyed articulation of what I’ve been trying to get my head around these last few months.
@davetron5000 appreciated footnote 2. To me, "maker" has always read as "we have a special word to differentiate us from /girly/ stuff like sewing!"

@davetron5000

I read "All content on this page was created without any assistance from a Generative AI" to mean the opposite of what you intended, heh.

Long time GLI user. <3

@davetron5000 In case you find it helpful, the "All In" Problem #2 you mentioned can be ameliorated by cloning your dependencies' source code and putting them in reach of a coding agent. I've found it extremely helpful for using niche technologies with LLM-augmented programming.

@davetron5000 In one of my projects I've gone so far as to give it access to the source code of:

- ruby
- concurrent-ruby
- minitest
- minitest/mock
- crossterm
- ratatui
- steep
- rbs
- magnus
- rb-sys

It doesn't dive into any of them often, but it's *really* helpful when it needs to (or when I decide it needs to, saying "prove it!")

@kerrick why clone dependencies? You can tell it to read the dependency source code installed via `bundle show`. Or are you just never even installing dependencies in your workflow?
@soulcutter I gained the habit working in JS apps, where node_modules often contains minified code. I kept the habit in Ruby because my dependencies included Rust libraries. I still enjoy the habit in pure-Ruby software because sometimes the repo contains docs and examples not included in the packaged gem, and sometimes the git history of the repo can be helpful.

@kerrick I guess. It could just as easily mislead imo.

And there remains the problem that it still goes down dumb deadends because of training data lag - recently I’ve seen complaints about minitest mocks being extracted and how it repeatedly tried to remove the (correct) mock dependency because the training data thought it was integrated. It is frustrating that it is a seemingly inevitable side-effect of how it works that it repeats bonehead errors like that

@kerrick these are things you end up doing to correct its bad behavior. There’s a thousand cuts of them
@kerrick fwiw I’m not fully anti or fully for, I think I’m in some reasonable middle ground. I use it. The all-in perspective somehow looks past these things, or gets excited about sharing how they configure the tool for each point of friction. I think a lot has shifted from understanding code to understanding the latest tool configuration strategy. Idk
@banterCZ článek je podle mě omezený kontextem, který sám popisuje jako "we put excel sheets on web". Chápu, proč se to tolika lidem zdá jako všechno, co se v programování v praxi dělá, ale je to strašný omyl. Můžu z první ruky pozorovat, jak lidé s docenturou ve svém oboru ale neprogramátoři používají nejlepší LLM k zakódování svých myšlenek a je to nepoužitelná katastrofa. Umět programovat znamená ve své podstatě umět myslet. Kdo to neumí sám, toho LLM nezachrání.
@davetron5000 Late to the party, but I really appreciate this post. It does a fantastic job articulating what I've been feeling as well. I am increasingly struggling with my own Hard Pass position.