The introduction of catalogs of patterns has been a great advancement to software engineering. These collections of common solutions to common design problems are an excellent way to pass knowledge of the software engineering craft from one practitioner to another. I am happy to have several great texts from this category taking up valuable shelf space. Design Patterns, Patterns of Enterprise Application Architecture, the Pattern-Oriented Software Architecture series, Release It!, and Enterprise Integration Patterns are some of my favorite references that continue to be a source of inspiration whenever I encounter difficult design decisions. However, they are not the last word in software engineering that some engineers present them as. Acting as though pointing out that a pattern exists is a valid appeal to authority for using that pattern is like saying that serving seafood to those that are allergic is acceptable because the seafood was prepared using the recipe of a master chef.
Much has been written about process improvement in the software industry. The SEI has developed the CMM (now known as CMMI) for about twenty years, yet according to a survey of 2000 government and commercial organizations about 50% are still CMM Level 2 or lower . This is not surprising considering estimates of project failures typically run very high (some estimate over half). The higher levels of CMM are designed to insure repeatability of successes as well as identification of and improvement on failures, so we might assume that organizations operating at a higher CMM level have fewer failures. This leads to an interesting question. Why would a company not improve their process by means of application of CMM KPA’s or other forms of process improvement?