Products should be made of programs. Programs should be able to be simple enough to be &quot;complete&quot; while how they get built, replaced, planned, and orchestrated however, is free to be as fluid as the problem to be solved.<p>Many systems tried to be this, but people too frequently side-step these solutions for decomposition because they aren&#x27;t complete enough. Unix wasn&#x27;t enough, now we have Docker, etc.<p>OOP tries to achieve this from a different level on the inside of complex systems, but still falls short. (e.g. you have to do IPC or have a message-passing VM where objects~=processes to be able to do live code replacement and allow multiple independently-developed implementations of the same concept to run simultaneously and collect behavior on which does a better job, so this type of thing is not common.)<p>It&#x27;d be nice if the progress towards building smaller systems that avoid complexity begins to outpace the progress toward building larger systems which defend against complexity within my lifetime, but I can&#x27;t say I&#x27;m hopeful.