Earned Complexity: A Disciplined, Evidence-Based Framework

Published: (January 18, 2026 at 08:10 PM EST)
6 min read
Source: Dev.to

Source: Dev.to

Abstract

Modern software‑engineering organizations increasingly struggle not because of insufficient technical skill or innovation, but because of a systemic over‑accumulation of complexity that is introduced faster than it can be justified, understood, governed, or operated. This phenomenon—often mislabeled as technical ambition, future‑proofing, or scalability planning—has been repeatedly identified as a root cause of degraded system reliability, declining delivery velocity, organizational burnout, and unsustainable maintenance cost.

This paper formalizes Earned Complexity, an evidence‑based decision framework designed explicitly for software teams to determine when architectural or systemic complexity is warranted and how such complexity must be constrained, monitored, and revisited over time. The framework synthesizes principles from well‑established engineering literature, including Choose Boring Technology, You Are Not Google, and the maxim “Code Is Read More Than It Is Written”, alongside operational insights from reliability engineering, systems thinking, and organizational psychology.

By reframing complexity as a scarce resource that must be earned and continuously paid for, this work proposes a practical, repeatable discipline that aligns technical decision‑making with long‑term organizational performance. The intended outcome is not minimalism for its own sake, but sustained peak execution through disciplined restraint.

Software systems do not fail randomly. They fail predictably, following well‑understood patterns associated with unmanaged complexity: cascading failures, brittle abstractions, opaque behavior, and disproportionate operational overhead. Despite decades of industry experience, many teams continue to repeat the same mistakes, introducing advanced architectures prematurely and assuming that sophistication is synonymous with professionalism.

The study of complexity in software engineering is not new. Brooks’s No Silver Bullet established early that essential complexity cannot be eliminated, only managed1. However, modern development practices—cloud infrastructure, distributed systems, and rapidly evolving frameworks—have dramatically lowered the activation energy required to introduce complexity, while simultaneously increasing the cost of operating it. This asymmetry has created an environment in which teams can add complexity far more easily than they can remove it.

The motivation for this study is therefore pragmatic: how can software teams systematically distinguish between necessary complexity and optional complexity, and how can they govern the latter to prevent long‑term harm?


Foundational Insights

  1. Choose Boring Technology – Dan McKinley’s essay articulates a central insight: most business problems do not require novel solutions, and novelty disproportionately increases risk relative to its benefit. McKinley argues that mature organizations succeed not by adopting cutting‑edge tools, but by selecting technologies that are well‑understood, widely supported, and operationally predictable.

    “If the problem you are solving is not unique, your solution should probably not be either.”
    — McKinley, Choose Boring Technology

    This work establishes the foundational idea that engineering maturity manifests as restraint, not maximal sophistication.

  2. You Are Not Google – The essay (popularized through multiple iterations and talks) critiques the widespread tendency for organizations to emulate the architectures of hyperscale technology companies without possessing the corresponding scale, staffing, or operational maturity.

    “Premature scaling is just another form of premature optimization.”
    — Brad Field, You Are Not Google

    The key contribution is the concept of scale proportionality: architectural decisions must be justified by actual constraints, not aspirational ones. This directly informs the Evidence Gate in the Earned Complexity framework.

  3. Code Is Read More Than It Is Written – While often attributed informally, this principle is supported by empirical research showing that maintenance accounts for the majority of software‑lifecycle cost2. Readable, predictable code reduces onboarding time, error rates, and recovery time during incidents. Conversely, clever or opaque implementations amplify cognitive load and slow organizational response. This principle informs the framework’s emphasis on cognitive cost as a first‑class consideration.


The Four Primary Cost Categories

Cost CategoryDescription
Cognitive LoadMental effort required to understand, modify, and debug a system.
Operational LoadOngoing effort required to deploy, monitor, and recover the system.
Failure Surface AreaNumber of distinct ways a system can fail, including partial or silent failures.
Dependency RiskFragility introduced by external libraries, platforms, vendors, or coordination mechanisms.

Importantly, these costs compound over time. Each additional layer of abstraction increases the difficulty of future changes, often non‑linearly.

Research in systems engineering consistently demonstrates that increased system complexity correlates with decreased reliability unless mitigated by proportional investment in controls and expertise3.


