#acl +All:read = The Software Engineering Cultural Patterns = In these volumes, we've made extensive use of the idea of software cultural patterns. For ease of reference, this appendix will summarize various aspects of those cultural patterns. To my knowledge, Crosby was the first to apply the idea of cultural patterns to the study of industrial processes. Crosby discovered that the various processes that make up a technology don't merely occur in random combinations, but in coherent patterns. In their article, "A Programming Process Study," Radice, et al. adapted Crosby's "stratification by quality" scheme to software development. In his book, Managing the Software Process , Watts Humphrey of the Software Engineering Institute (SEI) extended their work and identified five levels of "process maturity" through which a software development organization might grow. Other software engineering observers quickly noted the usefulness of Humphrey's maturity levels. Bill Curtis, then of MCC, and now at SEI, proposed a "software human resource maturity model" with five levels. I believe that each of these models represents points of view of the same phenomenon. Crosby named his five patterns based largely on the management attitudes to be found in each. The names used by SEI are more related to the types of processes found in each pattern, rather than to the attitudes of management, a la Crosby. Curtis made his classification on the basis of the way people were treated within the organization. In my own work with software engineering organizations, I most often use the cultural view combined with Crosby's original focus on management, and on attitudes, but find each view useful at various times. The following summary incorporates material from each point of view. == Pattern 0. Oblivious Process == * Other Names: Doesn't exist in Crosby, Humphrey, or Curtis models. * Metaphor: Walking: When you want to go somewhere, you just go. * View of themselves: "We don't even know that we're performing a process." * Management understanding and attitude: No comprehension that quality is a management issue. * Problem handling: Problems are suffered in silence. * Summation of quality position: "We don't have quality problems." * When this pattern is successful: To succeed, the individuals need three conditions: 1. I'm solving my own problems. 1. Those problems aren't too big for what I know is technically possible. 1. I know what I want better than anyone else. * Process results: Results depend totally on the individual. No records are kept, so we don't have measurements. Because the customer is the developer, delivery is always acceptable. == Pattern 1: Variable Process == * Other Names: * Crosby: Uncertainty Stage * Humphrey: Initial Process * Curtis: Herded * View of themselves: "We do whatever we feel like at the moment." * Metaphor: Riding A Horse: When you want to go somewhere, you saddle up and ride ... if the horse cooperates. * Management understanding and attitude: No comprehension of quality as a management tool. * Problem handling: Problems are fought with inadequate definition and no resolution—plus lots of yelling and accusations. * Summation of quality position: "We don't know why we have quality problems." * When this pattern is successful: To succeed, the individuals (or teams) need three conditions: 1. I have great rapport with my customer. 1. I'm a competent professional individual. 1. Customer's problem isn't too big for me. * Process results: The work is generally one-on-one, customer and developer. Quality is measured internally by "it works," externally by relationship quality. Emotion, personal relations, and mysticism drive everything. There is no consistent design, randomly structured code, errors removed by haphazard testing. Some of the work is excellent, some is bizarre—all depending on the individual. == Pattern 2: Routine Process == * Other Names: * Crosby: Awakening Stage * Humphrey: Repeatable Process * Curtis: Managed * View of themselves: "We follow our routines (except when we lose our nerve)." * Metaphor: A train: Large capacity and very efficient ... if you go where tracks are. Helpless when off the tracks. * Management understanding and attitude: Recognize that quality management may be of value, but unwilling to provide money or time to make it all happen. * Problem handling: Teams are set up to handle major problems. Long range solutions are not solicited. * Summation of quality position: "Is it absolutely necessary to have problems with quality?" * When this pattern is successful: To succeed, these organizations need four conditions: 1. The problem is bigger than one small team can handle. 1. The problem is not too big for our routine process. 1. The developers conform to our routine process. 1. We don't run into anything too exceptional. * Process results: The Routine organization has procedures to coordinate efforts—which it follows, though often in name only. Statistics on past performance are used not change, but to prove that they are doing everything in the only reasonable way. Quality is measured internally by numbers of "bugs." You generally find bottom up design, semi-structured code, with errors removed by testing and fixing. They have many successes, but a few very large failures. == Pattern 3: Steering Process == * Other Names: * Crosby: Enlightenment Stage * Humphrey: Defined Process * Curtis: Tailored * View of themselves: "We choose among our routines based on the results they produce." * Metaphor: A van: A large choice of destinations, but must generally stay on mapped roads, and must be steered to stay on road. * Management understanding and attitude: Through our quality program, we learn more about quality management, and become more supportive and helpful. * Problem handling: Problems are faced openly and resolved in an orderly way. * Summation of quality position: "Through commitment and quality improvement, we are identifying and resolving our problems." * When this pattern is successful: To succeed, these organizations need four conditions: 1. The problem is big enough that a simple routine won't work. 1. Our managers can negotiate with the external environment. 1. We don't accept arbitrary schedules and constraints. 1. We are challenged, but not excessively. * Process results: They have procedures, always well understood, but not always well-defined in writing, and which are followed even in crisis. Quality is measured by user response, but not systematically. Some measuring is done, but everybody debates which measurements are meaningful. You typically find top down design, structured code, design and code inspections, and incremental releases. The organization has consistent success, when it commits to undertake something. == Pattern 4: Anticipating Process == * Other Names: * Crosby: Wisdom Stage * Humphrey: Managed Process * Curtis: Institutionalized * View of themselves: "We establish routines based on our past experience with them." * Metaphor: An airplane: Fast, reliable, and can go anywhere there's a field,... but requires large initial investment * Management understanding and attitude: Understand absolutes of quality management. Recognize their personal role in continuing emphasis. * Problem handling: Problems are identified early in their development. All functions are open to suggestion and improvement. * Summation of quality position: "Defect prevention is a routine part of our operation." * When this pattern is successful: To succeed, these organizations meet three conditions: 1. They have procedures, which they follow, and improve. 1. Quality and cost are measured (internally) by meaningful statistics. 1. An explicit process group aids the process. * Process results: We may find function-theoretic design, mathematical verification, and reliability measurement. They have consistent success on ambitious projects. == Pattern 5: Congruent Process == * Other Names: * Crosby: Certainty Stage * Humphrey: Optimizing Process * Curtis: Optimized * View of themselves: "Everyone is involved in improving everything all the time." * Metaphor: The Starship Enterprise: Can go where no one has gone before, can carry anything, and beam it anywhere, ... but is science fiction. * Management understanding and attitude: Consider quality management an essential part of the company system. * Problem handling: Except in the most unusual cases, problems are prevented. * Summation of quality position: "We know why we do not have quality problems." * When this pattern is successful: To succeed, these organizations meet three conditions: 1. They have procedures which it improves, continuously. 1. All key process variables are identified and measured automatically. 1. Customer satisfaction drives everything. * Process results: All of the good things achievable by the other patterns, plus willingness to spend to reach next level of quality. Quality is measured by customer satisfaction and mean time to customer failure (10-100 years). Customers love the quality, and may bet their life on it. In some sense, Pattern 5 is like Pattern 0, totally responsive to the customer ... but is much better at what it does.