I remember reading The Pragmatic Programmer back in about 2003. On the cover is a hand plane, one of the most classic woodworking tools. That cover sets the stage well: it’s a book about software as craft, and it shaped the developer I became. Someone who saw themselves as much a craftsman as anything else. That kind of identity is harder to hold today than ever, especially as AI coding agents take on an increasing share of code-writing tasks.
I carried that craftsman identity for most of my career. I had a vim config I carried forward for 20+ years, strong opinions on DRY and TDD, and a sense that good, well-written code mattered, and that everyone around me should believe that too. All of that time was important. It helped me develop taste; a sense for what good software and good software development looked like.
I reveled in hard technical problems with elegant solutions. Deep bugs, complex data models, hard scale challenges. That’s where I felt most uniquely valuable. I wasn’t the best at any of it, but I could make an impact in a variety of parts of the stack, and I took immense pride in that.
Then I started getting pulled into different conversations. Less about tech problems, more about the product, or market, or the business. It felt weird at the time, but in retrospect it was exactly what I needed to level up, as a more senior engineer and technical leader. It forced me to see the higher order problems, and not just the ones in the code I was writing. I realized that the craftsmanship I valued most wasn’t what would drive the business forward. The next level of impact wasn’t only in the code. It was in finding the highest-value problem within my reach and figuring out how to solve it.
Did I stop caring about craft? No. But I started seeing code as the means, not the end. The goal wasn’t to write great code. It was to solve a particular problem, for particular people, with particular constraints. The more I focused on that, the less I thought of myself as a craftsman first.
AI coding agents made this distinction sharper. My first instinct was to be dismissive. These tools felt like an affront to something I’d once considered my deepest professional value, and they weren’t immediately very good. But as of late 2025, Claude Code became the primary way I interact with code. I ask it questions about functionality or architecture before engaging other engineers. I use it to knock out bugs and tech debt that would otherwise languish. I know others are pushing these tools much further, but even with minimal investment, I’m already seeing significant shifts in my own behavior.
If you view code as craft, AI agents are deeply uncomfortable. If you view code as a means to an end, they become empowering. They free you to focus on finding and solving the right problems in the first place, to evaluate multiple approaches more thoroughly, and to tackle problems in areas where we’re less familiar. As John Allspaw wrote in 2012 in On Being A Senior Engineer, these are the traits that distinguish mature engineers. It was true then, and still is today.
Was all the time I spent honing my craft wasted? Not at all. Coding agents don’t have intuition or taste. They need someone to look at the output and say “that’s not good enough.” Someone has to surface the hidden requirements and constraints. Someone still has to care that it’s the right problem, and that it works for the right people. All those years of craft built exactly those instincts.
I was lucky to have started this perspective shift before AI agents arrived. It made adapting easier, but not easy. I don’t know how to coach everyone through it; it’s personal. I don’t know how to build that sense of taste if you’re starting out in this AI-enabled era. I do know that the goal of software development is the same as it always was. Solve the right problem, in the right way, for the right people, as fast as possible.
I believe, in a way I didn’t a year ago, that coding agents in the hands of developers with the right mindset will be a significant accelerator toward that goal. The Pragmatic Programmer is still on my bookshelf and its probably overdue for a re-read.