Earned Complexity Law

Complexity must be earned by measurable pain, and paid for with controls.

This law formalizes two necessary conditions for introducing new complexity:

  1. Justification Condition – A demonstrable, current problem exists that cannot be addressed through simpler means.
  2. Governance Condition – The organization is willing and able to fund the mechanisms required to safely operate the added complexity.

If either condition is unmet, complexity should not be introduced.

Teams must articulate these conditions explicitly before proceeding with any architectural expansion.


References


Earned Complexity Framework

Proposal Statement (single‑sentence rule)

“We propose adding X to address Y, measured by Z, with rollback R.”

  • This constraint enforces clarity and prevents ambiguity‑driven scope creep.

Acceptable Evidence

  • Recurrent production incidents
  • SLO or error‑budget violations
  • Quantified performance ceilings
  • Measured delivery bottlenecks
  • Documented compliance requirements

Speculative future needs are explicitly excluded.

Required Demonstrations

  1. Procedural remedies were attempted
  2. Localized technical optimizations were evaluated
  3. Architectural escalation is unavoidable

This step enforces a graduated response.

Scoring Model

DimensionScore (0‑5)
Cognitive Load
Operational Load
Failure Modes
Dependency Risk

Total Cost Score: 0 – 20

BenefitScore (0‑5)
Reliability Improvement
Performance / Cost Efficiency
Delivery Velocity
Security / Compliance Risk Reduction

Total Benefit Score: 0 – 20

Mandatory Complexity Deliverables

  • Observability (metrics, logs, traces)
  • Alerting aligned to user impact
  • Rollback and kill‑switch mechanisms
  • Named ownership and runbooks
  • Failure‑mode testing
  • A stated complexity budget

Approval Conditions

Complexity may be approved only if:

  1. Evidence and Alternatives gates pass, and
  2. Benefit − Cost ≥ +4, or
  3. Compliance mandates the change and controls are funded

Otherwise, the proposal is rejected or deferred.

Replace subjective debates with structured scoring and evidence review.
Use the framework to challenge unnecessary abstractions early.
Tie complexity reduction directly to incident prevention.

Example: Microservices Migration Decision

  • Context: Mid‑sized team experiencing deployment conflicts considered migrating to microservices.
  • Evidence: No scaling constraints, no incident correlation.
  • Alternatives: Modular monolith not attempted.
  • Cost: High operational and cognitive load.

Decision: Rejected

Outcome: Delivery velocity improved after refactoring boundaries without architectural escalation.

Guiding Philosophy

Peak engineering performance is not achieved through maximal output or technical bravado.
It emerges from predictable systems, calm operations, and disciplined decision‑making.

Earned Complexity provides teams with a repeatable mechanism to protect these outcomes.

  • Complexity is neither inherently good nor bad; it is expensive.
  • Like any scarce organizational resource, it must be justified, governed, and revisited.

By adopting Earned Complexity as a formal discipline, software teams can align technical ambition with operational reality—achieving sustainable excellence without unnecessary risk.


Additional References

  1. Brooks, F. P. (1987). No Silver Bullet—Essence and Accidents of Software Engineering. IEEE Computer.
  2. Lehman, M. M. (1980). Programs, Life Cycles, and Laws of Software Evolution. Proceedings of the IEEE.
  3. Perrow, C. (1984). Normal Accidents: Living with High‑Risk Technologies. Basic Books.
  4. IEEE Xplore: https://ieeexplore.ieee.org/document/1663532

End of Earned Complexity framework documentation.

Footnotes

  1. Brooks, F. P. (1987). No Silver Bullet – Essence and Accidents of Software Engineering. IEEE Computer.

  2. Mockus, A., Fielding, R. T., & Herbsleb, J. D. (2000). A Case Study of Open Source Software Development: The Apache Server. Proceedings of the 22nd International Conference on Software Engineering.

  3. Leveson, N. (2011). Engineering a Safer World: Systems Thinking Applied to Safety. MIT Press.

Back to Blog

Related posts

Read more »

Production-Grade Marketplace Backend

Why marketplace backends fail after launch and how to design for correctness Most marketplace backends don’t fail because of missing features. They fail becaus...