Coupling Decreases Latency



Coupling.jpg
Northern Pacific freight train going over Bozeman Pass. Gallitan County, Montana.

...the organization supports a service process or, in some special cases, a small design/implementation process using an iterative or incremental approach. Responsiveness is important, but you note that development intervals are too long and market windows are not met.

✥ ✥ ✥

The structure of an organization can artificially reduce the throughput and increase the latency of business processes. And in some business processes, speed (time-to-market, service responsiveness) are of the essence. An organizational structure that causes information to flow through many roles not only increases latency (delay), but can cause loss of information fidelity. Like light, as information passes through many filters, it loses definition and accuracy.

Process stages should be independent to reduce coupling and thereby promote developer independence; developers can be more effective the less that their work is encumbered by communication. Furthermore, independence improves opportunities for parallelism. But independence hampers information flow.

Therefore:

Open communication paths between roles to increase the overall coupling/role ratio, particularly between central process roles. Communication between roles can be shaped using patterns such as WorkFlowsInward, which helps concentrate more communication on the core of the organization, and ResponsibilitiesEngage, which deals with the issue more broadly. Both of these can be helped more generally with MoveResponsibilities.

This pattern suggests either increasing the density of the communication network, or finding the key communication paths that are important to market success and focusing on making them more effective (e.g., communications between marketing and engineering). This organization, a support organization, has a highly responsive process, which owes in part to its high degree of internal coupling:

external image TEP.gif
The second approach is more difficult because it's difficult in general to know which communication links are more important than others. Organizational introspection can help identify such links, however.

✥ ✥ ✥
Coupling of course increases dependence between roles, which may not always be a good thing.

This pattern is somewhat related to InterruptsUnjamBlocking. Information flow in an organization can be compared to a batch processing system or a time-sharing system. In the batch mode of communication, information comes through certain central roles in the organization (generally manager-type roles), and then is disseminated to the producer roles. In a timesharing mode of communication, interrupts drive the communication, thus decreasing communication latency, as information flows to the producer roles directly and in a timely manner.

Hand offs can increase latency. The number of "hops" between roles should be kept small for any given problem. Eliminating "pipeline" and "deadbeat" roles helps eliminate hops. One way to do so is to use HubSpokeAndRim, where appropriate. In fact, that pattern is a logical step from this one. Occasional close coupling between developers and testers reduces administrative overhead, which reduces latency.

The pattern is based on a basic software engineering principle that reflects itself in the organization.