In my experience you have two ends of a spectrum; the “build everything yourself and design everything exactly as you need it”, versus hooking various third party SaaS, PaaS, IaaS and/or FaaS together like Lego.<p>Both have advantages and disadvantages, but in the case you’re talking about the compromise is that you end up being constrained by someone else’s design goals, concepts and principles.<p>When you use multiple SaaS systems together the constraints are cumulative.<p>Hence, you are forced to constrain the constraints and the analogy “jack of all trades, master of none”, springs to mind.<p>One of the many SaaS offerings I regularly have to work with is for customers leveraging Microsoft D365 CRM. It classically demonstrates this point. There are two types of people who “develop” using it. The first are integrators that have a more technical background writing code, and locoders who sit in enterprises as a quasi business analyst / click-and-drag developer. The solutions they develop work, but often badly through horrific spaghetti designs, because they are forced to workaround the constraints of the locode system.<p>As long as those trade-offs are understood by CTO’s making these decisions then it’s fine, however many don’t grok it at all.<p>One thing many of these systems fail at is observability. Connecting your own code up to DataDog or Prometheus is easy, not often the case for a SaaS or third party system. Although in the case of Temporal, that is somewhat available in your own activities and workflows.