skip to content

Architecture Fundamentals

What architecture actually is, what makes a decision architecturally significant, and what the architect is on the hook for. It also covers the forces outside the code — quality attributes, team structure, technical strategy — that shape the result.

part ofSoftware design & architectureoverview, primer and where to startread it →
on this pageshow

questions

page 1 of 2

What is Conway's Law, and what does it predict about the relationship between an organization's communication structure and the systems it builds?

level: juniorimportance: must knowfreq 72%

answer

  1. Conway 1968 — design copies communication structure
  2. Mechanism: cross-team coordination is expensive
  3. Real comms network ≠ org chart
  4. Four teams → four-pass compiler
  5. Descriptive forecast, not advice

basics

~20 s

Conway's Law says a system's structure ends up mirroring how the teams that built it communicate. Four teams building a compiler tend to produce a four-pass compiler, because each team's boundary becomes an interface in the software.

solid answer

~50 s

Conway's Law, from Melvin Conway's 1968 paper, states that any organization designing a system will produce a design whose structure is a copy of that organization's communication structure. The causal mechanism is cheap coordination inside a team versus expensive coordination across teams: work that requires constant negotiation gets pushed behind a stable, coarse interface, so team boundaries harden into module or service boundaries. It is descriptive, not prescriptive — a prediction about what will happen by default, not advice. Two practical consequences follow. First, you cannot ship an architecture that contradicts your org chart for long; the org will bend the design back. Second, if you want a particular architecture, changing team structure is a legitimate design lever (the Inverse Conway Maneuver). The key nuance: the relevant structure is the real communication network, not the formal reporting hierarchy.

go deeper

for a junior

State the law and give the compiler example; say team boundaries turn into software boundaries.

for a middle

Add the mechanism (coordination cost) and the distinction between communication structure and org chart; mention it's descriptive.

for a senior

Discuss the feedback loop in both directions, distributed-monolith failure mode when architecture fights the org, and the Inverse Conway Maneuver as the deliberate use of it.

for a principal

Frame it as a socio-technical design constraint: treat team boundaries, ownership, and coordination cost as first-class architectural decisions; discuss empirical evidence, its limits, and when to accept an org-shaped architecture rather than fight it.

