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.