Before proceeding with the Process Patterns discussion (see next chapter), I propose a slight detour in order to consider some interesting asides, and to clarify certain contextual matters. The graphic below depicts an interesting problem that the auto industry is faced with.
Eighty percent of the new car delivery process is spent waiting for information! The implication is that better information is required so that quality decisions can be made faster. In other words, in order to improve this process, the DIP must be reduced dramatically. Information technology has a role to play in this effort, but it would be naïve to treat this as an engineering problem. Why is that? Because the critical part of the
problem is almost certainly related to the number of players involved in the process, and the fact that these players happen to be human beings. Human communication is chaotic and expensive. This was the golden insight that Fred Brooks had in The Mythical Man Month when he discovered that adding additional staff to an already late project would make it later.
Human communication is expensive because human beings are messy; random; complex; unpredictable; non-linear; lazy (at times); and, more often than not, totally irrational. Language, as a communications protocol, is one of the most complex technologies on the planet. It is a beast that refuses to be easily tamed. How we communicate and collaborate with each other will need to improve dramatically if we are going to significantly compress the DIP within any non-trivial process.
Heuristics that improve interpersonal communications, within and across business processes, are as much, if not more, a part of the solution as any enabling information technology. The development of Killer Apps (i.e. systems) will necessarily need to include knowledge from a number of different disciplines, including psychology, anthropology, linguistics and biology, to name a few.
Process Patterns aim to improve our ability to communicate about the software development process by illustrating behaviors that have a significant impact on our ability to execute. They are a set of mental models that attempt to provide a common language related to specific problems and issues. If you buy into the premise that human communication and dialog is an important aspect of the software development process, then purchase (and study) Dynamics of Software Development by Jim McCarthy. This book is filled with wonderful anecdotes and profound insights, told from an industry insider’s perspective.