4 min read

How I use AI in my work

A few years ago, AI in my editor meant autocomplete. Sometimes it was really impressive. But too often it was annoying and distracting. It would suggest the wrong thing at the wrong moment, and I would spend more energy batting it away than I gained from the, sometimes, perfect completion.

That version of AI was fun, but used sparingly.

From autocomplete to agents

Models got better, and the tools around them shifted from "complete this line" to "solve this problem". Then planning, writing, running tests, fixing what broke, trying again. Agentic coding became something I could actually use for real work.

And that jump was not subtle. I went from programming almost everything by hand to almost solely letting agents do the work, then iterating, testing and reviewing what they produced. My job did not disappear, but it changed. It moved. I still decide what good looks like. I still catch the weird edge cases. I am still architecting. But I just spend way less time typing the obvious bits.

Finding a harness

So what is the harness I do the work in? That shifted quite often too.

I started in VSCode with Copilot. When Claude's models got more capable, I moved a lot of that work into Claude Code in the terminal.

Then I did the classic AI procrastination move: instead of shipping, I spent too long building a custom editor inspired by Aaron Francis's Solo.

Cursor, which I had tried earlier when it was still mostly an enhanced VSCode fork, then got Cursor 3. That actually clicked. Agentic first, editor second. The way it presents code changes, reviews and PRs is very nice. Around that I also use Cursor's canvas for screens and the occasional flow diagram, and sometimes Claude Design when I want UI inspiration.

Fast and good beats smart and slow

One model preference I developed is: I would rather have a fast, good agent than a more intelligent one that takes its time.

For me, waiting kills flow. A model that is slightly less clever but keeps the loop tight (prompt, result, adjust, again) usually gets me to a better outcome.

It fits something Caleb Porzio wrote about on X recently:

I even turned that into a skill.

Using this method, I still feel in control. I have less technical debt.

At the moment, I am mostly using Grok (4.6 at time of writing).

Tests stopped being the first thing to cut

Writing tests was always important. But it was often: tests - yes, but when the budget and time allows for it. And honestly, getting the test setup right can take quite some time too. Even with fantastic frameworks like Laravel.

With AI, writing tests is much easier. Factories, fakes, the tests themselves. It's no longer the expensive task that, when under pressure, may be put in the "I'll do that later" bin.

It's also a huge factor in how I can be comfortable letting agents touch code.

Standards without the lecture comments

One thing I've noticed is that AI likes to write. A lot. Sometimes it feels like you are reading a blog post in places where a short (or even no) comment will do.

So, of course I now instruct AI about comment writing and in general in what it is allowed to produce.

Code should follow the standards: Spatie guidelines, the Laravel coding style, PHP coding standards, and follow patterns that already live in a project. And comments only when they add something that is not obvious from the code. If the code is self-explanatory, leave it alone.

Agents are great at filling space. Part of my job is preventing them from doing that, and I even save a few output tokens that way.

My work has changed

In a very short span, the shape of my work flipped.

I used to spend most of my energy writing code by hand. Now I spend more of it directing, reviewing and deciding. The agents draft. I iterate. We test. I review again. If it holds up, it can be shipped.

I am very enthusiastic about where this is going so far. The ceiling for a solo product engineer with good taste and good tooling feels substantially higher than it did a couple of years ago. Shipping something like Datalumo would have taken me a lot longer without it.

But, I will miss the old ways too. There is a satisfaction in writing code yourself, thinking about a problem until it finally clicks. And every now and then, I still write code myself.

At the end I think, used well, (capable) AI makes the work better. But used carelessly, they can make a mess faster. The difference is still us.