Why Agentic Development Needs Stricter Architecture and Design 📎
Before LLMs a senior engineer carried the architecture in their head, and a deviation from it cost typing effort. An agent generates a deviating structure as cheaply as a conforming one, and it does not remember what it generated for the previous feature. Without architecture and design written down, the agent decides everything per feature: where the code goes, how it talks to the rest of the system, which operations to expose, and what the data looks like.
Architecture removes coordination ambiguity: where does this belong, and how does it interact with the rest? It is decided once per system and held constant. It defines what a business component is, that it consists of Boundary, Control and Entity, what each layer may depend on, and how components communicate. The human owns it. Rules a human team treats as guidelines have to be absolute for the agent. It can argue for an exception, but it argues again in every task, without the history behind the rule, and the exception it grants in one component is not remembered in the next. Stricter does not mean more rules. A named architecture such as BCE is three layers, one dependency direction, and a package layout. It compresses pages of rules into a few tokens in the prompt, and the agent never rediscovers it per task. Two agents implementing two features in parallel, with no component structure, edit the same shared classes and overwrite each other's changes. With component boundaries defined up front, each agent works inside its own component. A reviewer checks placement without reading every line.
Design removes implementation ambiguity: how exactly should this piece behave? It is decided per feature, inside the bounds the architecture already fixed. Which operations does this boundary expose, which entities does the component own, is this one control class or three, what is the shape of the record. The agent owns it, steered by a specification. In my projects the specification lives in package-info.java, next to the code it describes (SBCE). The agent implements it, the tests decide whether the result is adequate, and the agent regenerates it when the specification changes.
The test: if a decision would be the same in every business component, it is architecture and belongs in a convention the agent loads once. If it would differ between the orders component and the invoices component, it is design and belongs in the specification of that component. Package layout, layer dependencies and naming rules pass the first test. The shape of an order line item passes the second. A design decision that turns out to be universal gets promoted into the architecture.
In classical projects architecture takes a few days and design takes the rest of the project. With agents the ratio inverts. Design becomes cheap because it is generated. Architecture becomes more valuable because it is the only thing that keeps a thousand generated designs consistent with each other.
Fewer decisions left to the agent means fewer mistakes, fewer corrective turns, fewer tokens, and less human review.