skip to content

The Lines: Significant Distinctions when Analyzing People, Software, and Problems

By Vlad Zams.   


Here we’ll jump straight in. Here are the categories along with some elaboration.

a. Actual vs. hypothetical (in thinking and in the physical world)

This is something which is highly correlated with making a distinction between past, present and future. In most of the cases “actual” can be either a thing in the past or in the present. “Actual” can be in the future only if it exclusively depends on nothing more than laws of physics: that apple will actually fall. Practically it means that when something particular about the future, let’s say a future of a complex computer system or a human organization, seems to be the actual future, there is always a judgment call or presupposition hiding somewhere around.

Although, when thinking something high-level and abstract such as “there will be more news tomorrow”, then it most likely be the case. But as soon as we think about any particular news (or particular topic of the news), then we immediately shift into that hypothetical domain. And I’m arguing that it is a significant shift because in that domain some of the categories and approaches that would be useful in the domain of actuality – present and past – may not work at all. In the hypothetical domain “counting” is “estimating”, “a problem” is “a risk”, and “an outcome” is “an option”.

That also correlates with the distinction between abstract (high-level) and particular.

Btw, a long gone past may inhabit some of the properties of the future in that regard depending on the quality of logging, but I’m not going to explore this for now.

b. Process vs. event/condition (in physical world as well as in computing)

c. Producers vs. consumers (in humans)

That’s especially relevant if you hope that a human can do both things just like if the 2nd of those things were performed by other humans. I’m referring to pairs of things like

  • building and testing,
  • designing and evaluating,
  • writing and understanding

d. Immediate vs. delayed (in time)

“Immediate” can also mean “unconditional”.
“Delayed” can also mean “conditional” or “depending on some future event”.

e. Shared vs. private (in time or in access to data or material)

This includes a distinction between set of things that are open, accessible, available, etc., and set of things that are isolated, encapsulated, restricted, etc.
With regards to time, “shared” maps to “synced”, and private maps to “async”.

f. Endpoint vs. anything in between (in transfers/exchange processes)

That’s especially relevant in context of data-security measures

g. Compile time vs. run time (in software applications or other devices)

Similarly, it’s

  • Design time vs. evaluation time
  • Construction time vs. exploitation time

h. Local vs. Remote (in computing and humans)

Here I’ll simply tell that in case of remote, network partitioning matters as it always used to. And when working in teams, network partitioning maps to certain members being out of reach. This is something to keep in mind when planning releases, vacation, and public events.