fedorthinks

Software Architect · Module 01

The architect isn't the person who draws pretty diagrams. The architect is the engineer who owns the shape of the system and the consequences of decisions over time.

Role · ownership · time horizon

§ 01

A senior engineer solves problems well. The architect checks whether the right problems even made it into the work.

The architect owns consequences

An engineer hangs the door straight. The architect decides where in the building the door should be at all — so the warehouse traffic doesn't run through it.

The difference between a senior engineer and an architect isn't that the architect knows more patterns. The senior usually owns the quality of the solution inside a well-defined task: implement, simplify, speed up, cover with tests, run a review. The architect owns whether the shape of the solution survives the load of time: new teams, new customers, data growth, shifting requirements, incidents, audits, migrations.

A good architect knows how to say: "This feature looks small, but it changes the data ownership model," or "If we expose this contract now, we'll be supporting it for years." That isn't slowing down delivery. It's protecting the team from decisions that look cheap only inside the current sprint.

What the architect holds personally

The captain doesn't turn every screw on the ship, but they own the course, the chart, the risks, and the moment when the route has to change.

The architect isn't obliged to pick every library personally. But they must own the decisions that set the system's trajectory: boundaries between subsystems, the data model, integration contracts, the tenancy strategy, security, observability, reliability, deployment topology, the migration path.

There's a useful distinction: reversible decisions and irreversible decisions. Reversible decisions can be delegated aggressively — a specific UI component, an internal helper, the format of a log line inside a service. Expensive-to-reverse decisions the architect must at minimum see: the choice of database, an external API, data ownership, splitting the monolith, the auth model.

§ 02

The same task can be engineering or architectural — it depends on the consequences.

Example: add comments to the blog

It looks like a small feature: a form, a list, a submit button. Under it, a permissions system, moderation, anti-spam, storage, deletion, and notifications appear quickly.

The engineering view: build a POST /comments endpoint, a comments table, a list component, and a form. The architectural view adds questions: are comments tied to the post slug or to the locale? What happens when a slug is renamed? Who can delete? What's the source of truth for the user? Do we need a soft-delete model? How do we defend against spam and rate abuse? How do we add owner moderation later?

A good architectural decision can still be simple: one comments table, thread per slug, typed domain errors, rate limiting, owner moderation later. But it's now a deliberate one.

Anti-example: the architect as chief approver

If everyone waits on one person to rename a field, that isn't architecture. That's a queue.

A bad architect turns themselves into a bottleneck. They demand review of every class, argue about the naming of local variables, and call it "architectural control." The team stops thinking for itself, and the architect drowns in the small stuff.

The right model is different: the architect sets principles, boundaries, and quality gates. The team makes local decisions on its own, but knows where the high-risk zone begins.

Self-check
  • Which decisions in your system are expensive to roll back? - Who owns the data model right now? - Which decisions can the team make without the architect? - Where has the architect become a bottleneck instead of an amplifier?