DrPat reads a lot, and frequently writes about books on Paper Frigate. One recent blog entry caught my eye, a review of Beyond Engineering by Robert Pool. DrPat briefly covers the major sections of the book, then concludes with the following:
In this increasingly technological age, the complexity of technology has grown to the point where no one person can know everything about even a very restricted discipline, at the same time that more and more of societal attention is focused on how these complex systems interact. Pool's book is a good first step on the road to the re-engineering of engineering itself, and an excellent argument that such a sweeping change is essential.
I haven't read Pool's book yet, although I've now added it to my wish-list. However, I am struck by DrPat's concluding statements, particularly the point about interaction. This is a concept that I think deserves a lot more attention than it gets.
We can design safe, efficient systems. We can interconnect them and operate them safely. However, this requires management of interfaces, which are often controlled inadequately. Quite frequently, interfaces are treated as shared responsibilities between functional units -- units that may have differing needs, priorities, expectations, or goals. This creates mismatches and contradictions that can lead to problems.
How do the contradictions occur? Sometimes, they are designed in from the very beginning based on incomplete specification of interfaces. Other times, they occur because functional units change how they do business internally without completely understanding how these changes will affect vital interfaces. Finally, contradictions could occur if functional units and their interfaces don't change in response to changing external requirements or a changing environment.
Root cause analysis is supposed to find and correct the causes of performance problems. However, don't get tricked into thinking that a "cause" is always a single, self-contained entity or unit. It is probably more likely that the root causes of a problem are contradictions or mismatches, often existing at the interfaces between processes, between departments, or between sub-systems. Find and resolve these contradictions, and your root cause analysis efforts are much more likely to be successful.
by Bill Wilson