Heuristic

Break a dependency before optimizing inside it

Coupling can dominate local efficiency.

When it fits

  • When local performance tuning keeps failing because every change waits on another component or organization.

When to avoid it

  • Modularity trades coordination inside a boundary for coordination across interfaces. Do not split systems simply to make diagrams or org charts look cleaner.

Why it matters

Before squeezing another few percent from a component, test whether removing, stabilizing or making asynchronous a dependency would reduce larger coordination and waiting costs.

An example

A team spends days coordinating a synchronous approval for a task that takes minutes; decoupling the approval path matters more than optimizing the task.

Check your result

The selected optimization targets the larger end-to-end cost rather than the most visible local step.

Keep this limit in mind

  • Modularity trades coordination inside a boundary for coordination across interfaces. Do not split systems simply to make diagrams or org charts look cleaner.

Connected ideas

Useful with
Keep reversible experiments behind a boundary

Evidence and sources

Provides context

Simon described complex systems as often hierarchical and near-decomposable, motivating analysis of relatively strong within-subsystem interactions and weaker cross-subsystem interactions.

Near decomposability is a conceptual property, not evidence that any chosen boundary is correct.

The Architecture of Complexity · Near-decomposability discussion

All sources (1)