← Back to all heuristics

Use Simple Solutions Until They Hurt

Complexity should be earned.

Architecture

Heuristic

Prefer the simplest workable solution until it causes real pain.

Hook

Complexity has a tax.

Problem

Teams often overengineer early, adding tools and abstraction for future scale that never arrives, which increases operational complexity. The result is slower delivery and higher maintenance costs.

Why it matters

Simple solutions are easier to understand, test, and change. You can always evolve them when real constraints appear.

Signals you are here

  • New projects start with heavy frameworks by default
  • Setup takes days for small services
  • Only a few experts can make changes
  • Systems are optimized for hypothetical scale

Anti-patterns

  • Premature optimization
  • Gold-plating features for hypothetical needs
  • Choosing tools because they are popular, not necessary
  • Building for a scale you do not have

Try this

  • Start with the smallest viable architecture
  • Measure pain points before adding complexity
  • Refactor when clear constraints emerge
  • Prefer boring, well-understood tools
  • Keep operational overhead visible

Example

A team used a simple scheduled job instead of a complex event system. It worked for a year, and when the workload grew, they replaced it with a message queue with minimal disruption.

Reflection prompt

Where have you added complexity without clear pain? What could be simplified?

More like this

Heuristic

The Best Configuration Is No Configuration

Defaults beat decisions.

AutomationArchitectureDelivery

Heuristic

If You Cannot Automate It, You Do Not Understand It

Automate to learn, not just to save time.

AutomationArchitecture

Heuristic

Increase Contrast, Not Volume

Prompt length does not guarantee novelty. Context contrast does.

ArchitectureOperations

Heuristic

State Is Your Enemy, Treat It Carefully

Less state, fewer surprises.

ReliabilityArchitectureInfrastructure