A feedback loop is a closed chain of cause and effect: a stock changes a flow that changes the stock. Every dynamic that lasts longer than a moment — every oscillation, every runaway, every stubborn equilibrium — is the work of one or more loops.
There are exactly two kinds.
Balancing loops
Also called negative, goal-seeking, or self-correcting loops. They pull a stock toward a target value. Examples:
- A thermostat sensing room temperature, switching the furnace on when too cold and off when too warm
- A predator population that grows when prey is abundant and shrinks when prey is scarce
- An autoscaler adding instances when latency rises and removing them when it falls
- A market price that drops when supply exceeds demand
Balancing loops produce stability — but only if they’re faster and stronger than the disturbances they oppose. A thermostat with a sluggish sensor or an underpowered furnace cannot hold a target; it overshoots, undershoots, or simply fails.
Reinforcing loops
Also called positive or amplifying loops. They take a perturbation and grow it. Examples:
- Bank interest: more money earns more interest, which earns more interest
- Viral spread: each infected person infects more, who infect more
- Network effects: more users make a platform more valuable, attracting more users
- Death spirals: an outage degrades performance, which causes retries, which worsen the outage
Reinforcing loops are responsible for every exponential curve, growth or collapse. Counterintuitively, the same loop produces both — direction depends only on the sign of the initial perturbation.
Loop dominance
Most real systems contain many loops at once, and the behavior over time is the loop that currently dominates — the one whose effect is largest given the present state of the system.
A startup’s growth curve is a reinforcing loop (more customers → more revenue → more product → more customers) running into a balancing loop (market saturation → diminishing returns). The S-curve everyone recognizes is precisely the moment the second loop overtakes the first.
The skill is identifying which loop dominates now and which one will dominate next. Most strategic mistakes come from extrapolating the current loop forever.
Delays
A loop with no delay is a system in equilibrium. Real loops always have delays — between cause and measurement, between measurement and decision, between decision and effect. Delays reshape behavior:
- A balancing loop with a small delay produces a smooth approach to target
- The same loop with a longer delay produces oscillation around the target
- A long enough delay can flip a balancing loop into chaos
The classic example is shower temperature: turn the hot tap, wait, water is still cold, turn it more, water suddenly scalds. The system is balancing — the goal is “right temperature” — but the delay between adjustment and feedback creates overshoot.
In software systems, delays hide everywhere: metrics aggregated over five minutes, deploys that take an hour to propagate, autoscalers that observe stale load. Every reduction in delay tightens a loop and changes the system’s character. This is much more powerful than tuning the loop’s gain.
What this means in practice
When you’re trying to understand why a system behaves as it does, first identify the loops. Don’t list events; map the loops that produce events. Almost every “weird” behavior turns out to be a delay, a hidden reinforcing loop, or a balancing loop that switched dominance.
When you’re trying to change system behavior, leverage-points gives the hierarchy: weakening a reinforcing loop, shortening a delay, or strengthening a balancing loop are all higher leverage than changing parameters within an existing loop.
Sources
- Meadows, Donella. Thinking in Systems: A Primer. Chelsea Green, 2008. https://donellameadows.org/wp-content/userfiles/Thinking-in-Systems.pdf
- What is System Dynamics?. System Dynamics Society. https://www.systemdynamics.org/what-is-system-dynamics