## The statement Melvin Conway, in a 1968 paper ("How Do Committees Invent?"), wrote: > Any organization that designs a system will produce a design whose structure is a copy of the organization's communication structure. "System" here is broad — software, hardware, documents, processes. "Communication structure" means who actually talks to whom to get work done, at what cost and frequency. That is **not** the same as the org chart: two teams in different departments who pair daily are, for Conway purposes, one unit; two teams under the same director who only exchange tickets are two units. ## Why it happens (the mechanism, not magic) Designing an interface between two components requires agreement. Agreement requires communication. Communication has a cost that rises sharply when it crosses a team, a time zone, a language, a company, or a contract. - **Inside a team**, coordination is nearly free: you can refactor across a boundary in an afternoon, ask a question in seconds, and change a shared data structure without a meeting. So teams produce highly-coupled, fine-grained internal designs — and they keep them, because that's cheap. - **Across teams**, coordination is expensive. Engineers naturally minimize it by freezing the boundary: define an API, a message schema, a file format, and then stop talking. The frozen boundary is exactly a module boundary in the delivered system. So the shape of the delivered system converges on the shape of the cheap-communication clusters. Conway summarized the causal core himself: the design that gets built is the one that can be *negotiated* by the people building it. A second reinforcing mechanism is **homomorphism of decision authority**: a decision that spans two teams needs an escalation to the common manager; teams avoid such decisions; the avoided decisions become the untouched seams of the architecture. ## Classic illustrations - Conway's own example: four groups assigned to a compiler produced a four-pass compiler. - A company with separate frontend, backend, and DBA teams reliably produces a three-tier architecture with a service layer and a stored-procedure layer, whether or not that's the best design. - Merged companies produce integration layers exactly where the two former companies' boundaries were. - Outsourcing a subsystem produces an unusually rigid, over-specified API around that subsystem — because the communication cost across a contract is the highest of all. ## Descriptive, not prescriptive Conway's Law is often quoted as advice ("organize your teams around your architecture!"). It isn't advice; it's a *forecast*. Its normative uses are derived: 1. **Diagnostic** — if your architecture has a seam nobody can explain technically, look for an old team boundary. Architecture archaeology often finds a reorg, an acquisition, or a departed contractor. 2. **Predictive** — before a reorg, ask what architecture that org will produce in 12 months, because it will. 3. **Design lever (Inverse Conway Maneuver)** — deliberately restructure teams so the *desired* architecture is the one that is cheap to build, then let Conway's Law work for you rather than against you. ## Failure mode: fighting Conway's Law Declaring a target architecture that cuts against the org's communication structure produces predictable pathology: - Teams split a service on paper but keep a shared database, because the schema change needs both teams — a **distributed monolith**: microservice deployment cost with monolith coupling. - "Shared ownership" of a module in practice means slow, low-quality changes, since every change needs cross-team negotiation. - Architects write documents; the code drifts back toward the org shape within a couple of quarters. ## Important nuances and caveats - **Direction of causation runs both ways.** Once code exists, its structure constrains who *must* talk to whom (you can't change a module without its owner). So an inherited architecture also reshapes the org. Some authors call this the "Conway feedback loop." That's why an architecture migration and a reorg usually have to happen together. - **The empirical support is real but partial.** Studies of Microsoft and open-source projects found organizational metrics (number of contributing orgs, ownership churn, edit distance in the org chart) predicted defect-proneness better than many code metrics. That supports the *coupling* claim more precisely than the strong "exact copy" claim. - **It's a strong tendency, not a law of physics.** Very small orgs, very high-communication cultures, or a single dominant architect can produce designs that don't mirror the org — for a while. As headcount grows, the tendency reasserts itself. - **Communication structure includes tooling and process.** A shared monorepo with company-wide code review lowers cross-team communication cost and therefore permits finer-grained cross-team designs; a strict ticket-based handoff process raises it and forces coarser boundaries. ## What a good answer contains Name Conway (1968), state the law, explain the *mechanism* (communication/coordination cost), stress "real communication network, not org chart", note it is descriptive, and mention that the Inverse Conway Maneuver is the deliberate exploitation of it.

  • Is Conway's Law about the org chart or about something else?
    About the actual communication structure — who must talk to whom, how often, and at what cost. Two teams that pair daily behave as one unit; two teams in the same department that exchange only tickets behave as two. Remote/time-zone/contract boundaries count as communication boundaries even when the org chart shows none.
  • Does causation only run from organization to architecture?
    No — it's a feedback loop. Existing code dictates who must be consulted to change it, which reinforces the current team structure. That's why successful re-architectures are usually paired with a reorg; doing either alone tends to snap back.
  • What evidence supports Conway's Law beyond anecdote?
    Empirical studies (notably on Microsoft components and on open-source projects with multiple contributing organizations) found organizational-structure metrics — ownership concentration, number of contributing orgs, org-chart distance between contributors — predicted post-release defects at least as well as code-complexity metrics.

Water flowing downhill carves channels along the easiest path. Team boundaries are the ridgelines: work flows around them, and over time the software erodes into exactly the valleys your org chart's ridges allow.

context

open as a page

What is a quality attribute (non-functional requirement) in software architecture, and how does it differ from a functional requirement?

level: juniorimportance: must knowfreq 78%

basics

~20 s

A functional requirement says WHAT the system does ("users can reset a password"). A quality attribute says HOW WELL it does it — fast, available, secure, maintainable. Quality attributes shape the architecture; functions can usually be implemented in many architectures.

open as a page

What makes a design decision architecturally significant rather than a routine implementation choice?

level: juniorimportance: must knowfreq 75%

basics

~20 s

A decision is architecturally significant when it is expensive to change later, affects many parts of the system or many teams, and drives qualities such as performance, security or availability. Routine choices are local and cheap to reverse.

open as a page

In software architecture, what is an architectural style (such as layered, event-driven, or microservices), and how does it differ from a design pattern?

level: juniorimportance: must knowfreq 62%

basics

~20 s

An architectural style is a named, whole-system shape — how the big pieces are split and how they talk (layered, event-driven, microservices). A design pattern is a small, local solution inside one piece (e.g. Strategy, Observer). Style = macro, pattern = micro.

open as a page

What is a "north-star" (target) architecture vision, and how does it differ from the current-state architecture?

level: juniorimportance: must knowfreq 62%

basics

~20 s

The north-star is the agreed target architecture: a picture of the desired future state and why it is better. Current-state is what actually runs today. The gap between them drives a roadmap of incremental steps.

open as a page

What is software architecture, and what makes something "architectural" rather than just design?

level: juniorimportance: must knowfreq 88%

basics

~20 s

Architecture is the set of big, structural decisions about a system that are expensive or painful to change later — how it splits into parts, how those parts talk, and which technologies they use. Ordinary design decisions live inside one part and can be changed cheaply.

open as a page

What is the Inverse Conway Maneuver, and what are the practical risks of applying it?

level: middleimportance: must knowfreq 58%

basics

~20 s

