Many software managers, harried by budgets and delays, envy hardware designers. To
design a steam engine, the engineers did not start by designing screws from scratch. Electronic
systems are built by plugging together chips, boards, or boxes that are widely
interoperable. A well-chosen set of components can have many possible configurations:
many end products that can be made quickly and reliably.