Incomplete Thought

The Empty Middle of AI Coding

The AI coding user base is concentrated at the 2 extremes:

With such strong polarization one starts thinking, who's right?

I traveled there and back and landed in the middle

I was a strong skeptic. I tried AI coding every 6 months, confirming my skepticism - it's not working. Come January 2026 - Opus 4.5 was getting traction. My boss asked me to try it again. I entered for the ride:

The question why the LLM sometimes works great and sometimes fails miserably kept my brain busy for weeks. Why isn't this working?

The problems I found

Comprehension debt

There's a long term cost for moving fast with an LLM - we can't comprehend the work anymore, and the more the project grows the more the LLM's output degrades. We can see this in the small (long conversations) and in the large (weeks/months of work). Turns out this has been mapped already and there's a term for it: comprehension debt.

LLM failure modes

Comprehension debt aside, the SotA LLMs (as of March 2026) have their own issues:

OK, as they say "a problem well-stated is a problem half-solved". We understand we need to build comprehension, we understand the LLM can make mistakes. We framed the problems, now we can look for solutions!

The pipeline

Let's look at our 2 extremes again, but with a new framing. The vibe coders start with high velocity at the expense of understanding the code. The skeptics keep their understanding but lose out on the opportunity of using AI to increase their velocity.

So, if we want to increase our velocity we also need to keep up with our understanding. How can we do that?

By bringing structure (a pipeline) into our conversation with the LLM. I settled on a simple one:

This pipeline tackles all of the above issues:

When executing this pipeline I hit into various issues. The LLM's built-in prompt primes it to be helpful, by writing code and filling in gaps. It takes the quick route and escapes the phases. I experimented with various prompts to enforce phase boundaries. Here's what I use - ai-behaviors. The phases map to hashtags: #=frame, #=research etc. You drop it in a prompt and the LLM enters the mode with you. It won't escape the mode until you intentionally move to the next one.

The proof

I'm using this pipeline to great effect, even on ai-behaviors itself. Here's an example of building composites, a feature to compose N hashtags into a single one. If I were to code this myself my plan was to

Going through the pipeline with the LLM I improved the delivered feature:

I also got to realize there's a lot of interactions I didn't take into account. Like, how should we persist the active hashtags - use the composite or the expanded set? Where can the user define them - project scope? User scope? How should it work with the #EXPLAIN feature? Should it show the decomposition? Does order of hashtags matter? Should the expansion honor the order?

These are real concerns I did not consider. Without the LLM I would have fumbled into them during implementation, or missed them entirely. This shows I not only increased my velocity, but I also gained a better understanding of the feature.

This is the middle of AI coding - the place where, through structured conversation, increased velocity meets with increased understanding.

The meta proof

This also works beyond coding - I used the same pipeline when writing this blog post. This post is 100% human written but I did collaborate on framing, researching, designing and reviewing it with Claude Code. The interaction helped me deliver faster and better, while staying fully in control and learning how to write blog posts at the same time. Full conversation here.

Prior art

I'm not the first to come up with structured conversations, there are spec driven, persona based and phase managed frameworks already out there. For me they are too heavy-weight, I prefer smaller frameworks.


About Me