Software engineering has always had an identity crisis: we treat the process as a craft, but the end product is an invisible commodity.
Much of the conversation around AI right now is divided between two extremes. Some people tell us to accept the death of ourselves as craftsmen and embrace becoming managers of agents. Others insist that AI can never truly replace human engineering quality. But arguing over speed or code generation is a losing battle. Modern models, paired with good context, already produce work faster and cleaner than any individual engineer.
"The real discomfort isn't about productivity. It is about craft."
Refined by Gemini
Writing code is genuinely creative. I have spent my career caring about clean abstractions, elegant structure, and the subtle prose of a well-built system. It is a demonstrable creative endeavor that anyone who shares that passion can recognize and appreciate. In that sense, the internal process feels identical to writing, designing, or illustrating.
The difference is that software is fundamentally decoupled from its creation.
To an end user, an API consumer, or a runtime environment, the origin of the code is completely irrelevant. A hand-thrown ceramic mug carries the thumbprint of the potter. A leather wallet patinas with the maker's intent. But the compiler does not care about the craft or individual flavor you injected into your functions. It flattens your elegance into the exact same binary instructions.
When industrialization automated physical crafts, a luxury niche survived for the human touch: tailored clothing, acoustic instruments, bespoke woodwork.
There will be no such niche for software. Nobody will pay a premium for artisanally typed database migrations. Hand-crafted code will not survive as a boutique craft; it will simply sit as a quiet relic on the shelf.
We don't have to like it, but let's not bury our heads in the sand. I share your loss.