A quote from “Hints for Computer System Design” by Butler W. Lampson

by Vladimir Piskarev

Designing a computer system is very different from designing an algorithm:

  • The external interface (that is, the requirement) is less precisely defined, more complex, and more subject to change.
  • The system has much more internal structure, and hence many internal interfaces.
  • The measure of success is much less clear.

The designer usually finds himself floundering in a sea of possibilities, unclear about how one choice will limit his freedom to make other choices, or affect the size and performance of the entire system. There probably isn’t a ‘best’ way to build the system, or even any major part of it; much more important is to avoid choosing a terrible way, and to have clear division of responsibilities among the parts.