Skip to main content

> Term

accidental complexity

Unnecessary difficulty introduced by poor technical choices, convoluted architecture, or confusing tooling.

Detailed Explanation

Accidental complexity is the friction caused by the way a system was built—such as over-engineered frameworks, disjointed microservices, or inconsistent deployment pipelines.

Unlike essential complexity, which is inherent to the problem being solved, accidental complexity is entirely self-inflicted and degrades engineering velocity over time.

Why It Matters

It makes simple changes dangerously hard, driving up the cost of maintenance and increasing the likelihood of human error.

Common Failure Mode

The team adopts a massively complex orchestration framework to solve a simple scaling issue, resulting in outages caused by the framework itself rather than the application.

Practical Example

Using a distributed event-streaming architecture for a simple internal CRUD app that only has ten users.

Production Manifestation

Spending three days modifying seven different repositories and five YAML configurations just to add a single new column to a database table.

Frequently Asked Questions

What is accidental complexity in short?

Unnecessary difficulty introduced by poor technical choices, convoluted architecture, or confusing tooling.

What is the most common failure mode?

The team adopts a massively complex orchestration framework to solve a simple scaling issue, resulting in outages caused by the framework itself rather than the application.

AI Summary

Unnecessary difficulty introduced by poor technical choices, convoluted architecture, or confusing tooling. It makes simple changes dangerously hard, driving up the cost of maintenance and increasing the likelihood of human error.