• What we solve ›
  • Focus areas ›
  • Services
  • Work
  • About
  • Contact
‹ Blog
Pay once for simplicity, or forever for complexity
Simplicity requires deliberate upfront effort, but it reduces the compounding maintenance costs and defects that unnecessary complexity creates over a system’s lifetime.

Empirical studies show that higher complexity makes systems harder to maintain and more likely to accumulate defects over time. When complexity is reduced, maintainability improves, and long lived systems tend to have fewer errors.

So why aren't all systems made "simple"?

Simplicity is harder than it sounds

First, not all complexity can be avoided. Some complexity is inherent to the problem or domain itself. Even so, intuition often leads us to believe that simple solutions are easy to create. In reality, the opposite is quite true.

Simplicity is difficult to achieve because it requires very careful design. It forces you to:

  • Understand the problem and the domain deeply.
  • Carefully manage trade-offs and constraints.
  • Resist the temptation to add complexity simply because it can make the solution appear more impressive.
  • Detect and eliminate unnecessary features, abstractions, and edge cases.
  • Iteratively refine and refactor. Taken together, these practices demand an upfront investment of time that is often at odds with today’s emphasis on expedience.

“I have made this [letter] longer than usual because I have not had time to make it shorter.”

  • Blaise Pascal

Complexity is the default state

Unnecessary complexity, on the other hand, is the default state. Systems grow messy if you do nothing to actively prevent it. Features pile up, dependencies spread, shortcuts accumulate, and overall cyclomatic complexity increases.

Chaos does not need much effort. Order does.

Beware of compounding costs

Both simplicity and unnecessary complexity impose a cost. The difference lies in when it is paid and how much it compounds.

Simplicity increases initial effort while minimizing cumulative effort over time. It is about doing the work that prevents future work. In long-lived systems it is often better to pay the price once upfront than to keep paying for unnecessary or unintended complexity every day over the entire lifetime of the project.

Author
Gustaf Sjöberg
Published at
August 24, 2026
Category
Processes and practices
Share
FB , LinkedIn , X
A mountain range
Explore what's possible
Tell us where you want to go, and we'll explore the best ways to get you there.
Get in touch
Simplify complex
energy operations
General
  • Home
  • Services
  • Work
  • About
  • Contact
  • Blog
What we solve
  • Data collection
  • System integration
  • Energy data
  • Control & operations
  • Forecasting & decision support
  • Applications & visualization
Focus areas
  • District heating & cooling
  • Batteries & flexibility
  • Electricity retail & energy services
  • Water utilities
  • Industry & property
  • Electricity grids
Elsewhere
  • Linkedin
  • Instagram
  • Teamtailor
  • GitHub
  • Codeberg
© Helicon Technologies AB
Privacy Terms of use
  • Home
  • What we solve
    • Data collection
    • System integration
    • Energy data
    • Control & operations
    • Forecasting & decision support
    • Applications & visualization
  • Focus areas
    • District heating & cooling
    • Batteries & flexibility
    • Electricity retail & energy services
    • Water utilities
    • Industry & property
    • Electricity grids
  • Services
  • Work
  • About
  • Blog
Simplify complex
energy operations
Contact us
Privacy Terms of use
Data collection
System integration
Energy data
Control & operations
Forecasting & decision support
Applications & visualization
District heating & cooling
Batteries & flexibility
Electricity retail & energy services
Water utilities
Industry & property
Electricity grids