Skip to main content

What changed my mind about building with AI

4 min read

Up to last year I did use AI daily, but mostly for autocomplete, functions, maybe even small UI components, where I already knew what I wanted and roughly how it should look. I tried building actual projects and complex features a few times too, but I never really felt it could handle it well enough, the friction was high enough that my attempts died quickly. And every such attempt made me conclude the hype had run ahead of the thing, and stopped bothering until the next time.

This year the hype got loud enough that I went back to check whether I’d run a fair test, and I don’t think I had; either that, or something really changed since then, or both. So this time I decided to do it properly, to learn how to use it, how to configure it, how to tune it to my preferences and see if I can build products without writing any line of code in the process.

So I picked work where I didn’t have the answer: I had 2 sites sitting around, a blog and a portfolio, both Node.js, both years old, and merging them into one had been on my list for quite a while. No deadline, nobody else affected if it went badly, and a stack I’d never written a line of.

That last part is worth separating out, because it goes both ways: I’ve been a software engineer for long enough to be able to judge an architecture, spot a bad data model, argue about caching, performance or how the UI should look; what I didn’t have was experience with Next.js itself. So I could assess pretty much everything that came back without being able to write much of it myself, which turned out to be a reasonable place to test from.

It went well, so I kept going and somewhere in the following weeks I stopped treating it as a test and it became how I work.

Since then: 2 apps shipped, Reckon and Continuum, a rework of my food journal that isn’t out yet, and this site. Along the way, a large share of effort went into what sits around the model: standards I’d never had to write down, security measures, guardrails for the things it agreed to and then didn’t do anyway, a memory so sessions stop starting from zero, and working out who decides what.

I’m not going to tell you to copy my setup and I won’t even give deep details. My setup grew out of different things going wrong in different ways, but outside of a core of standard practices, I believe a setup should be predominantly specific to each person, depending how you interact with it, what you expect from it, what holes you have and it fills, your environment, needs and so on.

I used Claude Code throughout, and Claude Design for the UI work, so that’s what the specifics look like, though the approach should carry over to whatever model you use, even where the mechanisms don’t.

What the rest covers

If you’ve been through this and landed somewhere else, I’d like to hear about it: @roland.leth.ro or @rolandleth.