I had always treated writing code as a craft,
but in the current situation, we’re at a crossroads again.
The “productivity” gains with AI are not something you can dismiss, and it’s also not just another “autocomplete” - believing that would just be ignorant denial. But what I fear isn’t about the quality of code that AI writes, that’s irrelevant in this discussion. It’s more about the collective apathy that’s sinking in, and my own loss of ability to care about code at all.
I’ve lately become more and more aware of a fading sense of “craft” that I used to associate with what I do. Code to me was thought and taste materialized; any code written by someone who cares evolves to have that person’s “personality” embedded in it - and many share that feeling. What some LLM generates is foreign to me, and comprehension isn’t the problem here as it may initially seem like; I might understand every detail of the code and it would still make no difference at all.
I believe that to write something worthwhile, you need all of the following:
- freedom
- time
- care
Freedom to choose, reshape, and rewrite as many times as you want; the time to actually do it; and, most important of all, care. All of these are dependent on each other, of course. You might care and have freedom but not have the time. You may have freedom and time but just not care. You might also have time and care deeply, but still be unable to change direction.
This essay is directed more toward code written in a corporate environment, where they try to choke you on the first two. Still somehow, passionate people managed to care… well, that doesn’t seem as likely anymore.
The very act of thinking, writing code, having spent hours on something - is, for me, a prerequisite for caring. People are blindsided by the quality and speed of LLMs; whether I care or not has nothing to do with how “good” or bad some LLM can do it, or how fast it can do it.
For the sake of argument, you could even assume it’s the perfect little snowflake that the LLM generated for me, and it still wouldn’t make a difference because it’s not “mine”. A more relatable argument, perhaps, would be a comparison to other very good open-source codebases. They had always existed prior to LLMs, but they weren’t “mine” either, so I care about them just as much as anything some LLM made for me by prompting a few vague lines.
The death of code is when you start not to care. It puts a ceiling on the quality of work that can be done. Sure, LLMs can make the ceiling high enough that it doesn’t matter for a lot of people, and I understand that argument as well. But this ceiling and apathy bring about a suffocating feeling to it all. I’m still very much divided on what side I stand in this, maybe the CRUD app being rebuilt for the millionth time was perhaps better off being automated. Perhaps I haven’t yet come to terms with losing part of what I was supposed to be good at. Maybe I’ll figure it out in time; at least I hope so.
Not all is lost yet, one can still argue that we very much need to “shape” and do hundreds, if not thousands, of iterations and updates to actually make something good; that the shaping is what a human is actually needed for instead of writing code, and that’s a valid point too and what I am resting my hopes on for now to cope.
Personally though, I haven’t been able to retain the same sense of “belonging” to generated work, even if I am spending time and genuine effort shaping it to be better. It’s possible to still care, but it’s not quite the same.
Maybe trying to find identity in code is part of my problem, and maybe what I want should’ve never existed in lines of text in the first place… but that’s too much of a shift in my worldview to take on in this essay; I wouldn’t want to accept that… not just yet.