I am building a system with the help of AI and an agent workflow I designed myself. The work does not begin with one enormous command. I divide it into features and subfeatures, decide the file structure, assign responsibilities, and direct agents toward boundaries I have already defined.

As the system grows, however, an unsettling feeling has appeared. When an error occurs, I often need to ask AI again: which file contains this part, which services does the flow cross, and why was the implementation shaped this way? I know what I wanted to build and helped set its direction, but I cannot always navigate the code without assistance.

That raises a simple question with no simple answer: if I have to ask AI to understand the code again, can I still consider that code mine?

I did more than provide a prompt

It is tempting to divide work into two categories: code typed by a developer is truly theirs, while code generated by AI belongs to the machine. My experience does not fit that split. Before an agent begins, I still have to understand the problem, define feature boundaries, design the structure, and decide what an acceptable result looks like.

An agent does not know the system's context on its own. I choose which context it needs, which areas it may change, and which decisions must remain intact. When its result does not fit, I request corrections or reject the direction. All of that is engineering work, even when it does not produce lines I can identify as having typed by hand.

Acknowledging that contribution does not settle my unease. Designing the map from above does not guarantee that I know every road below. I can be the person who defined a subfeature's purpose and still become lost when tracing its implementation several weeks later.

Code grows faster than understanding

When I implement a feature manually, typing is not the most valuable part. Understanding forms while finding the right location, reading data types, following calls, trying a wrong approach, and learning why another one works. The process is slow, but nearly every step leaves a trace in memory.

With agents, several hours of exploration can be compressed into a diff and a summary. I can review the result, run the build, see the tests pass, and move immediately to the next subfeature. In production terms, that is progress. In understanding, it may not be. The code grows faster than my mental map.

The problem is not that AI writes too much code. It is that I move to the next task before the context behind that code becomes mine.

Eventually, the AI conversation can become the project's primary external memory. Decision reasons, connected files, and error history are easier to recover by asking than by navigating the repository. That is convenient until the old context is missing, the answer is wrong, or a failure occurs in an area I never read closely enough.

Ownership does not require memorizing a repository

I need to avoid setting an impossible standard. Developers do not have to memorize every file and location. Even in projects written entirely by hand, people use search, documentation, debuggers, Git history, and help from colleagues. Forgetting a location is not proof that I do not understand my own work.

A more useful measure is the ability to rebuild context. I may not immediately remember the file, but I should know where to begin looking. I should be able to explain which layer receives a request, where data changes, and what a fix could affect. Once I find the code, I should be able to judge whether it matches the system's decisions instead of accepting it because it looks plausible.

By that measure, ownership is not about who produced each character. It is the ability to take responsibility when the system behaves unexpectedly. AI can help trace a problem, but I still need to understand the answer and carry the consequences of the chosen change.

Sometimes I use AI to remember AI-assisted work

The strange part comes when AI becomes the tool for rediscovering an implementation that AI previously helped create. I ask where validation lives, why one service calls another, or which part stores a state. The answer may help immediately, but the dependence also makes me wonder whether I am building a system or only managing conversations about one.

This does not necessarily make the workflow wrong. Large repositories need navigation tools. What troubles me is having no picture of my own before asking. If every path must begin with AI, I lose the ability to distinguish a correct answer, an almost-correct answer, and a confident answer pointing in the wrong direction.

Using AI well is itself a technical ability. Designing agents, limiting scope, writing instructions, and reviewing results are not empty work. But skill with a tool should not replace all understanding of the thing being made with it.

A successful build is not the end

The definition of done is easy to see: the feature works, the build succeeds, or the error disappears. Those signals matter, but they prove only that a result was achieved during the check. They do not prove that I can maintain the feature when requirements change or a new failure appears months later.

I may need a slightly different definition of done for agent-assisted work. After implementation, I should be able to describe the flow in my own words. I need to read the diff not only for mistakes but to learn which decisions actually entered the repository. If I cannot explain an important part, the understanding work is not complete even if the build is green.

Small documentation for each subfeature may be more useful than a long chat summary. I want to preserve the purpose, entry point, primary files, data flow, dependencies, decisions, risks, and reproduction steps. Not every project needs formal documentation, but I need a bridge from agent output to my own mental map.

A small note for preserving context after one subfeature.
SUBFEATURE
Purpose       → the problem it solves
Entry point   → the first request or event
Main flow     → services, data, and output
Key files     → where logic and contracts live
Decisions     → why this shape was chosen
Risks         → assumptions and fragile areas
How to check  → tests, logs, or error reproduction
text

I still want to work with AI

This unease does not make me want to remove AI from my workflow. It is useful for exploring a codebase, creating an initial implementation, investigating possible failures, and keeping large work divided. Ignoring that capability because it makes me uncomfortable would not automatically help me grow.

What I want to change is the rhythm. Not every increase in speed has to produce more features. Some of the saved time can be spent reading, tracing, simplifying, and recording. If AI makes implementation twice as fast, progress may not mean completing twice as much. It may mean completing one piece while still understanding its shape.

I also want to give myself a first attempt before asking. Reading the error, searching for a symbol, following one call path, and writing a hypothesis for a few minutes may look inefficient. It is also how I preserve the ability to enter the system without always needing a guide.

A sense of ownership has to be rebuilt

I have not found the perfect boundary between assistance and dependence. It may keep changing with AI capability and project size. I only know that feeling alienated from my own code is not something I want to ignore. It points to a distance between the decisions I directed and the implementation I truly understand.

The code does not stop being my work simply because AI helped write it. I designed the system, divided the problem, set its boundaries, and remain responsible for the outcome. But ownership does not exist automatically because the repository sits on my computer. It grows when I can enter the system again, find my bearings, question its decisions, and take over when something breaks.

I do not have to remember every line AI helped produce. I need to preserve the ability to understand why it exists and what to do when it no longer works.

Perhaps this is the new kind of work I am learning: not choosing between writing everything myself and handing everything to AI, but making sure the tool's speed does not leave my understanding too far behind.