My friend Paul kept his woodworking tools in his living room. Japanese hand saws, chisels, marking gauges.

My workshop is a two-car garage. Table saw, miter saw, and a growing pile of battery-powered everything.

We both worked at Apple. We bonded over woodworking and electric unicycles. But we built things in completely different ways.

The Dovetail Moment

One day Paul showed me his hand-cut castle joints and dovetail joints. He was smiling, proud. The joints were precise, beautiful, fitted together perfectly. You could tell someone spent hours on each one.

Then I showed him what I’d tried with my table saw. It wasn’t even close.

I learned that day that table saws aren’t really suitable for dovetail joints. I should’ve used a router. But that’s the thing. My first instinct was always: how do I make this as efficient as possible? Paul’s was: how do I make this beautiful?

Paul at Apple

When I joined Apple, I needed to learn internal systems fast. Paul was my go-to person.

Walking from the Apple Park parking lot to my building took 25 to 30 minutes. Paul was already riding an electric unicycle. He helped me pick one out and lent me his knee pads while I learned.

When we hit a bug we couldn’t figure out together, I asked him: what do you do when you hit a roadblock like this?

“We just read the code for longer until something comes.”

That was Paul. No shortcuts. No rushing. Just patience and attention.

He was a good person. He passed away in 2022 at 45. Way too young.

The Debate Paul Missed

Paul died before ChatGPT, before Claude, before any of the AI coding tools that now dominate my workflow. I’ll never know which side he’d have taken.

Would he have been a hand-tool coder, reading the code for longer, savoring the process? Or would he have treated AI as just another tool in his collection? I genuinely don’t know.

But the debate he missed is happening everywhere right now. And it sounds a lot like hand tools versus power tools.

Abhinav Omprakash recently wrote about trying Claude Code three times and deleting it each time. Same pattern: depression, lethargy, loss of purpose. Each time he deleted it, he rediscovered the joy of coding.

His argument is that writing code is thinking. When you outsource that to an AI, you skip the internalization. You become a reviewer of code you don’t deeply understand.

I get it.

I Used to Be a Craftsman

In 2016, I gave a talk at Melbourne Mobile Meetup about Software Craftsmanship. I quoted Paul Graham: programmers as the last remaining craftsmen. I talked about masters and journeymen and deliberate practice. I believed it.

Around the same time, I was working on an iOS project with ReactiveCocoa and RxSwift. I learned to chain publishers and subscribers, replacing dozens of delegate functions with elegant reactive code. It was genuinely empowering. I still remember that feeling of everything clicking into place.

That’s the hand-tool moment. When the craft itself is the reward.

But I’ve changed my mind.

Code Is a Liability

Every line you write is a line you have to maintain, debug, and eventually delete or rewrite. The less code, the better. What matters isn’t how the code looks or how elegantly it works internally. What matters is whether it solves the user’s problem and improves their life.

If it doesn’t, the beauty of the code is irrelevant.

Recently, our customer support manager Stacy found a bug. When you edited a user’s role in the admin panel and saved, it blanked out their password. A mistake in the form submission.

I spawned a debugging agent on Slack. It traced the routes, checked the controller, found the issue. I spawned another agent to fix it. It created a PR. CI passed. Merged.

I never opened VSCode. I never hunted through files trying to find which form handles that page. The old way would’ve taken me significantly longer. This took minutes.

25% of the latest Y Combinator batch has codebases that are 95% AI-generated. These aren’t amateurs. These are highly technical founders who could write it all by hand but chose not to.

That number is only going up.

The craftsman coders who insist on hand-writing everything will have a harder time keeping up. Just like hand-tool woodworkers. They’ll make beautiful things. They’ll enjoy the process. But when speed matters, they’ll be outpaced by AI-enabled engineers.

The Table Saw Lesson

Every woodworker measures twice and cuts once. That’s the craft, not the tool.

The difference is what happens after the planning.

With hand tools, you feel the saw bite into the wood, adjust your angle, correct mid-cut. The material talks back to you. That’s what Paul meant by “read the code for longer until something comes.” The process itself is the reward.

With a table saw, the cut happens in a second. If you’re on the wrong side of the line by 1/8th of an inch, the piece doesn’t fit. You can’t undo it. People lose fingers to table saws. The tool doesn’t care about your intentions.

Both require thinking. Both require skill. But hand tools give you something power tools don’t: the craft experience of the work itself.

AI coding is the same trade-off. I don’t throw prompts and hope for the best. I plan the approach, review the architecture, then let the agent execute. The thinking is the same. But I’ve traded the joy of writing every line for the speed of not having to.

Two Kinds of Joy

Here’s why I made that trade.

The nightstand I built years ago still sits next to my bed. The wardrobe shelves I made hold my wife’s clothes in our bedroom and my kid’s toys in their room.

I don’t remember what it felt like to cut those pieces. The joy of building them is long gone. But I walk past them every day, still working, still useful. That joy is still here.

There’s the joy of making something. And there’s the joy of seeing it used. For me, the second one lasts longer.

That’s what I optimize for now. Not the craft of the code, but the moment a customer’s life gets a little better because of something I shipped.

Don’t Judge, But Introspect

If you love hand-cutting dovetail joints, keep doing it. If writing code by hand brings you joy and flow, that’s real and valid.

But be honest with yourself about why.

Are you writing code for the craft? For the beauty of it? For the feeling of mastery? That’s fine. Paul would’ve understood that completely.

Or are you writing code to solve a problem for someone who doesn’t care how you solved it? Because if so, reach for the power tools.

Paul’s hand-cut joints were beautiful. My table-saw cuts were fast. We’d look at each other’s work, nod, and go ride our electric unicycles around Cupertino.

There was room for both of us then. There still is now. Just know which one you are, and why.

Rest in peace, Paul. You are sorely missed.