RSS Amplifier

Laws of Software Engineering · Jul 20, 2026

Occam's Razor

0
Sign in to vote or save

Dr. Milan Milanović · Laws of Software Engineering

2 min read

The simplest explanation is often the most accurate one.

Takeaways

  • Simple code is easier to understand, maintain, and debug, whereas complex code has more potential points of failure. Remove or avoid unnecessary moving parts in system architecture.
  • When debugging, start with the simplest explanation before jumping into complex theories.
  • Adding more features to the app can only complicate a product without adding real value. Occam’s Razor reminds us that less is more in many cases.

Overview

Occam’s Razor is a problem-solving principle that reminds us that when we have multiple possible solutions, the simplest one is preferred.

In software, this principle supports the KISS (“Keep It Simple, Stupid”) approach. When we decide to keep our implementations simple, we reduce the risk of further complications.

For example, if a software architecture can achieve its goals with a monolith and one database, there is no need to split it into five microservices and two databases. These extra components would only introduce complexity and potential integration and coordination issues, but no benefits.

This is a reminder to avoid the temptation of over-engineering and keep things simple.

Occam's Razor illustration

Occam’s Razor

Examples

A classic example of applying Occam’s Razor while debugging is that of the broken build. Let’s assume that your build system has failed. A complex thinker might think that there is some subtle regression in the compiler code, or maybe some dependency is damaged. An Occam’s Razor thinker would start with simpler explanations: a typo, a missing semicolon, or a misconfiguration.

A saying often attributed to Einstein goes, “Everything should be made as simple as possible, but not simpler,” which best applies to this law in engineering.

Origins

Occam’s Razor dates back to William of Ockham, a philosopher from 14th-century England. His original version in Latin, “Pluralitas non est ponenda sine necessitate,” can be translated to “plurality should not be posited without necessity,” or “Don’t multiply entities or assumptions beyond what’s required.”

Over time, Occam’s Razor has evolved as a cornerstone of scientific methodology and logical reasoning.

Further Reading

Want to go deeper?

All 63+ laws are covered with more depth, examples, and practical guidance in the Laws of Software Engineering book.

Get the Book

Last updated: July 20, 2026

Read the original on lawsofsoftwareengineering.com

Comments

Nothing yet. Say the first thing.

    Sign in to join the conversation.