Instead of letting team structure dictate architecture, you change the team structure first so that the architecture you want becomes the natural one to build. Reorganize teams around the desired boundaries, then let Conway's Law do the work.

open as a page

What is the difference between availability and reliability as quality attributes, and how do MTBF and MTTR relate to the "nines"?

level: middleimportance: must knowfreq 62%

basics

~20 s

Reliability = how rarely it breaks. Availability = how much of the time it is usable. Availability ≈ MTBF / (MTBF + MTTR), so you can raise it either by failing less often or by recovering faster. "Three nines" = 99.9% ≈ 43 minutes down per month.

open as a page

A stakeholder writes the requirement "the system must be scalable". How do you turn that into something an architect can design and test against?

level: middleimportance: must knowfreq 55%

basics

~20 s

Rewrite it as a concrete scenario with numbers: who or what triggers it, under what conditions, what the system should do, and the measurable limit. E.g. "When traffic triples in 10 minutes, p99 latency stays under 800 ms with no dropped requests."

open as a page

How do you identify architecturally significant requirements (ASRs) from a large backlog of requirements and stakeholder statements?

level: middleimportance: must knowfreq 65%

basics

~20 s

Look past feature lists for requirements that constrain structure: measurable quality goals (latency, uptime, scale, security), hard constraints (regulation, deadlines, existing systems), and the few features that touch everything. Turn vague wishes into testable scenarios, then prioritise by business value and technical difficulty.

open as a page

How do you pick an architectural style (layered, hexagonal, event-driven, microkernel, CQRS, space-based, microservices) from quality-attribute drivers rather than from fashion?

level: middleimportance: must knowfreq 72%

basics

~20 s

Start from the two or three qualities that matter most — say, deployability and fault isolation, or simplicity and cost — rank them, and pick the style that scores highest on those while accepting its known weaknesses. Every style trades some qualities away; none wins everywhere.

open as a page

What are the core responsibilities of a software architect, beyond drawing diagrams?

level: middleimportance: must knowfreq 78%

basics

~20 s

Make and justify the hard-to-change decisions; define and continually re-check the technical boundaries and standards; make sure the built system actually matches them; understand the business domain and constraints; and communicate and mentor so that teams can make good local decisions themselves.

open as a page

How do you decide, in practice, whether a decision is "architecturally significant" and worth recording — and how do you record it?

level: middleimportance: must knowfreq 72%

basics

~20 s

Ask: is it hard to undo, does it cross team or module boundaries, does it affect qualities like performance or security, and does it constrain future choices? If yes to any, it's significant — write it down as a short Architecture Decision Record: context, decision, consequences.

open as a page

Explain the CAP theorem and its PACELC extension, and how they shape architectural decisions about consistency, availability, and latency.

level: seniorimportance: must knowfreq 72%

basics

~20 s

CAP: when the network splits a distributed system (a partition), you must choose between staying consistent (reject/block requests) or staying available (answer, possibly with stale data). PACELC adds: even with no partition, you still trade latency against consistency.

open as a page

How should the reversibility of a decision change the process and rigour you apply to making it?

level: seniorimportance: must knowfreq 60%

basics

~20 s

Classify decisions by how hard they are to undo. Hard-to-undo ones deserve analysis, prototypes, review and a written record. Easy-to-undo ones should be made quickly by the team and corrected from real feedback, because deliberating costs more than being wrong.

open as a page

When does an event-driven architecture beat synchronous request/response, and what does that choice cost you?

level: seniorimportance: must knowfreq 68%

basics

~20 s

Choose event-driven when a producer should not wait for, or even know about, its consumers — bursty load, many independent reactions to one fact, long-running work. You pay with eventual consistency, harder debugging, duplicate and out-of-order messages, and error handling that is no longer a simple exception.

open as a page

How do you make a build-vs-buy decision for a significant capability, and which factors are most often underestimated?

level: seniorimportance: must knowfreq 58%

basics

~20 s

Build only what differentiates you from competitors; buy or use open source for everything else. Compare total cost over several years — not just licence versus salary — including integration, operations, upgrades, and the cost of switching or exiting later.

open as a page

What does it mean that architecture is "continuous" rather than an up-front phase, and how do you keep a system's real architecture from drifting away from the intended one?

level: seniorimportance: must knowfreq 62%

basics

~20 s

Requirements and technology change, so architecture decisions get made throughout a system's life, not once at the start. To stop reality drifting from intent, you enforce the important rules automatically in the build and pipeline instead of only writing them down.

open as a page

How do you align an architecture to business strategy, rather than producing a technically elegant design disconnected from what the business is trying to win?

level: principalimportance: must knowfreq 40%

basics

