I’ve loved solving problems with technology since before it paid the bills. Code was always just the medium I did it in. That was never the problem.
The problem was finishing.
I have a graveyard of repos that prove it. Side projects with real ideas behind them, real momentum for the first weekend, and then nothing. Not because I lost interest in the code. I could spend hours polishing a function nobody would ever run. The issue was that shipping something, actually getting it in front of people, felt like a different skill entirely, one I never bothered to build.
Loving the Craft Was the Easy Part
If you’re a developer who fell in love with this work because of the craft, you know what I mean. There’s a specific pleasure in a clean abstraction, in code that reads the way you meant it, in finally seeing why the bug was there all along. That pleasure is real, and it’s most of why I stayed in this field for as long as I have.
But craft-love has a failure mode. It’s easy to mistake the pleasure of building for the point of building. You can spend a weekend refactoring something nobody asked you to refactor and feel like you did real work. Sometimes you did. Often you just found a comfortable way to avoid the harder, less satisfying work of getting something out the door: writing the boring integration, handling the edge case nobody will hit, deciding it’s good enough and hitting publish.
I did that for years. Not because I was lazy. Because the last ten percent of shipping something has never been as fun as the first ninety percent of building it.
What Changed
I’m not going to pretend AI fixed my character. But part of the problem was never really character to begin with. Building anything substantial by hand, one line at a time, just takes a long time, and most of us only get an evening here or a Saturday morning there to give it. In that amount of time, writing code by hand gets you tinkering. It rarely gets you all the way to something whole. So a lot of my side projects weren’t dropped because I gave up. They stalled because the idea was bigger than the hours I had to give it.
The boring parts got cheaper too. Scaffolding a CLI, writing the tests I’d been putting off, generating the docs nobody reads but everybody needs, cleaning up the thing I built at 11pm so it’s not embarrassing in daylight. Now an agent can carry a lot of that weight. What’s left for me, on a good day, is the part I was always good at.
Deciding what should exist, and judging whether it’s actually right.
That shift changed my output, not just my mood. Over the past few months I’ve published something here almost every week. In the two years before that, I averaged a post every couple of months. Same person, same love of writing, same day job. The difference is that the distance between “I have an idea” and “this idea exists somewhere other people can see it” got a lot shorter. When that distance shrinks, you stop losing ideas to the gap.
Loving to Ship Is a Different Discipline
Here’s what I keep coming back to: loving to code and loving to ship are not the same love, and only one of them produces anything anyone else ever sees.
Loving to code is about the work itself. It’s inward-facing. It rewards you the moment you write the elegant line, regardless of whether that line ever reaches a user.
Loving to ship is outward-facing. It’s about closing the loop. It asks a harder question than “is this well-built?” It asks “did this reach someone, and did it help?” You don’t wake up loving to ship the way you wake up loving to code. You build that love the way you build any discipline: by doing the unglamorous part on purpose, repeatedly, until finishing stops feeling like the thing standing between you and the good part.
I think this is the real adjustment AI is forcing on developers who define themselves by craft. Not “learn to prompt” or “learn to review AI output,” although both of those matter. The deeper adjustment is that AI didn’t just make finishing easier, it raised the ceiling on what’s worth starting. The boring work that used to eat your weekend and kill your momentum now takes an afternoon, which means the substantial thing you used to talk yourself out of because it felt too big is now genuinely within reach. For the first time, the amount I can actually build matches the amount I’ve always wanted to.
The Love Doesn’t Have to Compete
I’ve heard this from a coworker, and from a client, more than once: real grief about a future where AI writes the code. If the code was the thing you fell in love with, watching a model produce it in seconds can feel like watching someone else live the best part of your job. That makes sense to me. It’s what loving the craft honestly feels like when you assume the craft is being taken from you.
But it genuinely makes me sad when someone settles into that grief, because they don’t have to, and I won’t sugarcoat why: it isn’t really about the boring ten percent. We write less code by hand than we used to, full stop, and that’s not reversing. Telling someone they get to keep every part they love and just hand off the tedious stuff isn’t honest. What’s helped me is admitting the shape of the work has genuinely changed, and asking a different question: if the love can’t live entirely in the line of code anymore, where does it go?
For me, it moved toward the product. Most of that love now lives on the other side of the line: in the calls only I can make, and in watching something I actually made reach someone instead of sitting half-built on my machine. That’s not a smaller love. It’s the same love, wearing a different shape.
I still do a kata every Friday morning. Have for something like fifteen years now. No deadline, nothing to ship, nobody watching. It’s the one hour a week where the point actually is the code, not what the code does for anyone. That’s the room I didn’t want AI, or shipping discipline, or anything else to take from me, and it hasn’t. If anything, protecting that hour is easier now that shipping doesn’t eat every other hour I have.
But I’ve stopped pretending that loving the craft was ever going to be enough on its own. It wasn’t the thing keeping my best ideas in a graveyard of unfinished repos. Not having enough hours, and then spending the hours I did have on the fun part instead of the finishing work, was. AI didn’t hand me more hours. It shrank how many hours “finishing” actually costs, until the hours I already had were finally enough.
That photo of me at the dining table wasn’t posed. Somebody has to eat while the build finishes. I’m writing this at a kitchen table too, decades later, except now I’ve got a pair of AR glasses on instead of a monitor propped on shoeboxes. My daughter walked by earlier, looked at me typing into thin air, and told me I look like a dork. She said it lovingly. She wasn’t wrong. Same table, same guy, chasing the same feeling. The gear just keeps getting stranger.