Coding Agents vs. The Craft: Why I'm Slowing Down A developer argues that AI coding agents remove the cognitive struggle that makes programming satisfying, and advocates for a hybrid workflow that outsources only mechanical tasks while reserving complex problems for manual solving to preserve deep learning and professional fulfillment. Coding Agents vs. The Craft: Why I'm Slowing Down The Lost Magic of Friction Most of us got into this because we loved the puzzle. There is a massive psychological difference between getting a chat model to generate a full-stack dashboard and the grit required to make a machine speak for the first time using low-level languages. Consider the effort behind a simple "Hello World" in x86 assembly: section .data msg db 'Hello, World ', 0xA len equ $ - msg section .text global start start: mov eax, 4 ; sys write mov ebx, 1 ; stdout mov ecx, msg ; bytes to write mov edx, len ; message length int 0x80 ; call kernel mov eax, 1 ; sys exit xor ebx, ebx ; exit code 0 int 0x80 The dopamine hit from that snippet didn't come from the text on the screen; it came from the friction. It came from fighting linker errors, deciphering cryptic compiler warnings, and fixing segmentation faults. The joy was in the cognitive struggle. AI agents are designed to kill friction. The new value proposition is speed and pure ideation—you dream it, the agent builds it. But by removing the struggle, we've removed the source of professional satisfaction. Reviewing boilerplate doesn't spark the same intellectual fire as wrestling a complex algorithm into submission. My Hybrid AI Workflow I've decided to stop blindly chasing the "maximum speed" promised by every LLM agent. I'm not being a Luddite, but I am being selective about where I apply prompt engineering and automation. My current rule of thumb for an AI workflow: Hand off the mechanical: I use agents for repetitive boilerplate, schema migrations, and mundane config files. There's no pride in doing manual labor for tasks with zero architectural value. Reclaim the intellectual: When a problem is complex, critical, or genuinely interesting, I solve it manually. The goal is to avoid becoming a passenger in my own codebase. If we outsource the hard parts, we lose the deep learning that only happens during the "struggle" phase of development. Next Active Learning: Solving the Labeling Bottleneck → /en/threads/2729/