So you want to develop a social media product
Back in the forties, or whenever it was, what were called automatic computers were being installed in various places and at, it sounds like, a pretty good pace. Really, I feel like I’m reading about the 60s. I have to get this sorted out. At any rate, programmers, computer makers, and their customers seem to have had one overriding concern, which was getting programs to run fast on rather limited hardware. And the prevailing approach was to use, as it was described, tricks that originated in the hardware. But some people in the field, some programmers, began to question the approach, and to analyze computer programming as a branch of mathematics, in other words, in theoretical terms, and they argued in part, if I understand all of this correctly, that programs built around rigorous logical constructs would in fact not be as inefficient as it was thought, and beyond that the practice would make it possible to ensure correct results, and to easily ascertain the reasons for incorrect result. In a word, it would make programs reliable. This would greatly outweigh any cost in raw efficiency, or speed (“costs too much” was the prevailing concern).
How does the logic of programming work? I’m going to work on documenting my sources, but it’s something like this: <create a social media product> is a semantic category — the <> brackets mean that — , what I’ll call an instruction, and, having established that we would define it by describing its parts. I feel like I’m not following the instructions properly, but I hypothesize as follows: <create a social media product> := <software> and <hosting> and <monetization>. The symbol := means “is replaced by” but I don’t see why it couldn’t just mean “is”.
We could be slightly more specific and write <create as social media product> := <network protocols> and <software> and <hosting> and <monetization>.
Each of these four semantic categories that together define <create a social media product> in turn must be defined, so the complexity of our definition rapidly increases. Something must be done, and one alternative is to choose among the categories at hand, one. In fact, let’s reformulate our definition of <create a social media product>, trying this: <a social media product> is <services provided to content providers> and <monetization>.
We now have two different definitions that happen to share one component, and that might tell us something. But let us peek into this question of <services provided to content providers>. We might want to first rename it. A more complete definition of the <> symbol is that <name> means “an instance of the semantic category called ‘name’”. Let us call it <the service>, and, having done that, how about <the service> is <users> and <interface behaviors>. This construct presents a problem, and we may rename it again, but let’s explore <users> a little. No, actually, let’s analyze the last construct more precisely. We could reformulate slightly: <the service> is <uses> and <interface behaviours>. We could then posit a relationship between the two components: <use, use , …, use[n]>;<behaviour, behaviour, …, behavior[n]>. There is now a behavior for each of n uses.
In closing, then: <use, use, …, advertising, …, use[n]>;<behaviour, behavior, …, monetization, …, behavior[n]> should be our general description of any instance of, renaming one more time, <a service>.