This practically means nothing tbh. Social networks when they gain economies of scale due to the network effect will effectively shed all the pretense of open source and open platform etc.
We’ve seen it with Facebook, Google, etc, during the 2010’s with closing of chat standards and destruction of XMPP. Reddit 3rd Party API access is another example of this. We’ll see it again.
Factory factory…n is literally just creating an OOP closure for when your language doesn’t support first class functions, closures and/or currying.
Also metaprogramming and abstraction is literally the only way to actually manage and deal with the capriciousness of your stakeholders.
It’s not simple, because it’s literally not that simple. It’s Conway’s Law. That’s what being a programmer in the industry is. I run a platform team, and I get paid because I can organize and deal with technical risk and contingency better than anyone else at my company. You bet your ass I do metaprogramming.
Also my product itself is a factory factory factory. Users create processes to author content, author content, and that content is delivered to other users. All in the same system. Managing complexity is extremely important if you want to work on interesting things.
I’ve had this exact conversation with a programmer who was retiring. He was complaining that I ask too much because I told him that he needed a more generic way to represent the logic that encodes how our end-users traverse the content that our authoring users create and manage. He literally said something to the effect of the above quote to me, but as complaining contempt.
The business explicitly doesn’t want to spend money crafting individual code bases and products and unique logic. Our system lives and dies by our ability to service our internal clients and meet their needs in a dynamic manner. We need manage each factory layer carefully because very often different clients want two different things at two different times, and so each decision needs to be encoded in a way that allows us to make future platform changes without having to sell the business on refactors.
Sure you’ll run into people who overuse things when it could be simpler from the business perspective. But the reality is that most programmers in the industry have never stepped foot into a well run shop. Most programmers in the industry haven’t actually launched a product tip to tail.
It’s very easy to criticize patterns when you don’t actually have to use them, you’ve never seen them being used properly, and you don’t know how and when to implement them.
You don’t know how many times I’ve had to explain what two phase migration means and how to do them across multiple subscriber-provider links in the chain.