Judge the code by the next change
I use AI in development, and I care about the speed it makes possible. I also care about opening a feature later and understanding how to change it without disturbing everything around it.
That second requirement shapes my standards. An impressive first implementation can become expensive if its responsibilities are tangled together. A small request then touches the page, data loading, permissions, presentation, and unrelated state in one place.
The question I keep returning to is practical: can I identify who owns this behavior, explain its dependencies, and verify a change with evidence? If that takes an excavation every time, the structure needs attention.
Let the page describe the feature
For React work, I want the parent component to make the feature easy to read. Imports followed by a clear composition of meaningful children should communicate what the page contains.
A customer workspace might compose its header, views, main content, properties panel, and action dialogs. Each child can then own a coherent part of the experience. Data access, interaction state, and rendering should have clear homes rather than collecting wherever the latest code generation happened to place them.
File length alone is an imperfect measure. Splitting a long component into dozens of fragments can still leave the same tangled dependencies. The useful boundary follows a responsibility: a record inspector, a filter control, an editor toolbar, a mutation workflow.
I want the names and structure to help another developer reason about the feature.
Keep styling understandable
My preferred frontend approach uses React, TypeScript, MUI, and Tailwind with agreed styling conventions. Shared definitions should make spacing, typography, colors, and component behavior consistent across the application.
Custom components still need identifiable style ownership. I prefer their rules to live in appropriate stylesheets, organized around the component or workspace. Someone repairing a layout should be able to find the relevant definitions without searching through a large mixture of unrelated overrides.
Dynamic positioning is a reasonable exception when the behavior requires it. A dragging window has changing geometry. The important distinction is whether the implementation expresses necessary runtime state or hides ordinary design decisions in scattered inline values.
Consistency makes custom engineering easier to maintain and makes the interface feel intentional.
- Verify actor and tenant
- Check current state
- Review the exact payload
- Claim once and execute
- Record the actual result
An illustrative execution contract. Approval, execution and confirmed success are separate states.
Separate the types of failure
When an AI-assisted implementation disappoints me, I want to identify what actually went wrong. Did it ignore the requested stack or scope? Did it implement an agreed behavior incorrectly? Or did the design itself assign responsibilities badly?
Those failures need different corrections. Clearer instructions can address a misunderstood constraint. A targeted code fix can repair incorrect behavior. A structural problem may require moving ownership or changing the interface between components.
Treating every defect as another prompt to patch the visible symptom can make the code harder to understand. I want a correction to address the cause we have evidence for, while keeping assumptions visible. A passing check should establish the behavior it exercises; it should never be used to invent confidence about a different path.
Verify the consequential behavior
Testing effort should follow the impact of the change. For a reversible spacing adjustment, looking at the rendered interface may provide the useful evidence. For a workflow that changes customer records, the important questions include permissions, current state, concurrency, and failure handling.
I want tests that can catch a meaningful mistake. Does a denied action leave the record unchanged? Can a repeated request create a duplicate? Does changing tenants cancel stale work and prevent the previous tenant's data from appearing? Does an error leave the user a recoverable path?
The practical takeaway is to give every AI-assisted task a clear boundary and a visible definition of done. Read the resulting structure, exercise the actual behavior, and keep the code understandable enough that the next change begins with confidence in what is there.