~20 s

Start from the business goals and constraints, translate them into concrete quality-attribute requirements (speed of change, cost per transaction, availability, market reach), and let those drive structural decisions — then check periodically that the architecture still serves the current strategy.

open as a page

What is the last responsible moment heuristic for architectural decisions, and how do you know a decision has reached it?

level: middleimportance: should knowfreq 55%

basics

~20 s

Delay a hard-to-reverse decision until the point where delaying further would eliminate an important option or start blocking work. Waiting buys information; waiting too long means the choice gets made by accident or by default.

open as a page

Compare layered (n-tier) architecture with hexagonal architecture (ports and adapters): which way do dependencies point in each, and which quality attributes does each optimize?

level: middleimportance: should knowfreq 58%

basics

~20 s

In layered architecture, calls flow downward — UI depends on business logic, which depends on the database layer, so the domain ends up depending on infrastructure. In hexagonal, all dependencies point inward to the domain; the database and UI are interchangeable adapters plugged into interfaces (ports).

open as a page

What is a technology radar with Adopt / Trial / Assess / Hold rings, and what does placing an item in each ring commit an organisation to?

level: middleimportance: should knowfreq 48%

basics

~20 s

A technology radar is a periodically published list of tools, techniques, platforms and languages sorted into four rings: Adopt (default choice), Trial (use on a real project with a way to back out), Assess (worth an experiment or spike), and Hold (do not start anything new with it).

open as a page

How does team cognitive load act as a constraint on architectural boundaries, and what do you do when a team is overloaded?

level: seniorimportance: should knowfreq 33%

basics

~20 s

A team can only hold so much in its head. If it owns more systems and domains than it can understand, quality and speed drop. So you size each team's responsibilities to fit, and shrink their load by simplifying, delegating to a platform, or splitting the domain.

open as a page

Team Topologies defines four fundamental team types and three interaction modes. Name them and explain what each is for.

level: seniorimportance: should knowfreq 44%

basics

~20 s

Team types: stream-aligned (owns a slice of business flow end-to-end), platform (provides self-service internal services), enabling (coaches others to gain skills), and complicated-subsystem (owns a part needing deep specialist knowledge). Interaction modes: collaboration, X-as-a-Service, and facilitating.

open as a page

How do latency, throughput, and tail latency (p99) differ as performance targets, and why can improving one make another worse?

level: seniorimportance: should knowfreq 52%

basics

~20 s

Latency is how long one request takes; throughput is how many complete per second. p99 (tail) is the slowest 1% — what unlucky users feel. Batching or queueing more work raises throughput but makes individual and tail latency worse.

open as a page

What are sensitivity points and trade-off points in an architecture, and why do they matter when evaluating a significant decision?

level: seniorimportance: should knowfreq 45%

basics

~20 s

A sensitivity point is a decision where changing it noticeably moves one quality attribute, such as response time. A trade-off point is a decision that moves two or more quality attributes in opposite directions, so you must consciously choose which one to favour.

open as a page

What problem does CQRS (Command Query Responsibility Segregation) solve, what does it not require, and when is it not worth adopting?

level: seniorimportance: should knowfreq 52%

basics

~20 s

CQRS splits the write side (commands that change state) from the read side (queries), letting each use its own model and store. It helps when reads and writes have very different shapes or volumes. It does not require event sourcing, and for ordinary CRUD it is pure overhead.

open as a page

What is a "golden path" (paved road) in technical strategy, and how do you get adoption without turning it into a mandate?

level: seniorimportance: should knowfreq 44%

basics

~20 s

A golden path is a supported, opinionated default way to build and run a service — templates, libraries, pipeline, logging, deployment — so teams get the common work for free. You drive adoption by making it the easiest option, not by forbidding alternatives.

open as a page

Why is technical *breadth* said to matter more than technical *depth* for an architect, and what are the risks of that trade?

level: seniorimportance: should knowfreq 58%

basics

~20 s

An architect's job is choosing between options, so knowing that many options exist and roughly what each costs is more useful than mastering one. Depth still matters — but it decays, and you can borrow depth from specialists; you can't borrow the knowledge that an option exists.

open as a page

You join a company whose 'microservices' cannot be deployed independently and whose service boundaries look arbitrary. How would you diagnose whether the organization's structure is the root cause, and what would you propose?

level: principalimportance: should knowfreq 26%

basics

~20 s

Look for team boundaries hiding inside the architecture: which teams must talk to ship one feature, who owns each database, and which services always release together. If the seams match old team or company boundaries rather than business capabilities, the org is the cause — fix ownership and data boundaries, not just the code.

open as a page

showing 1–30 of 35