Monday, 14 September 2026
The argument: architect isn't a promotion for writing better code, it's a different job with a different output. Three skills mark the shift — systemic thinking (pricing trade-offs across the whole system, not just the local fix), organizational influence (framing technical direction in cost, risk, and value for non-engineers), and structural design (changing the conditions that create coupling rather than fixing the coupling). Technical vision means answering where you are, where you need to be in 2-3 years, and how to get there without stopping the business, with the migration path built in. The catch: your primary artifact becomes decisions, documents, and alignment, which many developers experience as a loss.
- A senior dev delivers clean, maintainable solutions; an architect defines the constraints other people build inside — fewer decisions, but each one affects more people.
- Systemic thinking means asking what the whole system looks like after a fix lands, not just whether the fix is technically better.
- The microservices cautionary example: scaling gets easier but recovery time goes from 15 to 90 minutes, 40% of user operations require cross-service calls, and 18 months of engineering time is consumed — the failure was not pricing the trade-off.
- Architects must reframe 'is this better technically?' as 'better for what?' — scaling, deployment, hiring, debugging, or the team that gets paged.
- Organizational influence means making the business case: the example compares $3M/year infrastructure with 8 FTEs against $4.2M/year with 5.5 FTEs, a $1.2M cost increase that frees 2.5 engineer-years worth roughly $1M in productivity.
- Structural design goes past fixing coupling: map the domain, identify bounded contexts, define ownership, establish communication patterns, create a migration path, and prevent recoupling two sprints later.
- Netflix's microservices migration took seven years and started by building Hystrix, Eureka, and Zuul — circuit breakers, service discovery, and an API gateway were prerequisites, so the migration path was part of the architecture.
- Practical rule: write down trade-offs before proposing a solution, translate arguments into cost/risk/value, and ask what structure keeps recreating a problem instead of fixing it a fifth time.
- Architects who stay too close to the code create conflict with the engineers they're supposed to enable — the job isn't being 'the final boss of pull requests.'
Concrete numbers turn an abstract principle into a usable test for any architecture decision.
A lot of times the recovery goes from 15 minutes to 90 minutes. 40% of the user operations now need cross-service calls. 18 months of engineering time gets spent. That's not microservices bad. That's you didn't price the trade-off.
Shows exactly how to convert a technical preference into a cost/value argument executives can act on.
You can be right all day long. If nobody understands the cost, the risk, the value, congratulations, you're right in a corner. Very impressive. Nobody cares.
Architecture is trade-off accounting with consequences. Yes, I know, it's a lot less sexy than drawing boxes and arrows. It's still the job.
A senior dev fixes coupling. An architect changes the conditions that created the coupling.
They want the destination without the road. Then they act so shocked when the team ends up in a ditch.
Being an architect is not senior dev plus some fancy better title. It's senior dev without code as the center of your identity.
Dex Horthy argues that the "lights-out software factory" — where agents write code and humans stop reading it — fails, and that no amount of harness engineering can fix it because the problem lives in how coding models are trained. RL for coding agents rewards "tests pass, nothing broke," which gives no signal for program design or long-term maintainability, so agents reliably erode codebase quality. His prescription is to put code review back and use AI heavily in upfront planning — product review, system architecture, program design, vertical slices — so that reviews get fast enough that reading every line stays feasible.
- Evidence of strain is already visible: Faros AI data since teams adopted AI coding tools shows review quality down, more PRs merged with no review at all, and incidents and bugs per developer up.
- The core claim is that this is a model training problem, not a skill or prompting problem — "the harness is not enough," and adversarial review bots or more tokens can't fix it.
- Human Layer ran a full lights-off experiment in July 2025 and hit bugs the agent couldn't solve, forcing them back into a codebase they had stopped reading three months earlier while the site was down.
- Claude Code's breakthrough wasn't its tools (Aider and Code Buff had read/write/edit/grep/bash too) but being the first case of a lab training the model against the harness it shipped in; whoever owns both model and weights has a structural advantage.
- In benchmarks like SWE-bench Multilingual, reward is binary — did the new test pass and did old tests keep passing — so there is no way to penalize bad architecture, gratuitous try/catches, or casts that exist only to make tests green.
- Verifying maintainability is orders of magnitude harder than verifying that code runs, because the cost of bad architecture shows up months or years later and that reward signal can't propagate back to the coding episode.
- Newer benchmarks are moving in the right direction — SWE Marathon (Abundant AI) with 400-hour tasks, Deep Sweep (Data Curve) on repos outside training sets, Frontier Code (Cognition) with multi-PR tasks and judge models — but a model judging quality is limited: if it knew what good code looked like it would have written it.
- The workaround is model-assisted planning: product review with mockups, system architecture and component contracts, explicit program design (types, method signatures, call graphs), then vertical slices; roughly 30 minutes of alignment saves hours of review.
A first-person account of running the no-code-review approach for months and the specific way it broke, rather than a theoretical objection.
In July 2025, we tried this. We went full lights off... you have to go and dig into that codebase that you stopped reading 3 months ago to try to figure out what's broken. And in the meantime, your site was down, your users were pissed.
This is the mechanical core of the argument — it explains exactly why the reward structure of coding benchmarks produces try/catches and casts that only exist to make tests pass.
There's no way in this system that we can penalize it for poor program design or for eroding the maintainability of our systems... the cost function of bad architecture is measured in months and years.
No amount of harness engineering or loops maxing can solve what is fundamentally a model training issue.
If the model knew what good code looks like, it would probably write it in the first place.
You don't have too many PRs. If you're drowning in PRs, you actually have too many bad PRs. Because a good PR is a joy to review.