Responses

Systems respond by taking action. Sometimes, the response is incredibly simple, such as collecting the input into some reservoir. The system monitors changes in this quantity, and once it exhibits the phenomenon of reaching a threshold, triggers further action.

In a deer scarer, the water fills the bamboo, which acts as a reservoir. The system monitors the balancing point for the weight of the water against that of the closed end by the pivot mechanism acting as a scale. The overbalance triggers an action of tipping, which pours the water out and then swings the balance back the other way. All the steps are simple, but it is a system that responds to input and produces phenomena, triggering action.

DeerScarer

It’s always true that reactions happen because something was sensed. Without the initiating sensory stimulation, there cannot be a reaction. Perhaps you think that’s false because you’re wondering about when we detect nothing happening. Well, consider this: When do we notice a lack of activity? Is it arbitrary, or do we have an expectation of when something should have happened? We have a tolerance threshold, and we’re triggered to react when we reach it. A mechanical or biological timer ran its course and became a phenomenon of its own, like a screensaver.

In systems theory, we often talk about stocks and flows. These are the analogue equivalent of the phenomena we mentioned in senses. They aren’t always acted upon directly, but sometimes they are. For example, let’s consider a mundane system. A cistern allows the flow of liquid until it is at capacity. It has a water level, which is a stock, and a soft trigger to allow fluid to gush from the inlet, which is the flow.

A cistern maintains a stock of fluid by reacting to the current level. It’s an elementary feedback loop. The phenomena are analogue, not digital like those we considered before. The reaction is also analogue in many cisterns. The response does not need to be linear, but must be a function of an input. Reactions can be measured and proportional, like how many months you get for embezzling company funds.

Cistern

Another analogue stock we encounter in software development is deployment pipeline times. As they grow, we reflect an analogue level of annoyance at them. At some point, they trigger a flow of cash to buy new hardware or developer time to fix the build process to make it less intrusive. In some systems, the level at which the cost is acceptable is set low. These are better environments for developers to work, as build times never get out of hand. In organisations where fixing the build time is never addressed, there is an effect on a different analogue flow—one measured on the scale of employee retention rate.

BuildTimes

The stocks of any system are wide and varied. In a development organisation, you have staff with varying skill levels, varying productivity, and varying levels of awareness of the organisation’s culture. You have capital in the software and hardware you buy and use. You have a back catalogue of products you can continue to sell without incurring further costs. You have goodwill with other companies, academia, the public, developers outside, and developers inside. You also have money.

The flows of any system are just as varied. You train a certain number of people for a given number of hours per month or year. You hire at a rate and fire or lose employees at a rate. You even promote at a rate. You ship a certain number of features or products per cycle and are sued a number of times a year. You rent, pay wages, bribe officials, and pay the electricity bill. All these flows affect multiple stocks at once. Some are important, others less so.

Reactions will affect stocks, and stocks will affect or trigger reactions. This is the core of what systems are and do. The stocks and flows wrap around and stimulate themselves to act again and again in a loop. What’s unexpected is the types of behaviour they exhibit when chained together in complex ways.