I was working in tourism/hospitality, and we were building a B2B product targeted at hotel owners and travel agencies. The product was big and had vast feature set. But in addition to the main functionality of the product, we were also building an accounting and BI (business intelligence, a fancy word for analytics), submodules. We were also building tools that would export our accounting data to standardized industry tools like SAP, but nevertheless this practice of building in-house accounting or analytics is practically non-existent in modern software development.
If you Google for “how to code an accounting system”, you will land on a bunch of Reddit or HackerNews posts telling you “Don’t”. I’m not sure whether this advice stems from the incompetence of the current generation of developers, who are afraid to build anything more complex than saving a few JSONs in a database; or it’s a genuine concern to avoid wasting time on trivial tasks that can be outsourced to a third party SaaS. Sure, accounting systems are complex, and there are best practices to follow like “don’t use floats for money” and “please don’t use floats for money”, but nevertheless they are not impossible to build.
Despite this fact, today, the consensus seems to be to outsource any mundane task like accounting or analytics to a third party service that is designed for these particular tasks. Hence, such approach creates a fragmentation in software. Your product is no longer standalone, and in order to be used properly it needs to be tied to these third party SaaS products. This, often, leads to absurd scenarios where you collect analytics in tool A, but this tool is so general—in order to appeal to the masses it has to be—that you end up building complex data pipelines to move data from said tool, to yet another tool designed for visualization. In reality, you have all the data you need, you just need to augment it with some additional analytics collection and build a proper visualization that makes sense for you.