AIIndie DevApp DevelopmentWorkflowAgents

Why I stopped asking AI to build the whole app

··4 min read

At first, I loved handing everything to AI

I would write a long requirement and give it to the model. I tried to describe the screen, button behavior, and data storage in one pass. Then I watched it edit files. There was a strange thrill in seeing something become clickable when it had not existed a few minutes earlier.

That approach works well for prototypes. You can learn quickly whether an idea is fun and discard a direction in half a day. The problem is that prototypes often survive. If you do not throw one away, the next feature sits on top of decisions that were generated in a hurry.

Running code is not necessarily correct code

I have seen the same pattern several times. The screen works and TypeScript reports no errors, but the flow feels wrong when I use it. The model may move data that should stay local to a remote service. It may change the state-management approach just to make a button appear responsive.

The worst mistakes are not obvious. They look reasonable. It is easy to accept the patch and move on. A few features later, you realize that you no longer know why the project was written that way.

That was when I learned that AI is most dangerous when it produces something that looks good enough.

I split the work into two kinds of decisions

I now make the problem smaller first. I separate the decisions that need my judgment from the repetitive implementation work. They no longer share one prompt.

I decide the product direction, data boundaries, and user flow. AI can compare approaches, find omissions, and challenge my assumptions, but I make the tradeoffs.

After the boundaries are clear, I ask AI to write components, add tests, remove duplicated code, or implement a change whose direction I already understand. It is still fast. I have simply stopped giving away the direction with the implementation.

This is why I started writing down a workflow

I later built keeponfirst-local-brain and documented my AI coding workflow. I was not trying to make another impressive automation system. I needed a brake.

In Local Brain, AI can classify notes, organize them, and draft a record, but it cannot write directly into my archive. I see a preview and confirm it first. The process felt slower at the beginning. It eventually made me more comfortable using the system because a mistaken interpretation could not become official data while I was distracted.

AI began to feel like someone opening a pull request. It can do a lot of work, but I still decide whether to merge it.

I still care about speed

Speed matters to me. An independent developer cannot wait for a large team or schedule a meeting for every decision. AI lets one person cover work that once required several roles, and I value that.

But speed cannot replace understanding. If I do not know how the data moves, why the state exists, or what problem the feature solves, fast code becomes maintenance work later.

What works better for me now

I use AI to speed up work I already understand. I do not ask it to decide what I should build. The distinction sounds small, but it changes the result.

I still ask a model to build a large section sometimes, especially while testing a new idea. If the code is going to stay, I review the architecture, remove what I do not need, and write down the decisions that matter.

I do not know whether this is the most efficient method. So far, it helps me understand what I am building and makes me more willing to keep an app alive.