There must be many books on this subject, I’m pretty sure I learned that in one of my intro level college Economics classes (Econ minor)
I would pull out a macroeconomics and and microeconomics book from the library and study up. Maybe grab a Udemy course on Econ as well.
Regardless, GDP is always useful so def one of the right metrics for economic performance in general.
Def I need more studying on the subject my self.
Here’s how I used Bazel (and how I now use Nix).
I am provided a configuration file that specifies what a given instance of my program must do. I use language A that can natively understand this configuration to code-generate a file in language B (which is significantly more suited to the performance requirements of the program)
This file is then built along with generic program code. It is used to process a lot of data.
As an interface to this program, I have a HTTP interface that can communicate with it. It needs to understand the kinds of outputs the program will produce, so some of this HTTP interface is also code generated in language A. The interface is interactive so typescript is generated and then compiled too.
In order to process the output from the program, I need to produce extensions for languages that users of the output use: Python and R. These need to understand the kinds of data being used, so are also code generated - then built. They’re then tested against requirements defined by the config (so the tests are also code generated).
Each of these stages have dependencies required when building and dependencies required when running, and there are several languages involved.
I also need to be able to express the entire process as a function, because it’s something that needs to be run very frequently on different configs - sometimes in collections of configs that need everything built at once. It needs to be build on several different machines, sometimes desktops and sometimes remote servers, sometimes on clients’ hardware (depending on the needs). I need confidence that something that works on my development machine will work, in entirety, on a completely different machine with minimal prior setup. And I need it to be easy to do, easy to maintain, and I don’t want to mess around with many different build systems that have entirely different use cases, entirely different ideas of how build/runtime environments should be handled, entirely different languages to configure them - and many of them are rigid and don’t have a concept of functions, they’re just “state your dependencies, kthxbye”.
All of the above is absolutely trivial with bazel if you know where to tread lightly (e.g. surrounding Python environments). It’s also very easy with Nix once you get used to it, and you don’t need to tread lightly there - it has stronger guarantees.
I’m only trying to make sure I understand the problem otherwise I cannot evaluate the solution. Plus it would have make it very hard to sell it to me, if I was to take the decision.
Data are everywhere these days and you should be gathering as much as you can(emphasis in can, it can be expensive). Take Google Analytics for example added to a blog, you can see your most read articles and write more of those, see where people exit and take action, setup interaction tracking and see what buttons are working best. You can do AB tests and compare results between two comment forms.
Same logic applies to a product as well.
But then it’s not just analytics and valuable information can be extracted from everywhere. Look at your DB and see what people have been storin (being cautious on prívacy laws). Gather NPS and see what feedback you’re getting from there.
Big companies usually have departments focused on data gathering and analysis, but even for smaller products, I would say that the best thing you can do is being data driven. Try to base your decisions with data that make sense.
All the best