The other day I was trying to analyze a rather complex system, and realized I don’t have the tools for it. So I came up with this. Posted here for others to use (and improve?), and for me to remember how it worked! Somehow I think I might have read something like this many years ago, but I have no memory of where or what exactly it might have been; if you know, please let me know.
This is about complicated processes that work in a somewhat fuzzy environment, not about simple, clear, “digital”, “ideal” processes as we often assume in the software world. Think of processes such as “how a plant grows”, rather than “the average of the last 5 numbers”.
It’s best shown in a picture:In this model, the Process primarily:
- consumes Inputs,
- processes those Inputs in some fashion, and:
- emits Outputs.
So far so good. But in addition, this Process is performed:
- in an Environment, which needs to exists for the Process to work.
The difference between the Environment and the Inputs and the Outputs is that the Environment only needs to exist: net-net, the Process does not take anything from the Environment (otherwise it would be an Input) and it does not produce anything that ends up in the Environment (otherwise it would be an Output).
And then, there certain things that may happen over time that make the Process’s work easier or harder. They are represented as
- Catalysts, and
Think of them as a “delta” on top of the Environment that, when they occur, makes the Environment more or less suitable for the Process.
The graphics are designed to be easily drawable (white board etc) and requiring no labels: the Catalysts, for example, use an upwards slope which implies “increase something”, and the Inhibitors use the opposite.
So much the theory, let’s apply it. Let’s say I want to grow tomatoes:
My Process is “Tomato growing”.
- My Outputs are:
- (hopefully), tomatoes, but also:
- the oxygen produced by the plant;
- the dead plant(s) at the end that I need to dispose of, and whatever other things are being produced as part of my Process (I’m not a tomato-growing expert).
- My Inputs are:
- tomato seeds (or young tomato plants);
- carbon dioxide.
- My Environment is:
- a suitable atmosphere including temperature, air moisture etc;
- a stick and ties that I can tie the tomato plant to, so it does not break its branches with the heavy tomatoes;
- My Catalysts and Inhibitors would be things such as:
- sunny / warm / shady / cold / … weather.
Now as you read this — and perhaps YOU are a tomato-growing expert — we can easily disagree about how to best grow tomatoes. You might say: “yea, but let’s be specific about what exactly fertilizer means here”, or “if there are such-and-such worms in the soil, the plants grow faster”. Because everything is shown in a simple-to-comprehend diagram, this kind of discussion, and the resulting better understanding of what’s going on, is quite simple to do.
And if you were, for example, to embark on a large-scale tomato-growing operation, it becomes quite clear what you need for it, and what you need to dispose from it: for the inputs, you need to have identified processes that produce them, and for the outputs, processes that consume them. They may be performed by other people, but they must exist. And even the environment may have to be produced by some other process.
You can also break down your core process into smaller ones, such as “soil preparation”, “planting”, “growing phase”, “harvesting”, etc. to understand things in more detail.
Bonus points: apply this to today’s “industrial economy”. The results are not pretty. And that’s actually the background why I wanted to have a model in the first place: if we want to have a chance of making it through environmental collapse, we better start figuring out how to close our loops.