Editor's note: this brief article explains the basic concepts behind the Diagram of Effects technique. It is intended as a supplement to more detailed articles that show these diagrams in action. "How Did This Happen?" also by Donald E. Gray, is a good example.
Software development managers seldom face linear cause-and-effect problems. Instead the problems have inter-related components with feedback loops between the components and time delays between when actions happen and when the effect is noticed. General systems thinking addresses this type of problem. General systems thinkers have developed the diagram of effects to bring the structure of these problems into view.
The diagram of effects consists of these objects:
- Variables or nodes. For measurable quantities we use clouds. The quantities may not be measured, but could be if it were worth the cost. For actual quantities we use ellipses.
- Arrows between nodes indicate a relationship between the variables. The A node has an effect on the B node.
- The direction of the effect of A on B is indicated by the presence or absence of a gray dot. No dot means as A moves in a direction, B moves in the same direction. A dot on the arrow means that as A moves in one direction, B moves in the opposite direction.
Figure 1: Diagram of a Balancing System
The diagram in Figure 1 describes a system that:
As "A" increases, "B" decreases. As "B" decreases, "A" decreases. This is a balancing system and will stabilize. Consider also Figure 2.
Figure 2: Diagram of a Self-Reinforcing System
The diagram in Figure 2 describes as a system that:
As "A" increases, "B" increases. As "B" increases, "A" increases. This is a self-reinforcing system, and will continue to grow (or decline) until some other system limit comes into play and ends the self-reinforcing action.
There are many books available on systems thinking. The best one for relating software management to systems thinking is Quality Software Management, Vol 1: Systems Thinking by Gerald M. Weinberg. QSM 1 introduces more diagramming options such as delays and how to diagram human intervention points. A good general reference is Systems Thinking Basics: From Concepts to Causal Loops by Virginia Anderson and Lauren Johnson.