Laws of Software Engineering · Principle
Principle
Tesler's Law (Conservation of Complexity)
Every system has some complexity that cannot be removed. You can move it around, but it has to live somewhere.
How to use it. When someone proposes "simplifying" something, ask who is going to deal with the complexity afterwards. The user? The person running the system? The next engineer? Be honest about the trade.
How it gets misused. Used to defend systems that are needlessly complicated. The irreducible part cannot be removed. The accidental mess on top of it can be.
Related
-
Principle Law of Leaky Abstractions Anything that hides complexity will eventually let some of that complexity show through.
- Principle No Silver Bullet There is no single technique that will produce a ten-fold improvement in productivity within a decade. The hard part is the essential complexity of the problem itself.
-
Saying KISS (Keep It Simple, Stupid) The simpler version usually wins.
Clusters
- The Code Design cluster - How to write code that survives change.