Throughput Accounting can be generally applied for the management, control, and reporting of any system. Throughput Accounting is appropriate for managing general systems because it focuses on Throughput, which is the desired adaptive behavior of the system.

This chapter is from the book

"Tell me how you will measure me and I will tell you how I will behave."

—Eli Goldratt [1990b]

Suspend for a moment everything you have already learned about software development lifecycles. Ignore concepts of sequential
processes, iterative processes, spiral processes, and their like, and consider the stages of the transformation of an idea
into tangible working code.

A General System

Figure 2-1 shows a generic simple single loop system. The system receives an input. It performs some operation on the input. The result
is compared with some expected result, and an output and feedback are generated. The feedback is reintroduced mixed with the
input to the system, and the operation is performed again.

There are a number of known properties in general systems. All systems are nonlinear. This means that there is no linear relationship
between the effort (or energy) expended in the operation of the system and either the input or the output. The nonlinearity
is introduced by the feedback loop. All complex adaptive (or closed-loop) systems have feedback loops.

However, the input is usually proportional to the output. The output is derived from a combination of input. For example,
four wheels (input) are required for one car (output). Four wheels are always required. It is never five or three or any other
number. Hence, the relationship between input and output is both linear and predictable.

The output is predictable because all systems exhibit adaptive behavior. The adaptive behavior is designed into the system.
The system is intended to produce an output that is predictable. If the output is not as predicted, the adaptive behavior
is described as undesirable behavior. The feedback loop is intended to control the undesirable behavior and correct the system
so that the desired adaptive behavior results.

When a system settles down and produces the desired adaptive behavior, it is said to be "convergent," "stable," and "under
control." When a system does not settle to the desired adaptive behavior, it can be described as "divergent," "unstable,"
"out of control," or "chaotic."

General systems can be described using the language of emergence by saying that a system is designed with a set of governing
rules that determine the desired adaptive behavior.1 These rules are generally simple in nature, but result in complex and occasionally unexpected adaptive behavior. The operation
of the system produces a number of artifacts, by-products, or internally observable behavior. These are known as emergent
properties.

Thinking with Systems Is Hard

The human mind is not naturally programmed to think in systems. It does not naturally think nonlinearly. From an early age,
we learn to think in simple terms of cause and effect and to speak in a language rooted in linear cause-effect concepts. In
addition, we expect the effect to happen immediately after the cause, so that they can be easily associated.

I experience this cause-effect learning first hand with my daughter, who at the time of writing this chapter is a mere seven
months old. She is just learning cause-effect relationships. She has discovered that if she throws a toy from her high chair,
then Dad will pick it up and give it back to her. He will also talk to her and generally entertain her. From her point of
view, she throws the toy (the cause) and Dad shows her immediate attention (the effect). The effect is gratifying to her (feedback),
and she throws the toy again. In Systems Thinking, this is known as a reinforcing loop [O'Connor 1997, p. 40]. She can associate the cause with the effect because the time delay is negligible.

What my 7-month-old daughter is too young to understand is the balancing loop, that is, the hidden effect of her action. The
balancing loop is that Dad gradually becomes bored with this game—with each iteration his desire to continue decreases. Eventually,
he doesn't pick up the toy but passes her another toy. A new game of throw and pick up begins. This time the game lasts for
a shorter number of iterations before Dad refuses to pick up the toy and instead gives her another one. A third game begins,
but it soon ends when Dad no longer wants to play. There are chores to be done or a book to be written.

In Systems Thinking, this effect is known as a balancing loop. At first, Dad has fun playing the game, but gradually his level
of annoyance grows until he doesn't want to play any more. The annoyance is a balancing loop. Due to the obscure nature of
the feedback loop and the time delay between the beginning of the game and the balancing effect kicking in, my daughter has
no concept of why or how the game came to an end.

Systems Thinking is complex! Cause-effect thinking is simple—even a 7-month-old can do it! Systems Thinking must be taught
rather than learned naturally. Humans are not programmed to easily comprehend effects that are delayed from, or several derivates
from, their original cause.