System Design Principles : An Overview

Tanmay Dureja
3 min readApr 18, 2019


(Keeping it Simple)

How to build a near perfect system

The first question to spring up after looking at the picture above could be,

Is there ever a perfect system?

No, not really, perfection is a figment of human imagination, it’s more like a goal that is achieved by someone. So, keeping goals in mind, a perfect system in a computer-development environment could be achieved. The goals of a system should match the requirements of the user, one cannot expect the performance of a Ferrari from a Ford Fiesta.

Does a perfect system exist?

A system is designed considering all the consumer requirements, people play an important role in the development cycle.

Computer System Design Principles

  • Use the KISS rule and adopt sweeping simplifications to see what is being done on your system, moreover to see what you’re doing. A design should be scalable but changing a parameter by a factor of ten requires a new design. Change a module, not the modularity. The less there is, the more likely you will get it right.
  • Escalating complexity principle : Complex systems fail for complex reasons. Adding a feature increases complexity out of proportion.
  • Safety margin principle : Keep track of the distance to the edge of the cliff or you may fall over the edge.
Know your system
  • Avoid excessive generality, be explicit : A system should be designed keeping in mind all assumptions are on the table.
  • Open design principle : Let anyone comment on the design; you need all the help you can get, as long as it does not interfere with your system anonymity (if any).
  • Design for iteration : because you won’t get it right the first time, so make it easy to change. Avoid rarely used components
  • Principle of least astonishment : Choose interfaces that match the user’s experience, expectations, and mental models. People are part of the system.
Image result for system design meme
The user should understand what the system does
  • Atomicity : Golden rule of atomicity, Never modify the only copy!
  • Coordination : One-writer principle, if each variable has only one writer, coordination is simpler.
  • Durability : The durability mantra, Multiple copies, widely separated and independently administered.
  • Security : Minimize secrets, because they probably won’t remain secret for long. Also, Check every operation for authenticity, integrity, and authorization
  • Fail-safe defaults : Most users won’t change them, so set defaults to do something safe.