The Growing Divide in the Patterns World: A Response

The article[1] was published in the July/August 2007 issue of IEEE Software. It discusses implications of a public survey conducted by Microsoft’s Patterns & Practices group in 2006, and pertains to the use of software patterns by software developers/architects outside the community of pattern experts.

At the core of the article is a perceived widening gap between the general and expert patterns communities – the perception stems from the results of the survey. They were surprised by this, and worry that it may become unbridgeable.

But is the gap really widening, and if so, is this really so surprising?

The authors argue that in recent years, software patterns have increasingly been found for, and applied to, diverse domains (examples are telecommunications systems, and agile management), but that general practitioners equate patterns with a particular type: design patterns.

My first issue with the article is that the results they publish do not really seem to me to indicate a WIDENING gap. By their own statistics, pattern use has INCREASED in the ‘casual user’ community in the five years previous to the survey. Even if they restrict themselves to design patterns, this appears to still indicate a narrowing rather than a widening of the gap.

Arguing that a critical mass must be reached before the communication benefit of patterns is really seen within an organization, they point out that 68% of respondents believed no more than half of their colleagues used software patterns. The figure they use to illustrate this, however, suggests that around 20% of them thought that ‘about half’ used them. So you could equally make the point that around 55% of respondents estimated that around half OR MORE used them. Furthermore, they don’t say what the critical mass is, and so it is not clear that it has not, in fact, already been reached.

Screen Shot 2014-02-14 at 14.36.07

 

They find that – typically – a pattern user (not a patterns expert) onlyuses a tiny fragment of the patterns that are available, and assert that patterns that were not contained in the seminal ‘Gang of Four’ Design Patterns book are not well known, nor in widespread use. Again, this is precisely what I would expect. The book covered many Object Orientated Design (OOD) patterns, and with the high prevalence, if not dominance, of OOD since its publication, it seems reasonable that these are precisely the patterns that are in frequent use. There is a reason the book is considered seminal, after all, as well as a reason for the original choice of these patterns.

The authors list an increase in the number of people writing their own patterns but then emphasize that fewer than half of respondents did so. Yet only five years ago, they say, ‘only a small fragment’ were doing so. Additionally, 70% of them thought that they would be writing their own patterns in future. They go on to argue that there is low adoption, but I don’t think the results that they publish support this stance. They do however make a case for low adoption of patterns that are not contained in Design Patterns.

Screen Shot 2014-02-14 at 14.36.45

 A further argument that the authors make is that their own initial thrill in seeing that people are finding and writing their own patterns was misguided. They state that people who do so get a return from it. But then they state that they believe, as a result of this survey – and the evident confusion of the survey group about patterns – that it is not really patterns, but one-off solutions that they are making, but in a pattern-like manner. Surely, if that were the case though, there would be no benefit and no return on the investment.

One issue that I do find well discussed in the article is that a large percentage of non-expert pattern users see patterns as templates for code generation. 61% of respondents took this view. The view of patterns as a means of communication or for visualization is far less common. Indeed, they find that 58% of this group believe that future growth in the area will be directed towards development tools, and not towards written publication of new patterns.

This is an issue I’ve recently come across when learning iOS programming. Building starter applications from a book in order to learn basic principles, I was repeatedly instructed to build ‘empty’ applications, or remove ‘boiler-plate code’ – iOS makes heavy use of (the modern variant, as discussed in lectures) the Model View Controller pattern. The authors took care to point out that in order to learn the pattern, as well as its applicability, it was important not to just let the development environment do the work. I am surprised by this finding, as I had assumed that people did indeed use patterns as a tool for understanding, rather than merely saving typing.

I understand that the authors are have concerns about the expert community’s capability to disseminate information about available patterns. There clearly are difficulties here: as they point out, there is no authoritative site that can be accessed to learn about the multitude of patterns that exist. That it is not easy to search for a pattern (or pattern sequence) and find something that will be helpful for any particular situation. It’s not that I disagree with what they are saying, but just that I feel they are painting an overly negative picture, giving the statistics they have presented.

I also understand that it is a call to arms, to make it simpler and easier for non-experts to access information that will allow a wider community to use a more diverse range of patterns. I just wish their argument was more convincing!

It is clear from the article that there is a wide gap. They ask what is the reason behind this dichotomy between the patterns expert community, and general patterns user community. This to me seems obvious. It is the simple fact that one is a group of specialists, who would be expected to have knowledge of, and utilize, a wide range of patterns. The other is a group of people who cannot devote the same amount of time to the area, but apparently understand the importance of patterns. The fact that there is ‘significant’ adoption of patterns illustrates this.

References

[1] Manolescu, Dragos, Wojtek Kozaczynski, Ade Miller, and Jason Hogg. “The growing divide in the patterns world.” Software, IEEE 24, no. 4 (2007): 61-67.

[2]Gamma, Erich, Richard Helm, Ralph Johnson, and John Vlissides. Design patterns: elements of reusable object-oriented software. Pearson Education, 1994.